Управление группами

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

В Linux пользователь может быть членом разных групп. Прежде всего у каждого пользователя есть как минимум одна - основная группа. (Если у пользователя нет основной группы, он не сможет войти в систему). Обычно при создании пользователя ему в качестве основной назначается одноименная группа.

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

Получение группы

Идентификатор основной группы или GID пользователя хранится в четвертом поле файла /etc/passwd. Например, получим информацию о пользователе superuser1 из этого файла:

eugene@Eugene:~$ sudo grep superuser1 /etc/passwd
superuser1:x:1001:1001::/home/superuser1:/bin/sh

Здесь мы видим, что группа пользователя - 1001. Получим значение только четвертого столбца:

eugene@Eugene:~$ sudo grep superuser1 /etc/passwd | cut -d : -f 4
1001

Команда groups позволяет получить все группы пользователя. Данной команде передается логин пользователя. Например, получим список групп пользователя root:

eugene@Eugene:~$ groups root
root : root

Как видно, root принадлежит одноименной группе. Если логин не указан, выводится список групп текущего пользователя:

eugene@Eugene:~$ groups
eugene adm cdrom sudo dip plugdev users lpadmin

groupadd. Добавление группы

Команда groupadd добавляет новую группу в систему. Она имеет следующий синтаксис:

groupadd [options] GROUP

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

  • -g, --gid GID: устанавливает GID для новой группы

  • -p, --password ПАРОЛЬ: применяет пароль для новой группы

  • -U, --users ПОЛЬЗОВАТЕЛИ: задает список пользователей-членов этой группы

Например, создадим группу "developers":

sudo groupadd developers

Получение групп

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

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
.................
eugene:x:1000:
superuser1:x:1001:
developers:x:1002:

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

  • Первое поле представлет имя группы

  • Во втором поле хранится пароль группы (знак ! означает, что для этой группы пароль не разрешен). У большинства групп в поле пароля есть символ x, и это значит, что информация о пароле группы хранится в файле /etc/gshadow. Однако в реальности групповые пароли используются не часто, а в некоторых дистрибутивах Linux вообще нет файла /etc/gshadow

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

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

  • Третье поле файла содержит уникальный идентификатор группы или GID

  • Последнее поле содержит имена членов группы (только для пользователей, для которых это не основная группа)

Проверим наличие группы с помощью команды "cat /etc/group | grep developers"

eugene@Eugene:~$ cat /etc/group | grep developers
developers:x:1002:

Здесь мы видим, что GID у группы developers - 1002.

Например, пусть у нас ранее был создан пользователь "superuser1":

sudo useradd superuser1

Добавим этого пользователя в группу "developers":

eugene@Eugene:~$ sudo usermod -aG developers superuser1
eugene@Eugene:~$ id superuser1
uid=1001(superuser1) gid=1001(superuser1) groups=1001(superuser1),1002(developers)
eugene@Eugene:~$ 

А при обращении к группе "developers" мы увидим, что в ней появлися новый пользователь:

eugene@Eugene:~$ cat /etc/group | grep developers
developers:x:1002:superuser1

groupmod. Изменение группы

Команда groupmod изменяет группу:

groupmod [options] GROUP

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

  • -a, --append: добавляет пользователей, упомянутых опцией -U, в группу, не удаляя уже имеющихся участников

  • -g, --gid GID: изменить идентификатор группы на GID

  • -n, --new-name NEW_GROUP: измеяет имя группы на NEW_GROUP

  • -p, --password ПАРОЛЬ: изменяет пароль

  • -U, --users ПОЛЬЗОВАТЕЛИ: список пользователей-членов этой группы

Например, изменение имени группы "developers" на "testers":

sudo groupmod -n testers developers

grpck

Команда grpck проверяет целостность группы. Эта команда проверяет, что все группы, перечисленные в файле /etc/group, имеют действительные записи в файле паролей (/etc/passwd). Команда выполняется следующим образом:

sudo grpck -r /etc/passwd

groupdel. Удаление группы

Команда groupdel удаляет группу:

groupdel [options] GROUP

В качестве обязательного параметра - GROUP ей передается имя группы. Например, удалим группу testers:

sudo groupdel -f testers

Опция -f позволяет принудительно удалить группу, даже если это основная группа пользователя

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850