Wie finde ich heraus, welche Gruppe ein bestimmter Benutzer hat?

256

Wie können Sie unter Unix / Linux über die Befehlszeile herausfinden, in welcher Gruppe sich ein bestimmter Benutzer befindet?

Alex Argo
quelle
23
Um das Gegenteil zu erreichen, sehen Sie, wer zu einer bestimmten Gruppe gehört getent group <groupname>.
Bilderstürmer
1
@iconoclast: Hier werden keine Benutzer aufgelistet, die zur Gruppe in / etc / passwd gehören.
user2284570

Antworten:

370
groups

oder

groups user
Bombe
quelle
102

Dieser zeigt die UID des Benutzers sowie alle Gruppen (mit ihren Gids), zu denen sie gehören

id userid
Paul Tomblin
quelle
2
Dies scheint auch ziemlich nützlich zu sein. Es hat eine ausführlichere Ausgabe als der Befehl 'groups'. Wenn Sie also die Gruppen-ID / Benutzer-ID benötigen, verwenden Sie diese!
Alex Argo
Dies sollte die detaillierteste und korrekteste Antwort sein, haben Sie eine positive Bewertung!
Harvey Lin
16

Verwenden Sie unter Linux / OS X / Unix Folgendes, um die Gruppen anzuzeigen, zu denen Sie (oder der optional angegebene Benutzer) gehören:

id -Gn [user]

Dies entspricht einem groups [user]Dienstprogramm, das unter Unix veraltet ist.

Unter OS X / Unix wird der Befehl id -p [user]für normale interaktive Aktionen empfohlen.

Erläuterung zu den Parametern:

-G, --groups- Alle Gruppen-IDs drucken

-n, --name- drucke einen Namen anstelle einer Nummer, z-ugG

-p - Machen Sie die Ausgabe lesbar.

Kenorb
quelle
0

oder einfach studieren / etc / groups (ok das funktioniert wahrscheinlich nicht, wenn es pam mit ldap verwendet)

Nils
quelle
7
Das ist in der Tat eine schlechte Antwort. 'getent group' ist eine bessere.
Bortzmeyer
0

Unten finden Sie das Skript, das in ansible integriert ist und ein Dashboard im CSV-Format generiert.

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

Meine Ausgabe wird in den folgenden Textdateien gespeichert.

cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
namasivayam.cse
quelle