Группы пользователей в Linux

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

Просмотр списка групп в системе

Группы объединяют пользователей в одну единицу для облегчения назначения прав доступа к файлам. Про пользователей я писал отдельную статью, если ещё не читали её, то рекомендую вначале изучить её: [Пользователи в Linux].

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

$ head /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:

А в этом примере я использую grep чтобы определить группы своего пользователя:

$ grep alex /etc/group
cdrom:x:24:alex
floppy:x:25:alex
sudo:x:27:alex
audio:x:29:alex
dip:x:30:alex
video:x:44:alex
plugdev:x:46:alex
users:x:100:alex
netdev:x:106:alex
alex:x:1000:

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

  • Имя группы.
  • Пароль группы. «X» означает что пароль зашифрован и хранится в файле /etc/gshadow. На самом деле в 99% случаях пароля у группы.
  • Уникальный номер группы (GID).
  • Список пользователей, входящих в эту группу.

Просмотр групп пользователя

Для того чтобы посмотреть в каких группах состоит пользователь можно использовать метод показанный выше (grep username /etc/group). Но обычно используют команду id, которая тоже покажет эту информацию:

$ id alex
uid=1000(alex) gid=1000(alex) группы=1000(alex),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),100(users),106(netdev)

Из примера выше видно в каких группах состоит пользователь alex. При этом gid=1000(alex) — это первичная (основная) группа, а все остальные — вторичные группы.

Первичная и вторичные группы

Например, если пользователь «alex» имеет первичную группу «alex» и какие-то дополнительные группы, и он создал файл, то владельцем файла станет пользователь «alex», а группой владельцев станет группа «alex». Вторичные группы в назначение владельцев файла не вмешиваются. Про систему прав в Linux я писал отдельную статью [Стандартные права доступа в Linux], а в этой продолжаем разбираться с группами.

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

$ id alex
uid=1000(alex) gid=1000(alex) группы=1000(alex),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),100(users),106(netdev)

Для того чтобы изменить первичную группу, нужно использовать команду usermod -g <groupname> <username>.

$ sudo usermod -g users alex

$ id alex
uid=1000(alex) gid=100(users) группы=100(users),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),106(netdev)

Как видите первичная группа у пользователя alex изменилась.

Создание новой группы

Чтобы создать новую группу нужно использовать команду groupadd:

$ sudo groupadd my_group

$ grep my_group /etc/group
my_group:x:1002:

Добавление пользователя в группу

Для того чтобы добавить пользователя в группу на debian или ubuntu можно использовать команду adduser, указав вначале пользователя, затем группу:

$ sudo adduser alex my_group
Добавляется пользователь «alex» в группу «my_group» ...
Готово.

В других системах может не быть команды adduser, и тогда нужно будет использовать команду usermod:

$ sudo usermod -aG my_group alex

Используемые опции для команды usermod:

  • -a — добавление к группе;
  • -G — указывает, что работать будем с дополнительными группами а не с первичной.

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

Для того чтобы убрать пользователя из группы на debian или ubuntu можно использовать команду delgroup, указав вначале пользователя, затем группу:

$ sudo delgroup alex my_group
Удаляется пользователь «alex» из группы «my_group» ...
Готово.

В других системах может не быть команды delgroup, и тогда нужно будет использовать команду usermod:

$ sudo usermod -rG my_group alex

Используемые опции для команды usermod:

  • -r — удаление из группы;
  • -G — указывает, что работать будем с дополнительными группами а не с первичной.

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

Удалить группу можно с помощью команды groupdel, просто указав название группы:

$ sudo groupdel my_group

Если понравилась статья, подпишись на мой канал в VK или Telegram.

Оставьте комментарий