Как узнать, к какой группе относится данный пользователь?

256

В Unix / Linux, как вы узнаете, в какую группу входит данный пользователь через командную строку?

Алекс Арго
источник
23
Чтобы получить обратное, посмотрите, кто входит в данную группу, вы можете использовать getent group <groupname>.
иконоборчество
1
@iconoclast: в этом списке нет пользователей, принадлежащих к группе, в / etc / passwd.
user2284570 13.12.15

Ответы:

102

Этот показывает uid пользователя, а также все группы (с их gid), к которым он принадлежит

id userid
Пол Томблин
источник
2
Похоже, это очень полезно. Он содержит более подробный вывод, чем команда 'groups', поэтому, если вам нужен идентификатор группы / идентификатор пользователя, используйте это!
Алекс Арго
Это должен быть самый подробный и правильный ответ, имейте upvote!
Харви Лин
16

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

id -Gn [user]

которая эквивалентна groups [user]утилите, которая устарела в Unix.

На OS X / Unix, команда id -p [user]предлагается для обычного интерактивного.

Пояснения по параметрам:

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

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

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

kenorb
источник
0

или просто изучите / etc / groups (хорошо, это, вероятно, не работает, если он использует pam с ldap)

Nils
источник
7
Действительно, это плохой ответ. «getent group» лучше.
bortzmeyer
0

Ниже приведен скрипт, который интегрирован в ANSIBLE и генерирует панель мониторинга в формате CSV.

sh collection.sh

#!/bin/bash

HOSTNAME=`hostname -s`

for i in `cat /etc/passwd| grep -vE "nologin|shutd|hal|sync|root|false"|awk -F':' '{print$1}' | sed 's/[[:space:]]/,/g'`; do groups $i; done|sed s/\:/\,/g|tr -d ' '|sed -e "s/^/$HOSTNAME,/"> /tmp/"$HOSTNAME"_inventory.txt

sudo cat /etc/sudoers| grep -v "^#"|awk '{print $1}'|grep -v Defaults|sed '/^$/d;s/[[:blank:]]//g'>/tmp/"$HOSTNAME"_sudo.txt

paste -d , /tmp/"$HOSTNAME"_inventory.txt /tmp/"$HOSTNAME"_sudo.txt|sed 's/,[[:blank:]]*$//g' >/tmp/"$HOSTNAME"_inventory_users.txt

Мой вывод хранится в текстовых файлах ниже.

cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
namasivayam.cse
источник