Как составить список групп в Linux

Список групп в 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 ).

 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 , за которой укажите имя группы.

Например, чтобы узнать состав группы под названием 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.

Если у вас есть вопросы, не стесняйтесь оставлять комментарии.

Терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *