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