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?


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:



102

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

id userid

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.


0

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.