В Linux группа – это совокупность пользователей. Основная цель групп – определить набор привилегий, таких как права на чтение, запись или выполнение для данного ресурса, которые могут быть общими для пользователей в группе. Пользователи могут быть добавлены в существующую группу, чтобы использовать предоставленные ей привилегии.
В этой статье объясняется, как показать все группы, в которые входит пользователь. Мы также объясним, как составить список всех членов группы.
Linux группы
Пользователь может принадлежать к двум типам групп:
- Основная группа или группа входа – это группа, назначаемая файлам, которые создаются пользователем. Обычно имя основной группы совпадает с именем пользователя. Каждый пользователь должен принадлежать ровно к одной основной группе.
- Вторичная или дополнительная группа – используется для предоставления определенных привилегий группе пользователей. Пользователь может быть членом нуля или более вторичных групп.
Список всех групп, членом которых является пользователь
Есть несколько способов узнать группы, к которым принадлежит пользователь.
Основная группа пользователей хранится в файле /etc/passwd, а дополнительные группы, если таковые имеются, перечислены в файле /etc/group.
Один из способов найти группы пользователей – просмотреть содержимое этих файлов, используя cat, less или grep. Другой более простой вариант – использовать команду, цель которой – предоставить информацию о пользователях и группах системы.
Используя команду groups
Самая запоминающаяся команда для перечисления всех групп, в которые входит пользователь, это команда groups. При выполнении без аргумента команда выведет список всех групп, к которым принадлежит текущий зарегистрированный пользователь:
groups
Первая группа является основной группой.
john adm cdrom sudo dip plugdev lpadmin sambashare
Чтобы получить список всех групп, к которым принадлежит конкретный пользователь, укажите в groups в качестве аргумента имя пользователя для команды:
groups andreyex
Как и прежде, первая группа является основной.
andreyex : andreyex sudo
Используя команду id
Команда id печатает информацию об указанном пользователе и его группах. Если имя пользователя не указано, отображается информация о текущем пользователе.
Например, чтобы получить информацию о пользователе, andreyex, вы должны набрать:
id andreyex
Команда покажет имя пользователя (uid), первичную группу пользователя (gid) и вторичные группы пользователя (groups)
uid=1001(andreyex) gid=1001(andreyex) groups=1001(andreyex),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.
Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы.