Управление пользователями и группами

Пользователи в Linux

Последнее обновление: 14.03.2024

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

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

root, sudo и полномочия администратора

Существует два основных способа аутентификации пользователей в 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
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850