пятница, 29 ноября 2013 г.

Работа с apt-get при подключении к интернету через прокси-сервер

Если выход в интернет осуществляется через прокси-сервер, для доступа к репозиториям необходимо прописать этот доступ в конфиг-файле:
/etc/apt/apt.conf.d/proxy
Если этого файла нет, его надо создать. В этом файле должна быть всего одна строчка:
Acquire::http::Proxy "http://<имя_сервера>:<порт>";
Например:
Acquire::http::Proxy "http://proxy.loc:3128";
Примечание: если при установке системы указать прокси-сервер, он прописывается именно в этот файл.

четверг, 28 ноября 2013 г.

Управление службами (services)

Управление автоматическим запуском служб:
Команда chkconfig.
(sudo apt-get install chkconfig - программа штатно в системе не установлена)
Использование:
chkconfig --list - просмотр списка установленных служб (автозапуск вкл/выкл)
sudo chkconfig <служба> on - включить автозапуск службы
sudo chkconfig <служба> off - отключить автозапуск службы
Ручной запуск и останов служб:
Команда service.
Использование:
service <служба> status - просмотр состояния конкретной службы (работает/остановлена)
sudo service <служба> start - запустить службу
sudo service <служба> stop - остановить службу
service --status-all - просмотр текущего статуса всех установленных служб (работает/остановлена)
Мониторинг сетевых служб:
Команда netstat.
sudo netstat -tulpn - просмотр открытых портов и закрепленных за ними служб

вторник, 29 октября 2013 г.

Управление фоновыми заданиями (background jobs)

Ctrl-Z - приостановить программу и вернуться в командную строку
$ bg - продолжить выполнение приостановленной программы в фоне
$ fg - продолжить выполнение приостановленной программы в интерактивном режиме
$ jobs - список фоновых заданий и приостановленных программ
$ kill %1 - прервать выполнение задания № 1 из списка, показанного командой jobs
$ fg %1 - вернуть задание № 1 в интерактивный режим
$ disown %1 - отвязать фоновое задание № 1 от текущего консольного сеанса
Если добавить значок & в конце консольной команды, она уйдёт на фоновое выполнение сразу после запуска.
Все фоновые задания (кроме отвязанных командой disown) аварийно завершаются при закрытии консольного сеанса из которого их запустили. Передать фоновые процессы от одного консольного сеанса другому нельзя. Можно передать только целиком весь консольный сеанс из одного терминала в другой, если он был создан при помощи команды screen.
Процессы, отвязанные командой disown в интерактивный режим вернуть уже нельзя. (Из списка jobs они пропадают.) Их можно убить только по номеру процесса:
$ pstree -p
$ kill <номер процесса>
Примечание: вместо системы фоновых заданий рекомендуется использовать менеджеры терминалов типа screen и tmux.

понедельник, 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