В 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
) пользователя.
uid=1001(linuxize) gid=1001(linuxize) groups=1001(linuxize),27(sudo)
Чтобы напечатать только имена вместо чисел, используйте параметр -n
. Опция -g
выведет только основную группу и -G
все группы.
Следующая команда напечатает имена групп, членом которых является текущий пользователь:
id -nG
john adm cdrom sudo dip plugdev lpadmin sambashare
Список всех участников группы
Чтобы getent group
список всех членов группы, используйте команду 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.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.