В этой статье мы рассмотрим как посмотреть на группы пользователей в 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.