Группы пользователей в 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 .