Глава 12. Основы системного администрирования

Содержание
12.1. Пользователи и группы
12.2. Пользователи и группы: сложный путь
12.3. Корректное завершение работы

Whoa whoa whoa whoa whoa... Я знаю о чём вы думаете. “Я не системный администратор! Я даже не хочу быть системным администратором!”

Факт заключается в том, что вы являетесь администратором любого компьютера, для которого у вас есть пароль root'а. Это может быть ваша настольная рабочая станция с одним или двумя пользователями или же это может быть большой сервер с несколькими сотнями пользователей. В любом случае вам необходимо знать, как управлять пользователями и как безопасно завершить работу системы системы. Эти задачи выглядят простыми, однако касательно их есть несколько моментов, о которых нужно помнить постоянно.

12.1. Пользователи и группы

Как упоминалось в Гл. 8, вам обычно не следует входить в систему под root'ом. Вместо этого вам следует создать учётную запись обычного пользователя для повседневного использования и использовать учётную запись root'а только для задач по обслуживанию системы. Для создания пользователя вы можете использовать либо утилиты, поставляемые со Slackware, либо отредактировать файл паролей вручную.

12.1.1. Вспомогательные скрипты

Самым простым способом для управления пользователями и группами является использование вспомогательных скриптов и программ. В состав Slackware входят следующие программы для работы с пользователями: adduser, userdel(8), chfn(1), chsh(1) и passwd(1). Команды groupadd(8), groupdel(8) и groupmod(8) предназначены для работы с группами. Эти программы, за исключением chfn, chsh и passwd, запускаются в основном только root'ом, и поэтому находятся они в /usr/sbin. chfn, chsh и passwd могут выполняться кем-угодно и находятся они в /usr/bin.

Пользователей можно добавлять при помощи утилиты adduser. Мы начнём рассмотрение этого вопроса с полной процедуры, показывая все задаваемые вопросы и давая краткие пояснения к ним. Ответ по умолчанию заключён в квадратные скобки, и его можно использовать почти во всех диалогах, если вы только не захотите изменить что-либо. (Для удобства под диалогами будет представлен их перевод. На самом деле их там нет, однако они вполне могут появиться в DeepStyle Linux, если Хоттаб поднапряжётся конечно :) - прим. переводчика.)

# adduser
Login name for new user []: jellyd
Логин для нового пользователя []: jellyd

Это означает имя, которое пользователь будет использовать для входа в систему. Традиционно сложилось так, что логины состоят из восьми или менее символов в нижнем регистре. (Вы можете использовать использовать и большее количество символов, включая цифры, однако старайтесь не делать этого, если у вас нет на то серьёзной причины.)

Вы также можете указать логин в качестве аргумента сразу в командной строке:

# adduser jellyd

В любом случае после ввода логина adduser попросит вас ввести идентификатор пользователя:

User ID ('UID') [ defaults to next available ]:
ID пользователя ('UID') [ доступно значение по умолчанию ]:

Идентификатор пользователя (user ID, UID) - это то, по чём на самом деле определяются права владения в Linux. Каждый пользователь имеет уникальный номер, начиная с 1000 (в Slackware). Вы можете сами указать UID для нового пользователя или же позволить программе самой назначить его из списка доступных.

Initial group [users]:
Исходная группа [users]:

По умолчанию все пользователи заносятся в группу users. Вы можете занести нового пользователя в другую группу, однако это не рекомендуется, если только вы не отдаёте себе отчёт в том, что делаете.

Additional groups (comma separated) []:
Дополнительные группы (через запятую) []:

Этот вопрос позволяет занести нового пользователя в дополнительные группы. Пользователь может быть членом нескольких групп одновременно. Это полезно в том случае, если вы определили отдельные группы для таких целей, как изменение веб-файлов, запуск игр, запись на оптические носители, прослушивание музыки и т.п. Например, в некоторых системах команду su могут использовать только члены группы wheel. В Slackware по умолчанию есть группа sys, членам которой разрешается воспроизводить звук через внутреннюю звуковую карту.

Home directory [/home/jellyd]
Домашний каталог [/home/jellyd]

По умолчанию домашние каталоги находятся в /home. Если у вас слишком большая система, вы можете перенести домашние каталоги в другое место (или даже в несколько других мест). Этот этап позволяет вам определить местонахождение домашнего каталога пользователя.

Shell [ /bin/bash ]
Командный процессор [ /bin/bash ]

В Slackware Linux командным процессором по умолчанию является bash, и его будет достаточно для большинства пользователей. Если ваш новый пользователь пришёл из мира Unix, он может быть уже хорошо знаком с различными шеллами. На этом этапе вы можете изменить шелл пользователя или же он позже может сам изменить его с помощью команды chsh.

Expiry date (YYYY-MM-DD) []:
Дата окончания действия (YYYY-MM-DD) []:

Для учётных записей можно установить дату истечения их действия. По умолчанию эта дата отсутствует. По желанию вы можете изменить это. Этот параметр может оказаться полезным для администраторов провайдеров услуг Интернета, которые могут пожелать, чтобы учётная запись была заблокирована по истечении некоторого срока, если не была получена оплата за следующий период.

New account will be created as follows:
---------------------------------------
Login name:         jellyd
UID:                [ Next available ]
Initial group:      users
Additional groups:  [ None ]
Home directory:     /home/jellyd
Shell:              /bin/bash
Expiry date:        [ Never ]

Будет создана учётная запись со следующими данными:
---------------------------------------
Логин:                   jellyd
UID:                     [ следующий доступный ]
Исходная группа:         users
Дополнительные группы:   [ нет ]
Домашний каталог:        /home/jellyd
Командный процессор:     /bin/bash
Дата окончания действия: [ никогда ]

Перед вами представлена вся информация, которую вы ввели для новой учётной записи, и у вас есть возможность прервать создание этой учётной записи. Если вы где-то ошиблись, нажмите Control+C и начните всё сначала. В противном случае, если всё в порядке, нажмите Enter, и учётная запись будет создана.

Creating new account...

Changing the user information for jellyd
Enter the new value, or press return for the default
        Full Name []: Jeremy
        Room Number []: Smith 130
        Work Phone []:
        Home Phone []:
        Other []:

Создание новой учётной записи...

Изменение информации о пользователе jellyd
Введите новое значение или нажмите Enter
        Полное имя []: Jeremy Smith
        Офис []: 130
        Рабочий телефон []:
        Домашний телефон []:
        Другая информация []:

Вся эта информация является необязательной. Если не хотите, можете не указывать её. Пользователь сам может изменить её в любое время с помощью команды chfn. Однако может оказаться полезным указать по крайней мере полное имя и номер телефона, чтобы вы позже могли связаться с этим человеком.

Changing password for jellyd
Enter the new password (minimum of 5, maximum of 127 characters)
Please use a combination of upper and lower case letters and numbers.
New password:
Re-enter new password:
Password changed.

Account setup complete.

Изменение пароля пользователя jellyd
Введите новый пароль (минимум - 5, максимум - 127 символов)
Пожалуйста, используйте комбинацию букв верхнего и нижнего регистров и цифры.
Новый пароль:
Новый пароль (повтор):
Пароль изменён.

Настройка учётной записи завершена.

Вы должны будете ввести пароль для нового пользователя. Обычно, если этого пользователя в данный момент нет рядом с вами, вам просто нужно установить какой-то простой пароль, а затем сказать пользователю, чтобы он изменил его на что-то более безопасное.

Замечание

Выбор пароля: выбор безопасного пароля является первой линией обороны против атак на взлом системы. Вам не следует использовать простые для угадывания пароли, потому что это облегчает задачу несанкционированного проникновения в вашу систему. В идеале пароль должен представлять собой строку из случайного набора символов, включая буквы верхнего и нижнего регистров, цифры и специальные символы. (Символ табуляции не следует использовать, поскольку у вас могу возникнуть проблемы со входом в систему с разного типа компьютеров.) Также не следует пытаться использовать кириллицу, поскольку, даже если вам удастся добиться этого (что, в принципе, возможно), результат может оказаться просто непредсказуемым (прим. переводчика). Есть много программ, генерирующих за вас случайные пароли; поищите их в Интернете.

В общем случае просто придерживайтесь общепринятых рекомендаций: не выбирайте в качестве пароля дату чьего-либо дня рождения, общие фразы, что-то, что можно найти на вашем столе, или что-то такое, что можно легко ассоциировать с вами. Пароль наподобие “secure1” или любой другой пароль, который вы увидели в печатном издании или на веб-странице, также будет плохим выбором.

Удалять пользователей довольно легко. Просто запустите userdel с именем удаляемой учётной записи в качестве аргумента. Вам следует сначала убедиться, что пользователь вышел из системы, и отсутствуют процессы, выполняемые от его имени. Также помните, что после того, как вы удалите пользователя, вся информация о его пароле также исчезнет.

# userdel jellyd

Эта команда удалит из вашей системы упомянутого пользователя jellyd. Неплохая чистка :) Пользователь был удалён из файлов /etc/passwd, /etc/shadow и /etc/group, однако не был удалён его домашний каталог.

Если вы хотите удалить и его каталог, вам нужно было использовать команду со следующей опцией:

# userdel -r jellyd

Временное отключение учётных записей будет рассмотрено в следующем разделе, посвящёном паролям, поскольку временные изменения влекут за собой изменение пароля пользователя. Изменение другой информации, касающейся учётной записи, рассматривается в Разд. 12.1.3.

Программы для добавления и удаления групп очень просты. groupadd добавляет в файл /etc/group ещё одну запись с уникальным идентификатором группы, а groupdel удаляет указанную группу. Вам остаётся только отредактировать /etc/group, чтобы добавить пользователей в нужную группу. Например, чтобы добавить группу с именем cvs:

# groupadd cvs

А чтобы удалить её:

# groupdel cvs

12.1.2. Изменение паролей

Программа passwd изменяет пароли путям внесения изменений в файл /etc/shadow. В этом файле хранятся в зашифрованном виде все пароли системы. Чтобы изменить свой собственный пароль, наберите следующее:

% passwd
Changing password for chris
Old password:
Enter the new password (minumum of 5, maximum of 127 characters)
Please use a combination of upper and lower case letters and numbers.
New password:

Изменение пароля пользователя chris
Старый пароль:
Введите новый пароль (минимум - 5, максимум - 127 символов)
Пожалуйста, используйте комбинацию букв верхнего и нижнего регистров и цифры.
Новый пароль:

Как видите, вам нужно ввести свой старый пароль. Он не будет показан на экране, когда вы будете набирать его, точно так же, как и при входе в систему. Затем вам надо будет ввести новый пароль. passwd выполнит ряд проверок вашего нового пароля, и если он не будет одобрен, вы увидите предупреждение. Если хотите, вы можете проигнорировать эти предупреждения. Вам надо будет ещё раз ввести новый пароль для подтверждения.

В случае, если у вас есть права root'а, вы можете изменить пароль другого пользователя:

# passwd ted

Затем вам нужно будет пройти процедуры, описанные выше, за тем исключением, что вам не надо будет вводить старый пароль пользователя. (Одно из многих преимуществ root'а...)

При необходимости вы можете также временно отключить (заблокировать) учётную запись и позже повторно включить (разблокировать) её. И блокирование, и разблокирование учётной записи можно выполнить при помощи утилиты passwd. Чтобы отключить учётную запись, выполните под root'ом следующее:

# passwd -l david

При этом пароль пользователя david будет изменён на нечто, что никогда не сможет совпасть с какой-либо зашифрованной комбинацией символов. Разблокировать учётную запись можно с помощью следующей команды:

# passwd -u david

Теперь учётная запись david'а снова возвращена в нормальное состояние. Отключение учётной записи может быть полезным в том случае, если пользователь не соблюдает правила, которые вы установили для своей системы, или если вы обнаружили слишком много экспортированных копий xeyes(1) на своём рабочем столе.

12.1.3. Изменение информации о пользователях

Существует два типа личной информации, которую пользователи могут изменить в любое время: это командный процессор и информация для finger. В Slackware Linux для изменения этих данных используются утилиты chsh (change shell) и chfn (change finger).

Пользователь может выбрать себе любой шелл из тех, что перечислены в файле /etc/shells. Большинство пользователей вполне устроит /bin/bash. Другие могут быть хорошо знакомы с другим шеллом, который используется в их системе на работе или в школе, и поэтому наверняка захотят пользоваться тем, что уже хорошо знают. Чтобы изменить свой командный процессор, воспользуйтесь командой chsh:

% chsh
Password:
Changing the login shell for chris
Enter the new value, or press return for the default
        Login Shell [/bin/bash]:

Пароль:
Изменение командного процессора пользователя chris
Введите новое значение или нажмите Enter
        Командный процессор [/bin/bash]:

После ввода своего пароля введите полный путь к новому командному процессору. Сначала убедитесь в том, что он перечислен в файле /etc/shells(5). Также root может изменить шелл любого пользователя, запустив chsh и именем этого пользователя в качестве аргумента.

Информация finger содержит опциональные данные о вас: полное имя, номера телефонов и номер офиса/кабинета. Эти данные могут быть изменены с помощью команды chfn, а процесс представляет собой ту же самую процедуру, что и при создании учётной записи. Как обычно root может изменить finger-информацию любого пользователя.