Есть ли команда для перечисления всех имен групп Unix? [закрыто]

615

Я знаю, что есть /etc/groupфайл, в котором перечислены все группы пользователей.

Я хотел бы знать, есть ли простая команда, чтобы вывести список всех имен групп пользователей, несмотря на разбор /etc/groupфайла, читаемого в мире . Я хочу создать веб-страницу администратора, которая перечисляет имена групп учетных записей Linux.

cavila
источник
6
Пока что он попробовал stackoverflow.com/questions/14059916/…
ott--
2
«Я готов создать веб-страницу со списком пользователей Linux» - какую проблему вы пытаетесь решить? Это похоже на то, что может вызвать некоторые проблемы с безопасностью (раскрытие списка пользователей, раскрытие учетных данных).
Я пытался привести простой пример. Я хотел бы открыть "веб-страницу системы администратора, чтобы перечислить имена текущих учетных записей Linux". В Linux я мог найти команды для добавления пользователя, удаления пользователя, изменения пользователя, поиска групп данного пользователя, но не нашел команды для поиска пользователя по фрагменту имени. Я думаю, что вопрос не так не имеет значения. Все, что я мог сделать, чтобы запомнить групповую учетную запись Linux, это сделать поиск в файле / etc / group
cavila

Ответы:

871

Чтобы получить список всех локальных групп, которым назначены пользователи, используйте эту команду:

cut -d: -f1 /etc/group | sort

Для более инфоэтики> группы Unix , Cut команды , команда сортировки

Arpit
источник
3
Да, MichaelIT прав: команда groups не перечислила все группы. Я спросил об этом, потому что не уверен, существует ли простая команда, такая как группы, чтобы вывести список всех имен групп, или даже что-то похожее на нее, например группы [-a | --all], чтобы вывести все системные группы без сканирования файлов.
кавила
1
Хорошо, пока ответ НЕТ. Нужно использовать текстовое редактирование для фильтрации группового файла.
кавила
3
Что такое "cut -d: -f1"?
zed
5
@zed cut- это другая команда, которая извлекает определенный столбец из входных данных. Здесь я извлекаю поле 1, где поля разделены:
Arpit
267

Если вы хотите, чтобы все группы были известны системе, я бы рекомендовал использовать getent groupвместо разбора /etc/group:

getent group

Причина в том, что в сетевых системах группы могут не только читать из /etc/group файла, но также получать через LDAP или «Желтые страницы» (список известных групп происходит из файла локальной группы плюс группы, полученные в этих случаях через LDAP или YP).

Если вам нужны только имена групп, вы можете использовать:

getent group | cut -d: -f1
dasup
источник
7
Для некоторых случаев предпочтительным может быть отсортированный список имен групп:getent group | cut -d: -f1 | sort
user1364368
2
Если нумерованные строки желательны, делайте getent group | cut -d: -f1 | sort | cat -n.
MLC
Отличный момент для сетевых систем, таких как LDAP!
Мазияр
50

В Linux, macOS и Unix для отображения групп, к которым вы принадлежите, используйте:

id -Gn

которая эквивалентна groupsутилите, которая устарела в Unix (согласно руководству Unix ).

В macOS и Unix эта команда id -pпредлагается для обычного интерактивного взаимодействия.

Объяснение параметров:

-G, --groups- печать всех идентификаторов групп

-n, --name- напечатайте имя вместо числа, для-ugG

-p - Сделайте вывод удобочитаемым.

kenorb
источник
10
И id -Gn someusernameвозвращает список групп для указанного пользователя.
мрачный
6
id -Gnz | xargs -0 -I% echo %перечислит каждую группу в отдельной строке. Это полезно, если в именах групп есть пробелы.
Марк Лаката
1
Как groupsустарел? Есть источники? Я искал "устаревшие команды unix groups", но ничего не нашел.
Франклин Ю
1
@FranklinYu Это на странице руководства BSD дляgroups .
Кенорб
3
Doest ответить на оригинальный вопрос, относящийся к группам за пределами текущего пользователя.
Нет