Даже если на компьютере работает только один человек, необходимо понимать аспекты управления пользователями в системе Linux. Важно создать по крайней мере одно имя пользователя (помимо пользователя root) для повседневной работы.
Каждый физический пользователь должен быть зарегистрирован в системе, т. е. иметь собственное имя пользователя. Редко бывает полезной ситуация, когда несколько человек используют совместно одно и то же имя пользователя. Помимо вопросов обеспечения безопасности, существенны также и вопросы контроля за действиями пользователей, а они идентифицируются в системе по своим именам.
Система регистрирует следующую информацию о каждом пользователе.
Это имя должно быть уникальным в рамках системы. В именах могут быть использованы только английские буквы, числа и символы _и. (точка).
Этот номер, сокращённо обозначаемый как UID, является уникальным идентификатором пользователя в системе, Вообще говоря, система отслеживает пользователей по их номерам UID, а не по именам.
Этот номер (сокращённо GID) обозначает группу, к которой по умолчанию относится пользователь. Группы позволяют регулировать доступ многих пользователей к различным ресурсам. Каждый пользователь принадлежит одной или нескольким группам, и эту принадлежность устанавливает системный администратор.
Это зашифрованный (encripted) пароль пользователя. Для создания и изменения пароля используется команда passwd.
Помимо системного имени пользователя, в систему заносится и хранится имя (фамилия и т. д.) «реального» пользователя. Например, пользователю schmoj в реальной жизни может соответствовать человек по имени Joe Schmo.
Это название каталога, в который попадает пользователь после того, как он вошёл в систему (зарегистрировался, login), и где хранятся его собственные файлы. Такой каталог имеется у каждого пользователя, и все такие каталоги собраны в один каталог, обычно называемый /home.
Командная оболочка, которая запускается при входе в систему. Например, /bin/bash или /bin/zsh.
Вся эта информация хранится в файле /etc/passwd. Каждая строка в файле имеет формат:
имя пользователя:зашифрованный пароль:UID:GID:полное имя:домашний каталог:оболочка
Приведём пример:
kiwi:Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash
В этом примере на первом месте стоит имя пользователя, т. е. kiwi. В следующем поле помещается пароль в зашифрованном виде: Xv8Q981g71oKK. Пароли в системе хранятся не в «читаемом» формате, а в зашифрованном с собственным именем, использованным в качестве ключа. Иными словами, для того, чтобы расшифровать пароль, его нужно знать. Эта форма шифрования является достаточно надёжной.
В некоторых системах имеются «теневые пароли» (shadow passwords), когда информация о пароле хранится в файле /etc/shadow. Такая схема является несколько более безопасной, поскольку файл /etc/passwd может читаться кем угодно, а права доступа к файлу /etc/shadow гораздо сильнее ограничены. Теневые пароли также обеспечивают иные функции, например, истечение срока действия пароля.
Третье поле — 102 — UID. Это число должно быть уникальным. Четвёртое поле — 100 — GID, т. е. пользователь принадлежит к группе с номером 100. Информация о группах хранится в файле /etc/group.
Пятое поле — реальное имя пользователя, в данном случае — Laura Poole. Последние два поля — домашний каталог пользователя (/home/kiwi) и начальная оболочка (/bin/bash). Не требуется, чтобы имена пользователя и домашнего каталога совпадали, однако такая организация помогает устанавливать принадлежность каталога.
При создании новых пользователей надо совершить последовательность из нескольких действий. Во-первых, на пользователя заводится запись в файле /etc/passwd, где пользователю даются уникальные имя и UID. UID обычных пользователей должны быть больше 100, поскольку низкие UID зарезервированы для системных целей. Также указываются GID, реальное имя и другая информация. Дальше создаётся домашний каталог пользователя, и права доступа устанавливаются так, что этим каталогом владеет данный пользователь. В каталог помещаются файлы инициализации командной оболочки. Также во всей системе модифицируются конфигурационные файлы (например, хранилище (spool) для приходящей пользователям электронной почты).
Вручную создавать пользователей не так трудно, однако когда эксплуатируется система с большим количеством пользователей, может оказаться забытой какая-нибудь деталь. Проще всего в этом случае создавать новых пользователей посредством интерактивной программы, которая автоматически обновляет содержимое всех нужных системных файлов. Такая программа называется useradd или adduser, в зависимости от того, какое программное обеспечение установлено.
В файле /etc/default/useradd содержится информация о стандартной начальной конфигурации для всех новых пользователей. В этом файле задаются значения переменным, которые использует программа useradd. Кроме того, этот файл указывает, где находятся конфигурационные файлы содержащие настройки по умолчанию. Расположение этих файлов задаётся переменной SKEL. Файлы, которые помещаются в этот каталог (такие, как файл .profile, устанавливающий режим по умолчанию во всей системе, а также файлы .zshrc или .bashrc), будут автоматически скопированы в домашний каталог создаваемого пользователя командой useradd.
Удаление пользователей из системы может быть произведено командой userdel или deluser.
Если требуется временно запретить пользователю вход в систему, но не удалять его домашний каталог и прочие сделанные установки, можно просто поставить звёздочку (символ *) в то поле файла /etc/passwd, где находится пароль. Например, таким образом изменённая строка для пользователя kiwi будет выглядеть как
kiwi:*Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash
При этом вход в систему пользователя kiwi станет невозможным.
После того, как создано имя нового пользователя, может оказаться нужным изменить атрибуты этого пользователя, например, домашний каталог или пароль. Самый простой способ сделать это═ — просто поменять информацию в файле /etc/passwd. Для создания пароля нужно использовать команду passwd. Так, команда
passwd larry
изменит пароль пользователя larry. Изменять пароли любых пользователей может только пользователь root, однако свои пароли пользователи могут изменять сами, отдавая команду passwd без параметров.
Как указывалось выше, каждый пользователь принадлежит одной либо нескольким группам. Единственное, что является существенным в принадлежности к той или иной группе═ — это права доступа. Для каждого файла определён не только пользователь-владелец, но и группа-владелец, и набор прав доступа, которые определяют, как пользователи из этой группы могут осуществлять доступ к этому файлу. При создании нового пользователя создаётся также группа, имя которой совпадает с именем пользователя и куда входит только он один.
Имеется несколько групп, определённых системой, например, bin, mail, sys. Эти группы созданы для оформления прав доступа к системным файлам, и пользователи не должны принадлежать к этим группам. Для пользователей создаются специальные группы, например, users. Для пользователей можно создать несколько групп, например, student, staff, faculty.
Информация о группах содержится в файле /etc/group. Формат каждой строки таков:
имя группы:пароль:GID:другие члены группы
Примеры групп:
root:*:0: users:*:100:mdw,larry guest:*:200: other:*:250:kiwi
Первая группа — root — специальная группа для пользователя root. Вторая группа — users — содержит обычных пользователей. GID этой группы равен 100, и в неё входят пользователи mdw и larry. Напомним, что в файле /etc/passwd каждому пользователю определена его группа по умолчанию. Тем не менее, пользователи могут принадлежать к более чем одной группе, и это осуществляется посредством перечисления их имён в файле /etc/group. Команда groups перечисляет список групп, к которым относится (имеет доступ) данный пользователь.
Третья группа называется guest и предназначена для посетителей. Для прочих пользователей создана группа other; в эту группу занесён пользователь kiwi.
Иногда в файле /etc/group заполняется поле password (пароль) для того, чтобы установить пароль на групповой доступ. Это требуется редко. Для того, чтобы не позволять пользователям проникать в привилегированные группы (командой newgroup), в это поле надо поставить символ *.
Для создания новых групп пользователей могут быть использованы команды addgroup или groupadd. Обычно легче внести вручную новую строчку в файл /etc/group, поскольку никакого другого конфигурирования не требуется. Для удаления группы можно просто удалить соответствующую строчку в файле /etc/group.