Чи є команда перелічити всі назви груп Unix? [зачинено]


615

Я знаю, що є /etc/groupфайл, у якому перераховані всі групи користувачів.

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


6
До сих пір він намагався stackoverflow.com/questions/14059916 / ...
ott--

2
"Я готовий створити веб-сторінку, яка містить список користувачів Linux" - яку проблему ви намагаєтеся вирішити? Це звучить як щось, що може спричинити деякі проблеми із безпекою (викриття списку користувачів, відкриття облікових даних).

Я намагався дати простий приклад. Я хотів би відкрити "веб-сторінку системи адміністратора, щоб перелічити поточні назви облікових записів Linux". У Linux я міг знайти команди, щоб додати користувача, видалити користувача, змінити користувача, знайти групи певного користувача, але не знайшов команди для пошуку користувача за фрагментом імені. Я вважаю, що питання не настільки неактуальне. Все, що я міг зробити, щоб запам'ятати груповий обліковий запис Linux - це зробити пошук у файлі / etc / group
cavila

Відповіді:


871

Щоб перерахувати всі локальні групи, яким призначені користувачі, скористайтеся цією командою:

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

Для отримання додаткової інформації-> Unix групи , команда Cut , сортування команди


3
Так правильно MichaelIT, команда груп не перелічила всіх груп. Я запитав це, тому що не знаю, чи є така проста команда, як групи, що перелічує всі назви груп або навіть питома вага до неї, як групи [-a | - всі], щоб перелічити всі системні групи, не роблячи сканування файлів.
cavila

1
ок, поки що відповідь НІ. Для фільтрування файлів групи потрібно редагувати текст.
cavila

3
Що таке "cut -d: -f1"?
зед

5
@zed cut- ще одна команда, яка витягує певний стовпець із вхідних даних. Тут я видобуваю поле 1, де поля розмежовані:
Arpit

267

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

getent group

Причина полягає в тому, що в мережевих системах групи можуть не тільки читати з /etc/groupфайлу, але й отримувати їх через LDAP або Yellow Pages (список відомих груп походить з файлу локальної групи плюс групи, отриманих через LDAP або YP у цих випадках).

Якщо ви хочете лише імена груп, ви можете використовувати:

getent group | cut -d: -f1

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 - Зробити результат, зрозумілим для людини.


10
І id -Gn someusernameповертає список груп для вказаного користувача.
похмурий

6
id -Gnz | xargs -0 -I% echo %перерахує кожну групу в окремому рядку. Це корисно, якщо в назвах груп є пробіли.
Марк Лаката

1
Як groupsзастаріло? Будь-які джерела? Я шукав застарілу команду unix груп, але нічого не знайшов.
Франклін Ю


3
Дайте відповідь на оригінальне запитання, що стосується груп поза поточним користувачем.
Най
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.