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

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

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

adduser– добавление учетной записи пользователя;

userdel(8) – удаление учетной записи пользователя;

chfn(1) – изменение finger;

chsh(1) – изменение оболочки;

passwd(1) – создание и изменение паролей пользовталей;

groupadd(8) – создание групп пользователей;

groupdel(8) – удаление групп пользователей;

groupmod(8)

mkdir– создание каталогов.

В главе также приведены основные сведения для работы со следующими конфигурационными файлами:

/etc/passwd(5) – описания пользователей;

/etc/shadow(5) – описания паролей;

/etc/group(5) – описания групп.

Общие сведения об учетных записях

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

Учетная запись больше, чем просто имя пользователя. С учетной записью связаны все файлы, ресурсы и информация, принадлежащая одному пользователю. Каждый пользователь имеет доступ к конкретным ресурсам системы - времени процессора, месту на диске, установленному программному обеспечению, сетевым ресурсам.

Работа с учетными записями

Средства для управления учетными записями входят в комплект вспомогательных сценариев и утилит, поставляемых с дистрибутивом. Для работы непосредственно с учетными записями предназначаются такие утилиты, как 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. Утилита выполняется в диалоговом режиме. При создании учетных записей, можно использовать варианты ответов, предлагаемые утилитой по умолчанию, которые приводятся в квадратных скобках.

 #adduser
Login name for new user (8 characters or less) []: jellyd

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

 User id for jellyd [ defaults to next available]:  

В ответ на этот запрос необходимо указать идентификатор (UID) пользователя. На самом деле это идентификатор, с помощью которого в системе Linux определяется принадлежность файлов. Каждый пользователь системы имеет уникальный номер, начиная с 1000. Можно выбрать UID для нового пользователя, или просто позволить утилите adduser автоматически присвоить пользователю следующий свободный номер.

 Initial group for jellyd [users]:  

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

 Additional groups for jellyd (seperated with commas, no spaces) []:  

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

 Jellyd's home directory [/home/jellyd]:  

В ответ на этот запрос необходимо уточнить, где должен располагаться домашний каталог пользователя. Домашние каталоги по умолчанию располагаются в каталоге /home. При работе в очень большой системе может возникнуть необходимость разместить домашние каталоги в другом месте. Так же имеется возможность заблокировать пользователя, указав его домашним каталогом /usr/bin/false, но пользоваться этим способом не рекомендуется.

 Jellyd's shell [/bin/bash]:  

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

 Jellyd's account expiry date (YYYY-MM-DD) []:  

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

 OK, I'm about to make a new account. Here's
what you entered so far:
New login name: jellyd
New UID: [Next available]
Initial group: users
Additional groups: [none]
Home directory: /home/jellyd
Shell: /bin/bash
Expiry date: [no expiration]
This is it... if you want to bail out, hit Control-C.
Otherwise, press ENTER to go ahead and make the account.

В конце утилита отображает всю введенную информацию и, если что-то не так, то можно отменить введенные данные, нажав комбинацию клавиш <Ctrl>+<C> и начать все сначала. Для создания пользователя с введенными параметрами необходимо нажать на клавишу <Enter>.

 Making 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:

Вся эта информация дополнительная и предназначена для утилиты finger. Эти поля можно оставить пустыми. Пользователь также может изменить эту информацию в любой момент при помощи команды 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.
Done...

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

Выбор надежного пароля это первый шаг по защите системы от взлома. Пароль не должен быть легко угадываемым, так как в этом случае шансы несанкционированного проникновения в систему возрастают. Идеальный пароль это случайный набор символов, включая большие и маленькие буквы, числа и другие символы. Необходимо помнить, что клавишу <Tab> лучше не использовать, так как разными системами она трактуется по-разному, и при удаленном доступе могут возникнуть проблемы.

Удаление учетной записи

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

 #userdel jellyd  

После выполнения этой команды, учетная запись пользователя jellyd будет удалена из системы. Команда удаляет записи о пользователе из файлов /etc/passwd и /etc/group, но не удалит его домашний каталог. Если требуется удалить и домашний каталог, то необходимо выполнить следующую команду:

 #userdel -r jellyd  

Создание и удаление групп

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

Пример создания группы:

 #groupadd cvs  

Пример удаления группы:

 #groupdel cvs  

Корректировка конфигурационных файлов пользователей и групп

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

Вначале добавление нового пользователя в файлы /etc/passwd(5), /etc/shadow(5) и /etc/group(5). Файл passwd содержит некоторую информацию о пользователе, но не содержит их паролей. Этот файл должен быть доступен для чтения всем пользователям, но недопустимо, чтобы пароли, даже закодированные, были доступны для чтения всем, так как это будет огромной помощью злоумышленникам. Поэтому закодированные пароли хранятся в теневом файле, который доступен для чтения только пользователю root, а в файле passwd пароли пользователей отображаются, как x. Файл group содержит список всех групп, и данные о том кто из пользователей к каким группам относится.

Типичная строка файла /etc/passwd выглядит таким образом:

chris:x:1000:100:Chris Lumens,Room 2,,:/home/chris:/bin/bash

Каждая строка, соответствует пользователю. Поля в каждой линии разделены двоеточием и имеют следующие значения (слева направо):

  • имя для входа в систему;
  • закодированный пароль (x для всех в системе, так как используется пакет для теневых файлов паролей);
  • ID пользователя;
  • ID группы;
  • дополнительная информация о пользователе, разделенная запятыми;
  • домашний каталог;
  • оболочка.

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

Пароль, ID пользователя должны быть уникальными, и пользователь должен входит в группу 100 (users).

Типичная строка файла /etc/shadow выглядит следующим образом:

chris:$1$w9bsw/N9$UWLr2bRER6YyBS.CAEp7R.:11055:0:99999:7:::

Как и в предыдущем случае, каждая строка соответствует одному пользователю, поля разделены двоеточием и имеют следующие значения:

  • имя входа в систему;
  • закодированный пароль;
  • количество дней от 1 января 1970 г. до дня, когда пароль был изменен последний раз;
  • количество дней, после которых пароль может быть изменен;
  • количество дней, после которых пароль должен быть изменен;
  • количество дней до истечения срока действия учетной записи;
  • время, когда пользователь получит сообщение о закрытии его учетной записи;
  • дни после истечения срока действия учетной записи, после которых учетная запись полностью блокируется;
  • количество дней от 1 января 1970 г., по истечению которых учетная запись должна быть заблокирована;
  • зарезервированное поле.

Как следует из описания, в строке в основном содержится информация по срокам действия учетной записи. Если информация об истечении срока действия учетной записи в системе не используется, то достаточно только заполнить некоторые из полей со специальными значениями. При создании учетной записи, в поле пароля можно вписать произвольные символы, кроме двоеточия. Поле "количество дней, с момента изменения пароля" можно оставить пустым. Можно ввести значения 0, 99999 и 7 как это указанно в примере выше (в те же поля) и оставить остальные поля пустыми.

Все создаваемые учетные записи по умолчанию добавляются в группу users. Если нужно создать новую группу или добавить учетную запись в группу отличную от users, то необходимо отредактировать файл /etc/group. Вот типичная строка файла:

cvs::102:chris,logan,david,root

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

Чтобы создать пароль для вновь созданного пользователя необходимо вернуться к утилите passwd. Затем воспользоваться утилитой mkdir, чтобы создать домашний каталог там, где было указано в файле /etc/passwd.

Если в системе установлен sendmail(8), то необходимо будет создать новый файл с соответствующими правами, принадлежащий новому пользователю в каталоге /var/spool/mail. Например:

 #touch /var/spool/mail/jellyd  
 #chown jellyd.users /var/spool/mail/jellyd  
 #chmod 660 /var/spool/mail/jellyd  

Эти команды создадут файл очереди почты (mailspool-файл) для нового пользователя jellyd и установят правильные права и принадлежность файла.

Для удаления учетной записи, необходимо просто удалить все, что было введено при создании: упоминания о пользователе в /etc/passwd и /etc/group; его login-имя во всех группах в /etc/group; его очередь почты, если таковая имеется; если есть необходимость — домашний каталог пользователя.

Для удаления группы из файла /etc/group удаляется строка, определяющая группу. Изменение паролей

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

 $ passwd
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:

Сначала утилита просит ввести старый пароль, затем пользователь должен ввести новый пароль. В случае если пароль не удовлетворяет требованиям безопасности, утилита passwd выведет сообщение с предупреждением. При желании это сообщение можно проигнорировать. Затем будет предложено снова ввести пароль для подтверждения.

Пользователь root может изменить пароль любого пользователя:

 # passwd ted  

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

Если в системе есть пользователи, которые ведут себя некорректно, можно временно заблокировать их учетные записи. Позже можно будет опять активизировать их. Как блокировка, так и последующее включение пользователя, могут быть произведены при помощи утилиты passwd. Чтобы отключить учетную запись, пользователь root должен выполнить следующее:

 # passwd -l david  

Это изменит пароль пользователя david на что-то, что не может быть подобрано. Для возвращения пользователя, потребуется выполнить следующее:

 # passwd -u david  

Теперь учетная запись пользователя david опять заработает, как и раньше. Приостановка учетной записи может быть полезна, если пользователь нарушает правила, установленные в системе.

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

Пользователи могут поменять в любой момент времени свою оболочку и свою finger-информацию. В системе для этого предусмотрены утилиты chsh (от англ. change shell — изменить оболочку) и chfn (от англ. change finger — изменить finger).

Пользователь может выбрать любую из оболочек, перечисленных в файле /etc/shells. Для большинства пользователей оболочка BASH будет идеальным выбором, но кто-то может использовать другие оболочки, заимствованные из других UNIX-систем. Например:

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

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

Finger-информация — это необязательная информация. Она содержит такие поля, как полное имя, номер телефона и номер кабинета. Эти данные можно изменять при помощи утилиты chfn. Пользователь root может изменить finger-информацию для любого пользователя.

Временное отключение учетной записи

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

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

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

Простой способ — создавать специальные программы — состоит в том, чтобы писать "tail scriрts":

 #!/usr/bin/tail +2
This account has been closed due to a security breach. # Данная учетная запись заблокирована
из соображений безопасности.
Please call 555-1234 and wait for the men in black to arrive. # Пожалуйста, позвоните по
номеру 555-1234 и дождитесь помощи.

Первые два символа (#!) сообщают ядру, что остальная часть строки является командой, которая должна быть выполнена, чтобы интерпретировать этот файл. Команда tail в этом случае выводит все, за исключением первой строки, в стандартный вывод.

Если пользователь "billg" подозревается в нарушении защиты, администратор системы сделал бы примерно следующее:

 # chsh -s /usr/local/lib/no-login/security billg
# su - tester
This account has been closed due to a security breach.
Please call 555-1234 and wait for the men in black to arrive.

Tail-скрипты следует хранить в отдельном каталоге во избежание их пересечения с какими-либо обычными пользовательскими командами.