Как составить список всех пользователей в группе в Linux

Опубликовано: 2022-08-29
Ноутбук Linux с приглашением bash
Фатмавати Ачмад Заэнури/Shutterstock.com

В Linux файлы имеют три набора разрешений. Один набор предназначен для группы файла. Прежде чем выделить файл группе, вы можете проверить, кто входит в группу.

Права доступа к файлам и каталогам

Файлы и каталоги в Linux имеют набор разрешений для владельца, другой набор для группы, которой выделен файл, и разрешения для всех, кто не входит ни в одну из двух предыдущих категорий.

Каждый набор разрешений определяет, могут ли члены этой категории читать, записывать или выполнять файл. В случае cd действие выполнения приравнивается к возможности перейти в каталог.

Группа по умолчанию для файла или каталога — это группа владельца по умолчанию. Обычно это человек, который его создал. Разрешения группы используются, чтобы разрешить группе пользователей контролировать доступ к файлам и каталогам других членов этой группы.

Например, у вас может быть команда разработчиков, группа документации, исследовательская группа и так далее. Члены каждой команды могут быть добавлены в группу с соответствующим названием для облегчения совместной работы. Пользователи могут состоять во многих группах одновременно.

Это простая, но надежная схема. Но если ваши файлы являются конфиденциальными, вам может быть удобнее проверить, кто является членами группы, прежде чем делиться с ними своей работой. Есть разные способы сделать это. Но обратите внимание. Два наиболее часто рекомендуемых метода проблематичны.

СВЯЗАННЫЕ С: Как использовать команду chgrp в Linux

Файл /etc/groups

Файл «/etc/group» содержит разделенный двоеточием « : » список групп и членов группы. Каждая строка имеет четыре поля.

  • Имя : Уникальное имя группы.
  • Пароль : Не используется. Это всегда будет содержать «x».
  • Идентификатор группы : уникальный идентификатор группы.
  • Пользователи : список членов группы, разделенных запятыми. Список обычно пуст для учетных записей системы и демона.

Чтобы выгрузить содержимое файла в окно терминала, вы можете использовать cat , но удобнее иметь возможность прокручивать содержимое файла с помощью less .

 меньше /etc/группа 

Использование cat для просмотра содержимого файла /etc/group

Большинство записей вверху списка не имеют членов, хотя в группе «adm» их два, а в группе «cdrom» — один.

Первая часть файла /etc/groups в средстве просмотра файлов less

Если мы хотим обнаружить группы, в которых состоит конкретный пользователь, мы можем использовать grep для поиска записей с именем их учетной записи пользователя. Это не наша задача. Мы хотим видеть всех, кто является членом группы, а не групп, к которым принадлежит один человек. Но нам поучительно взглянуть.

 grep "дэйв" /etc/group 

Список групп, членом которых является пользователь dave

Записи, содержащие строку «dave», перечислены для нас. И спрятанный среди них знак того, что все может быть не так просто, как мы думали.

Когда пользователь добавляется в Linux, по умолчанию он помещается в группу с тем же именем, что и его учетная запись. Это их основная группа. Любые другие группы, в которые они добавляются, называются вторичными группами.

Проблема в том, что пользователи не указаны как члены их основных групп . Вот почему группа «dave» не показывает участников, хотя пользователь «dave» является членом этой группы.

Конечно, системные администраторы могут изменить основную группу любого пользователя на группу любой другой группы. Это означает, что пользователь может быть членом любой группы, но он не будет указан как таковой в файле «/etc/group». Это одна проблема.

Вторая проблема заключается в том, что файл «/etc/group» не является единственным источником правды. Современные установки Linux могут хранить информацию о пользователях и группах в большем количестве мест, чем в «/etc/passwd» и «/etc/group», особенно в корпоративных ситуациях, когда развернуты такие службы, как Lightweight Directory Access Protocol. Глядя только в одно место, вы, возможно, не видите общей картины.

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

  • resteam : Исследовательская группа.
  • devteam : команда разработчиков.
  • pvqteam : Группа проверки и качества продукции.
  • docteam : Команда документации.

Мы добавили людей в эти команды. Некоторые люди состоят более чем в одной команде. Если мы откроем файл «/etc/group» в less размере и прокрутим до конца файла, мы увидим новые группы и членов группы. По крайней мере, столько участников, сколько знает файл «/etc/group».

Нижняя часть файла /etc/group в средстве просмотра файлов less

Если мы хотим извлечь одну группу, мы можем выполнить поиск с помощью grep . Символ вставки « ^ » обозначает начало строки.

 grep "^devteam" /etc/group 

Использование grep для извлечения членов одной группы

Это извлечет запись «devteam» из файла и перечислит всех членов группы. Или это так?

Команда getent

Команда getent проверяет информацию о группе пользователей в нескольких базах данных, а не только в «/etc/group». Мы будем использовать getent , чтобы показать нам группы пользователей.

 гент группа 

Использование getent для отображения всех определенных групп

Использование getent с параметром group дает на этой тестовой машине те же результаты, что и использование файла «/etc/group». Это потому, что мы не используем LDAP или любую другую централизованную службу имен. Таким образом, у getent нет других источников, на которые можно было бы ссылаться.

Вывод группы getent, показывающий группы и участников

Неудивительно, что результаты совпадают с результатами из файла «/etc/group». Возможно, то, что мы видим, действительно является реальностью ситуации. Может быть, все просто и — на этом компьютере — что видишь, то и получаешь? Давайте оставим за собой право судить об этом.

Команда getent может просмотреть для нас одну группу. Мы рассмотрим группу «devteam».

 группа разработчиков getent 

Использование getent group для извлечения сведений об одной группе

Мы получаем точно такие же результаты, как и раньше. Однако есть способ копнуть глубже.

СВЯЗАННЫЕ С: Как составить список пользователей в Linux

Команда крышки

Команда lid является частью набора инструментов libuser . Он уже был установлен на нашем тестовом компьютере с Fedora 36, ​​но его нужно было установить на Ubuntu 22.04 и Manjaro 21.

Кроме того, команда называется lid в Fedora и Manjaro, но в Ubuntu вам нужно использовать libuser-lid .

Чтобы установить команду в Ubuntu, введите:

 sudo apt установить libuser 

Установка libuser на Ubuntu

В Manjaro libuser устанавливается из AUR, поэтому вам нужно будет использовать свой любимый помощник AUR. Мы использовали yay .

 привет, либузер 

Установка libuser на Manjaro

Вы можете использовать libuser-lid для отображения групповой информации о группах или пользователях. Чтобы отобразить группы, в которых состоит человек, передайте имя его учетной записи пользователя в командной строке. В Fedora и Manjaro не забудьте использовать lid вместо libuser-lid .

 sudo libuser-lib Дэйв 

Использование libuser-lid для отображения групп, членом которых является пользователь dave.

Чтобы просмотреть членов группы, используйте параметр -g (группа) вместе с названием группы.

 sudo libuser-lid -g команда разработчиков 

использование libuser-lid для вывода списка членов группы разработчиков

И вот, пользователь по имени «Фрэнсис» появился в списке. Это первый раз, когда мы видим его. Его нет в списке «/etc/group», и getent его тоже не обнаружил.

Давайте посмотрим на нескольких пользователей с командой groups .

 группы Эбигейл
 группы Хайден
 группы Фрэнсис 

Использование команды groups для выбора пользователей

  • Пользователь «abigail» находится в группе под названием «abigail» и двух других группах, «resteam» и «devteam».
  • Пользователь «hayden» состоит в группе под названием «hayden» и двух других группах, «pvqteam» и «docteam».
  • Пользователь «francis» находится в одной группе, группе «devteam». Примечательно, что они не входят в группу под названием «Фрэнсис».
Добавить пользователя в группу (или вторую группу) в Linux
СВЯЗАННЫЕ Добавление пользователя в группу (или вторую группу) в Linux

Мы знаем, что каждый пользователь должен быть членом основной группы и что по умолчанию основная группа имеет GID и имя, совпадающие с UID пользователя и именем учетной записи. Казалось бы, что-то не так с пользователем «Фрэнсис».

Давайте воспользуемся командой id и посмотрим, что нам говорят UID и GID.

 ID Эбигейл
 ID Фрэнсис 

Использование команды id для пользователей abigail и francis

Пользователь «abigail» имеет UID 1002 и GID 1002. Они находятся в трех группах, одна из которых называется «abigail». Он имеет GID 1002. Это их основная группа по умолчанию .

Пользователь «francis» имеет GID 1019, что соответствует GID группы «devteam». Этому пользователю либо была назначена новая основная группа, либо группа «devteam» была установлена ​​в качестве его основной группы при добавлении этого пользователя в систему.

Кто бы это ни был, только libuser-lid обнаружил их и сообщил об их присутствии в группе «devteam».

Дьявол в деталях

Поэтому важно видеть подлинные детали.

Группы — отличный способ организовать совместную работу, если вы знаете, с кем вы ее открываете.

СВЯЗАННЫЕ С: Как изменить данные пользователя с помощью chfn и usermod в Linux