Управление пользователями и группами в Linux играет важную роль для обеспечения безопасности и контроля доступа. Ряд команд позволяют создавать, удалять и и изменяет пользователей в системе. Подобные команды позволяют администраторам создавать учетные записи пользователей, назначать разрешения и ограничивать доступ к ресурсам. Но перед тем как перейти к подобным командам, стоит сказать, что вобще представляет собой пользователь в Linux.
В Linux пользователь не всегда привязан исключительно к человеку, который входит в систему на компьютере. Учетная запись пользователя — это объект, который создается в системе Linux для предоставления разрешений, позволяющих пользователю выполнять определенные задачи. Учетные записи пользователей существуют для людей, которым необходим доступ к компьютеру, а также для служб, которым необходим доступ к определенным файлам и другим системным ресурсам.
Пользователи Linux обладают рядом свойств. Эти свойства хранятся в файлах /etc/passwd и /etc/shadow. В частности, это:
Username (имя/логин пользователя). Каждый пользователь имеет уникальное имя. Это имя используется при аутентификации в системе. По умолчанию в системе уже будут некоторые имена пользователей. Одним из них является имя пользователя root, которое используется для целей системного администрирования. Ряд имен пользователейпо умолчанию необходимы для системных задач и служб, и их не следует изменять или удалять.
Password (пароль). У каждого пользователя должен быть пароль. Это необходимо для аутентификации в системе Linux. При установке пароля администратор также может установить некоторые свойства пароля, например срок действия пароля. Пользователь root также может отключить пароль, если он или она не хочет, чтобы пользователь больше входил в систему. Пароль и соответствующие настройки хранятся в файле /etc/shadow.
UID (идентификатор пользователя). Идентификаторы пользователей представляют единственный способ идентифицировать пользователя, поскольку имена пользователей применяются больше для удобства. Большинство дистрибутивов Linux начинают генерировать UID для локальных пользователей с 1000. UID 0 также является особенным: пользователь с ним имеет полные административные права на компьютере. UID 0 обычно зарезервирован для пользователя root.
GID (идентификатор основной группы пользователя). В Linux все пользователи должны быть членами хотя бы одной группы. Эта группа является основной. Помимо основной группы, пользователи могут быть членами дополнительных групп. Параметры основной группы хранятся в файле /etc/passwd, а вторичные группы — в файле /etc/group.
GECOS (Комментарий). Комментарий является необязательным и обычно содержит некоторое описание учетной записи пользователя.
Домашний каталог. У большинства пользователей есть домашний каталог с некоторой базовой структурой. В этом каталоге, который обычно находится в /home, пользователи могут хранить файлы. Также здесь могут храниться некоторые файлы конфигурации, которые применяются к данному пользователю. Однако в принципе наличие домашнего каталога для пользователя необязательно.
Оболочка по умолчанию. Любому пользователю, которому необходимо войти в систему, нужна оболочка (хотя не всем пользователям необходимо входить в систему). Оболочка представляет среду, в которой пользователь вводит команды для выполнения на компьютере.
Существует два основных способа аутентификации пользователей в Linux: как пользователь root или как пользователь без полномочий root. Не использовать root по умолчанию — хорошая привычка. Поскольку root может делать что угодно, и небольшая ошибка может иметь большие последствия. Будучи пользователем root, можно случайно уничтожить все в своей системе, и Linux не будет спрашивать, уверены ли вы в этом действии. Поэтому рекомендуется войти в систему как обычный пользователь и получать права root только тогда, когда они вам действительно нужны. Для большинства стандартных пользовательских задач root-права вам не нужны. Однако, для определенных действий прежде всего связанных с администрированием, права root могут быть необходимы.
В некоторых системах, например, в Ubuntu учетная запись root по умолчанию не может войти в систему и отключена. После установки Ubuntu создается пользователь, который является членом группы администраторов. Все команды, для которых необходимы права root, должны выполняться этим пользователем и начинаются с sudo.
Но даже если учетная запись пользователя root не отключена по умолчанию, использование sudo все равно может быть хорошей идеей. Это особенно актуально для сред, где конкретным пользователям или группам пользователей необходимы права root для выполнения ограниченного набора задач.
Все задачи sudo, которые должны быть доступны на текущем компьютере, определены в файле /etc/sudoers. Например, выведем на консоль содержимое этого файла с помощью команды cat. Вполне возможно при выполнении этой команды консоль выведет сообщение об ошибке:
eugene@Eugene:~$ cat /etc/sudoers cat: /etc/sudoers: Permission denied
Для открытия файла /etc/sudoers, а также для ряда других конфигурационных файлов по умолчанию может потребоваться команда sudo
eugene@Eugene:~$ sudo cat /etc/sudoers [sudo] password for eugene: # # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" # This fixes CVE-2005-4890 and possibly breaks some versions of kdesu # (#1011624, https://bugs.kde.org/show_bug.cgi?id=452532) Defaults use_pty ................................... # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "@include" directives: @includedir /etc/sudoers.d eugene@Eugene:~$
При выполнении команды sudo консоль предложит ввести пароль, и после корректного пароля будет выполняться основная команда - в данном случае cat, которая отобразит содержимое файла.
Стоит отметить, что никогда не следует открывать файл /etc/sudoers для редактирования напрямую, поскольку это сопряжено с риском полной блокировки в случае ошибки. Если все таки нужно отредактировать файл,
то для этого применяется команда sudo visudo /etc/sudoers
, которая открывает файл в текстовом редакторе.
Разберем основные строки конфигурации. Прежде всего это строка
root ALL=(ALL:ALL) ALL
Она указывает, что пользователь root имеет право запускать все команды со всех хостов(компьютеров). Далее вы можете видеть, что то же самое справедливо для всех пользователей, которые принадлежат к группе admin и группе sudo:
%admin ALL=(ALL) ALL %sudo ALL=(ALL:ALL) ALL
Аналогично можно дать соответствующие права и другим группам. Например:
%developers ALL=(ALL) ALL
В данном случае всем пользователям из группы developers разрешено выполнять задачи администратора. Перед фактическим выполнением задачи им будет предложено ввести пароль. Если не надо, чтобы у пользователей данной группы запрашивался пароль, то используется следующая стркока:
%developers ALL=(ALL) NOPASSWD: ALL
Также можно указать для конкретного пользователя выполнение команды от имени администратора. Например, если у нас есть пользователь с именем "superuser1", и мы хотим ему дать администраторские полномочия по выполнению команды "/usr/bin/passwd" (команда управления паролем), то мы могли бы добавить в этот файл следующую строчку:
superuser1 ALL=/usr/bin/passwd
Подобным образом можно указывать отдельные задачи и для ролей:
%developers ALL=/usr/bin/passwd
Если надо дать доступ к ограниченному кругу нескольких задач, то можно с помощью Cmnd_Alias
определить для них псевдоним:
Cmnd_Alias SYSTEM = /usr/bin/passwd, /usr/sbin/usermod
В данном случае для двух команд - /usr/bin/passwd и /usr/sbin/usermod (команда изменения пользователей) определен псевдоним SYSTEM. Далее, используя этот псевдоним, можно назначить данные команды пользователю или группе:
%developers ALL=SYSTEM