понедельник, 28 октября 2013 г.

Copy-Paste при работе с mcedit через SSH-клиент putty

При работе с текстовым редактором mcedit через SSH-клиент putty возникает проблема: у программы mcedit свой буфер обмена и она не даёт привычным образом работать с буфером Windows.
Решение проблемы: чтобы что-то скопировать из mcedit в буфер обмена винды или обратно - надо удерживать нажатым shift.

Т.е. shift + выделение мышью при работе с mcedit копирует текст в буфер Windows.
shift + правый клик на окне mcedit вставляет текст из буфера Windows в mcedit.

В остальных программах копирование в буфер Windows работает без шифта, а вот mcedit любые клики мышью "без шифта" монополизирует для своих целей.

суббота, 20 июля 2013 г.

Первичная настройка оболочки Bash после установки системы

Для комфортной работы с историей команд, необходимо после установки системы сделать следующие настройки.

1) Быстрый поиск. В файл .inputrc в домашнем каталоге пользователя (если файла нет - его надо создать) необходимо добавить следующие строки:

"\e[A": history-search-backward
"\e[B": history-search-forward

После этого, набрав в командной строке один или несколько символов, вы сможете пробегать стрелками вверх-вниз не всю историю, а только те команды, которые начинаются с этих символов. Поиск по всей истории тоже останется: по нажатию вверх или вниз в пустой строке.
2) Сохранение лаконичности. В файл .bashrc рекомендуется добавить такую строку:

HISTCONTROL=ignorespace:erasedups

Первый из этих параметров запрещает сохранение в истории строк, начинающихся с пробела: теперь для того, чтобы не засорять историю лишними командами, достаточно ставить перед ними пробел. Второй параметр заставляет в момент добавления новой команды к истории, удалять оттуда все её более ранние вызовы - опять же для лаконичности истории.
(Автор советов - Тихон Тарнавский, учебник "Работа в командной строке", LXF145)

3) Несколько консолей. Чтобы история команд корректно работала при одновременном запуске нескольких консолей, надо добавить в .bashrc следующую строчку:

PROMPT_COMMAND='history -a; history -n'

Первый параметр - чтобы история команд сохранялась сразу после ввода (а не во время закрытия терминала). Второй параметр - "нажатие Enter в консоли обновляет историю".
(Автор совета - fnatoss, в комментариях на Хабре)

Полезные сочетания клавиш при работе с командной строкой Bash

Alt+F - курсор на слово вперёд
Alt-B - курсор на слово назад
Ctrl-W или Alt+Backspace - удалить до границы слова назад
Alt+D - удалить до границы слова вперёд
Ctrl+K - удалить до конца стоки
Ctrl+U - удалить до начала строки
Alt+T - поменять местами два соседних слова (если поставить курсор между словами - именно эти два слова и поменяются)
Alt+точка - поставить на место курсора последний аргумент предыдущей команды; следующие нажатия проматывают последние аргументы назад по истории
Ctrl+R - открыть ПОИСК по истории команд от конца к началу
Примечание:
Вместо комбинаций типа Alt+A возможно последовательное нажатие Esc и A.
(Автор - Тихон Тарнавский, учебник "Работа в командной строке", LXF145)

воскресенье, 14 июля 2013 г.

Управление дополнительными учетными записями для входа в систему

После установки системы надо поменять параметры, с которыми будут создаваться новые пользователи:
$ sudo useradd -D -m -s /bin/bash

Добавление обычного пользователя-человека:
$ sudo useradd USERNAME
(создается каталог /home/USERNAME)
$ sudo passwd USERNAME
(новому пользователю задаётся пароль; без этого пользователи не могут входить в систему)

Удаление пользователя-человека из системы:
$ sudo userdel -r USERNAME
(удаляется каталог /home/USERNAME)

По умолчанию, пользователь добавляется только в одну группу: USERNAME, которая создаётся вместе с ним.

Создание группы:
$ sudo groupadd GROUPNAME

Удаление группы:
$ sudo groupdel GROUPNAME

Переименование группы:
$ sudo groupmod -n NEWGROUPNAME OLDGROUPNAME

Посмотреть, в какие группы входит пользователь:
$ groups USERNAME

Изменить список групп, в которых будет находиться создаваемый пользователь:
$ sudo usermod -G список,групп USERNAME

Группы, в которые по умолчанию включён первый пользователь (админ системы):
adm cdrom sudo dip plugdev lpadmin sambashare

Добавление нового пользователя во все группы, обеспечивающие админский доступ:
$ sudo usermod -G adm,cdrom,sudo,dip,plugdev,lpadmin,sambashare USERNAME

Более подробно:
http://help.ubuntu.ru/wiki/пользователи_и_группы

вторник, 15 января 2013 г.

Настройка TCP-IP через консоль и файлы конфигурации




Пакет ifupdown является комплексным средством настройки параметров сети, в частности используется для инициализации сети при загрузке операционной системы в Debian GNU\Linux (совместно с соответствующими скриптами ifupdown-clean, ifupdown, networking, расположенными в каталоге /etc/init.d)
Начиная с версии 6.0 (squeeze), разработчики Debian в документации классифицируют пакет ifupdown как устаревший и рекомендуют пользоваться такими средствами как NetworkManager или Wicd. Такой подход себя оправдывает для рабочих станций с установленными средствами графического интерфейса пользователя. Для серверов продолжается использование ifupdown - стабильного, многофункционального, хорошо документированного средства управления сетевой подсистемой.
Пакет ifupdown содержит две команды ifup и ifdown для включения и отключения сетевого подключения (в данном случае интерфейса eth1):
# ifdown eth1
# ifup eth1
Эти команды по умолчанию используют настройки, записанные в файле /etc/network/interfaces.
Для запуска, перезапуска и останова сетевой подсистемы следует использовать скрипт /etc/init.d/networking c параметрами start, restart и stop соответственно:
# /etc/init.d/networking restart

Файл настроек сетевых интерфейсов /etc/network/interfaces
Файл /etc/network/interfaces имеет текстовый формат, пригодный для редактирования администратором системы c помощью текстового редактора, в тоже время команды ifup и ifdown также способны его читать и распознавать указанные в нем настройки.
Пример этого файла:
auto lo eth1 eth0
iface lo inet loopback

iface eth1 inet static
      address 192.168.1.100
      netmask 255.255.255.0
      gateway 192.168.1.1
      dns-nameservers 192.168.1.1

iface eth0 inet dhcp

Ключевое слово auto c перечислением через пробел имен интерфейсов указывает включать данные интерфейсы при старте системы. Ключевое слово iface является описанием интерфейса (общий формат: iface <имя_интерфейса> <тип адреса> <метод_настройки>). Так, в примере:
  •  в строке iface lo inet loopback настраивается локальный интерфейс lo для взаимодействия приложений в рамках данного компьютера (loopback)
  •  в строке iface eth1 inet static настраивается интерфейс eth1 на статический метод конфигурации (сетевые параметры указываются вручную, static). Далее параметры статической настройки интерфейса и указаны (формат в общем виде: <опция> <значение>): IP-адрес (address), маска подсети (netmask), шлюз по умолчанию (gateway), адреса DNS-серверов (dns-nameservers) и т.д.
  • в строке iface eth0 dhcp указывается настройка интерфейса eth0 по протоколу динамической конфигурации узла.
Протокол DHCP (Dynamic Host Configuration Protocol) позволяет компьютеру автоматически получать по сети IP-адрес и другие параметры, необходимые для работы сетевого интерфейса. Для использования протокола DHCP необходимо чтобы в данном широковещательном домене был настроен DHCP-сервер. При настройке сетевого устройства компьютер обращается к DHCP-серверу и получает требуемые сетевые параметры.
Кроме статической и динамической настройки интерфейса, существует ручной способ конфигурирования (manual), который предполагает то, что интерфейс будет настроен с помощью средств, сторонних относительно ifupdown.
Рекомендуется отключать сетевой интерфейс (ifdown) перед тем как вносить изменения в его конфигурацию, а затем включать (ifup).
Синтаксис файла interfaces подробно описан на соответствующей странице помощи (man interfaces).

Добавление постоянного статического маршрута
Опции интерфейса в файле interfaces позволяют указать команды, которые необходимо выполнить при включении интерфейса (опция up) и выключении (опция down).
Например, настроим постоянную сетевую конфигурацию со статическим маршрутом через альтернативный шлюз (приведен фрагмент файла /etc/network/interfaces):
iface eth1 inet static
      address 192.168.1.100
      netmask 255.255.255.0
      up ip route add 192.168.24.0/24 via 192.168.1.2
      gateway 192.168.1.1

Применим данную конфигурацию с помощью команд ifdown/ifup и просмотрим таблицу маршрутизации:
# ifdown eth1
# ifup eth1
# ip route show dev eth1
192.168.1.0/24  proto kernel  scope link  src 192.168.1.100
192.168.24.0/24 via 192.168.1.2
default via 192.168.1.1

Несколько IP-адресов на одном сетевом интерфейсе
Задача добавления нескольких IP-адресов на интерфейс с помощью файла /etc/network/interfaces решается следующим образом:

auto eth1 eth1:add
iface eth1 inet static
      address 192.168.11.10
      netmask 255.255.255.0
      gateway 192.168.11.1

iface eth1:add inet static
      address 192.168.11.11
      netmask 255.255.255.0

Псевдоним задается через двоеточие после имени интерфейса. Также необходимо указать автоматический запуск нового интерфейса в параметре auto.
Для применения данной конфигурации необходимо выполнить последовательность команд:
# ifdown eth1; ifup eth1; ifup eth1:add
или же:
# /etc/init.d/networking restart

eth0 вместо eth1

Идентификатор, который будет назначен сетевой карте, определяется в файле /etc/udev/rules.d/70-persistent-net.rules

Этот файл содержит перечисление доступных сетевых карт в виде примерно следующего списка:

....
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:15:f2:6a:77:04", NAME="eth0"
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:17:9a:74:93:82", NAME="eth1"
...
где ATTRS{address} - MAC сетевухи.

Если на компьютере обнаруживается сетевая карта с MAC-адресом, которого нет в этом списке, в хвост файла дописывается еще одна строчка, назначая новой сетевой карте наименьшее свободное имя вида eth(n+1). Если при загрузке системы одна из указанных в файле сетевых карт в компьютере не обнаруживается, соответствующее устройство eth0 не будет показываться в списке доступных сетевых карт. Однако идентификатор за сетевой картой закрепится и если её вставить обратно, она снова появится под тем же названием.

Файл /etc/udev/rules.d/70-persistent-net.rules можно редактировать, в частности - комментировать в нём строки символом #.


P.S. Список потенциально доступных сетевых карт, установленных на компьютере, можно получить при помощи команды:

# lshw -C network

суббота, 12 мая 2012 г.

Памятка по ключам программы screen


Открыл для себя линуксовый screen.

Это настолько фантастическая штука, что странно, как я жил без неё. Немного усилий, и получаем "вечные" консольные сеансы, не зависящие от того, откуда мы с ними работаем - через SSH или локально, через Gnome Terminal. И программы не завершаются после отключения от SSH. Всего-то надо запомнить девять строчек, практически полностью покрывающих все варианты использования:

screen -S имя_сеанса [команда] - запуск команды/оболочки в отдельном не-фоновом сеансе (S - session name)
кнопки Ctrl-A, D - свернуть текущий активный сеанс в фоновый режим (D - detach)
screen -r имя_сеанса - вытащить сеанс "имя_сеанса" из фонового режима (r - restore)
screen -r - восстанавливает фоновый сеанс, либо показывает их список если фоновых сеансов несколько
screen -ls - показать список запущенных сеансов, и фоновых и активных (функционал покрывается предыдущей командой)
screen -d имя_сеанса - свернуть сеанс "имя_сеанса", открытый в другой консоли (d - detach)
screen -dr имя_сеанса - утащить сеанс из другого терминала и открыть его в этом (detach, restore)
screen -mdS имя_сеанса [команда] - создать сеанс, запустить в нём команду и свернуть в фон (m - make)
кнопки Ctrl-A, ? - показать хелп по доступным комбинациям клавиш

При управлении сервером только через SSH, вполне достаточно запомнить первые четыре строчки (выделены синим).