Как составить список групп в Linux
Как составить список групп в Linux
How to List Groups in Linux
В этом руководстве объясняется, как показать все группы, в которые входит пользователь. Мы также объясним, как составить список всех членов группы.

В Linux группа - это совокупность пользователей. Основная цель групп - определить набор привилегий, таких как права на чтение, запись или выполнение для данного ресурса, которые могут быть общими для пользователей в группе. Пользователи могут быть добавлены в существующую группу, чтобы использовать предоставленные ей привилегии.
Linux группы
Пользователь может принадлежать к двум типам групп:
-
Основная группа или группа входа - это группа, назначаемая файлам, которые создаются пользователем. Обычно имя основной группы совпадает с именем пользователя. Каждый пользователь должен принадлежать ровно к одной основной группе.
-
Вторичная или дополнительная группа - используется для предоставления определенных привилегий группе пользователей. Пользователь может быть членом нуля или более вторичных групп.
-
Список всех групп, членом которых является пользователь
Есть несколько способов узнать группы, к которым принадлежит пользователь.
Основная группа пользователей хранится в /etc/passwd
файле, а дополнительные группы, если таковые имеются, перечислены в /etc/group
файле.
Один из способов найти группы пользователей - это просмотреть содержимое этих файлов, используя cat
, less
или grep
. Другой более простой вариант - использовать команду, цель которой - предоставить информацию о пользователях и группах системы.
С использованием groups
команду
Самая запоминающаяся команда для перечисления всех групп, в которые входит пользователь, это groups
команда. При выполнении без аргумента команда выведет список всех групп, к которым принадлежит текущий зарегистрированный пользователь:
groups
Первая группа является основной группой.
john adm cdrom sudo dip plugdev lpadmin sambashare
Чтобы получить список всех групп, к которым принадлежит конкретный пользователь, укажите в groups
качестве аргумента имя пользователя для команды:
groups linuxize
Как и прежде, первая группа является основной.
linuxize : linuxize sudo
С использованием id
команду
id
выводит информацию об указанном пользователе и его группах. Если имя пользователя не указано, отображается информация о текущем пользователе.
Например, чтобы получить информацию о пользователе linuxize
, введите:
id linuxize
Команда покажет идентификатор пользователя ( uid
), первичную группу пользователя ( gid
) и вторичные группы пользователя ( groups
)
uclass=1001(linuxize) gclass=1001(linuxize) groups=1001(linuxize),27(sudo)
Для печати только имен вместо цифр используйте -n
опцию. Опция -g
будет печатать только основную группу и-G
все группы.
Следующая команда напечатает имена групп, членом которых является текущий пользователь:
id -nG
john adm cdrom sudo dip plugdev lpadmin sambashare
Список всех членов группы
Чтобы вывести список всех членов группы, используйте getent group
команду, за которой следует имя группы.
developers
вы бы использовали следующую команду:
getent group developers
Если группа существует, команда напечатает группу и всех ее членов:
developers:x:126:frank,mary
Если нет выходных данных, это означает, что группа не существует.
Список всех групп
Для просмотра всех групп, присутствующих в системе, просто откройте /etc/group
файл. Каждая строка в этом файле представляет информацию для одной группы.
less /etc/group
Другой вариант - использовать getent
команду, которая отображает записи из баз данных, настроенных в /etc/nsswitch.conf
файле, включая group
базу данных, которую мы можем использовать для запроса списка всех групп.
Чтобы получить список всех групп, введите следующую команду:
getent group
Вывод такой же, как при отображении содержимого /etc/group
файла. Если вы используете LDAP для аутентификации пользователя, getent
отобразятся все группы из /etc/group
файловой базы данных и базы данных LDAP.
Вы также можете использовать awk
или cut
для печати только первое поле, содержащее название группы:
getent group | awk -F: '{ print $1}'
getent group | cut -d: -f1
Вывод
В этом уроке вы узнали, как найти группы, в которые входит пользователь. Те же команды применяются для любого дистрибутива Linux, включая Ubuntu, CentOS, RHEL, Debian и Linux Mint.