более 'мягко'.

Естественно, что наиболее часто команду kill вынужден применять суперпользователь. Он должен использовать ее для уничтожения процессов-зомби, зависших процессов (они показываются в листинге команды ps как ‹exiting›), процессов, которые занимают слишком много процессорного времени или слишком большой объем памяти и т. д. Особый случай - процессы, запущенные злоумышленником. Но обсуждение этого особого случая выходит за рамки данной книги.

8.4.5. Перевод процесса в фоновый режим

Если вы запускаете какой-то процесс путем запуска программы из командной строки, то обычно процесс запускается, как говорят, 'на переднем плане'. Это значит, что процесс 'привязывается' к терминалу, с которого он запущен, воспринимая ввод с этого терминала и осуществляя на него вывод. Но можно запустить процесс в фоновом режиме, когда он не связан с терминалом. Для запуска процесса в фоновом режиме в конце командной строки запуска программы добавляют символ.

В оболочке bash имеются две встроенные команды, которые служат для перевода процессов на передний план или возврата их в фоновый режим. Но прежде, чем рассказывать об этих командах, надо рассказать о команде jobs. Она всегда вызывается без аргументов и показывает задания, запущенные из текущего экземпляра shell. В начале каждой строки вывода этой команды указывается порядковый номер задания в виде числа в квадратных скобках. После номера указывается состояние процесса: stopped (остановлен), running (выполняется) или suspended (приостановлен). В конце строки указывается команда, которая исполняется данным процессом. Один из номеров выполняющихся заданий помечен знаком +, а еще один - знаком -. Процесс, помеченный знаком +, будет по умолчанию считаться аргументом команд fg или bg, если они вызываются без параметров. Процесс, помеченный знаком -, получит знак +, если только завершится по какой-либо причине процесс, который был помечен знаком +.

А теперь можно рассказать и о командах fg и bg, которые служат для перевода процессов на передний план или возврата их в фоновый режим. В качестве аргумента обеим этим командам передаются номера тех заданий, которые присутствуют в выводе команды jobs. Если аргументы отсутствуют, то подразумевается задание, помеченное знаком +. Команда fg переводит указанный в аргументе процесс на передний план, а команда bg - переводит процесс в фоновый режим. Одной командой bg можно перевести в фоновый режим сразу несколько процессов, а вот возвращать их на передний план необходимо по одному.

8.4.6. Команда nohup

Предположим, вы запустили из оболочки bash несколько процессов, часть из них в фоновом режиме. И по каким-то причинам завершили текущую сессию работы в оболочке. При завершении сессии оболочка посылает всем порожденным ею процессам сигнал 'отбой', по которому некоторые из порожденных ею процессов могут завершиться, что не всегда желательно. Если вы хотите запустить в фоновом режиме программу, которая должна выполняться и после вашего выхода из оболочки, то ее нужно запускать с помощью утилиты nohup. Делается это так:

nohup команда &

Запускаемый таким образом процесс будет игнорировать посылаемые ему сигналы (если это возможно, см. табл. 8.1). Стандартный выходной поток и стандартный поток ошибок при таком запуске команд перенаправляются в файл nohup.out или $HOME/nohup.out.

Команда nohup имеет побочный эффект, заключающийся в том, что значение nice для запускаемого процесса увеличивается на 5, т. е. процесс выполняется с более низким приоритетом.

8.5. Управление пользователями

Задача управления пользователями имеет большое значение для истинно многопользовательских систем. Для персонального компьютера, о котором идет речь в этой книге, эта задача не так актуальна. Тем не менее, некоторые вопросы отразить необходимо, раз уж Linux по своей природе многопользовательская система.

Во-первых, еще раз следует повторить, что не стоит работать в системе от имени суперпользователя (кроме случаев выполнения сугубо административных задач). Следовательно, как минимум два пользователя у вас должны быть заведены, назовем их root и user. Но обходиться только двумя пользователями удается далеко не всегда. Даже на домашнем компьютере приходится давать доступ детям или другим членам семьи, а на служебном компьютере может потребоваться дать ограниченный доступ другим сотрудникам организации. Кроме того, в системе всегда автоматически заводится ряд пользователей для выполнения служебных задач. Поэтому задача управления актуальна и для персонального компьютера. Задача эта состоит из нескольких подзадач, а именно:

• заведение новых пользователей;

• распределение пользователей по группам;

• задание прав и полномочий для нового пользователя;

• установление для него квот;

• блокирование, при необходимости, бюджета пользователя.

Рассмотрим кратко хотя бы основные из этих задач.

Для начала надо отметить, что список всех известных системе пользователей находится в файле /etc/passwd. Каждая строка этого файла соответствует одному пользователю и состоит из семи полей, разделенных двоеточиями:

• регистрационное имя пользователя;

• зашифрованный пароль;

• UID (идентификатор пользователя);

• GID (идентификатор группы);

• информация о пользователе (обычно полное имя, должность и телефоны);

• домашний каталог пользователя;

• регистрационный shell.

С точки зрения системы поля GID и информация о пользователе не имеют никакого значения, а имя пользователя используется только на этапе входа пользователя в систему (логировании). Дальше система идентифицирует пользователя по его UID. Идентификатор группы включается в этот файл только по традиции, потому что включение пользователей в различные группы определяется теперь файлом /etc/group. Второе поле каждой строки тоже уже не содержит зашифрованного пароля, теперь в этом поле стоит просто звездочка (*), а зашифрованные пароли переместились в файл /etc/shadow. Дело в том, что с увеличением производительности компьютеров появилась возможность определять открытый пароль по зашифрованному методом простого перебора всех возможных комбинаций символов. А поскольку файл etc/passwd доступен по чтению всем пользователям, безопасность многопользовательской системы ставится под удар. Файл же /etc/shadow доступен только суперпользователю, что уменьшает, если не снимает совсем, эту угрозу.

Уже из описания файла /etc/passwd вы могли заключить, что заведение нового пользователя не заканчивается тем, что администратор прописывает в этом файле дополнительную строку. Процесс подключения нового пользователя состоит из следующих этапов:

• занесение информации в файл /etc/passwd;

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

3

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату