it-swarm.com.de

Zeigen Sie alle Benutzer und ihre Gruppen an / umgekehrt

Ich weiß, dass ich bereits Gruppen und Benutzer habe, bin mir aber über deren Zuordnung nicht sicher. Gibt es einen Shell-Befehl, mit dem ich alle Benutzer oder alle Gruppen auflisten kann, und einen Befehl, um alle Gruppen/Benutzer für einen bestimmten Benutzer/eine bestimmte Gruppe aufzulisten?

So etwas wie showusers würde alle Benutzer auflisten und showgroups -u thisuser würde alle Gruppen anzeigen, die thisuser enthalten.

75
Steve Robbins

Alle Nutzer:

$ getent passwd

Alle Gruppen:

$ getent group

Alle Gruppen mit einem bestimmten Benutzer:

$ getent group | grep username
100
EEAA

Benutzer und ihre Gruppen auflisten:

for user in $(awk -F: '{print $1}' /etc/passwd); do groups $user; done

Listen Sie Gruppen und ihre Benutzer auf:

cat /etc/group | awk -F: '{print $1, $3, $4}' | while read group gid members; do
    members=$members,$(awk -F: "\$4 == $gid {print \",\" \$1}" /etc/passwd);
    echo "$group: $members" | sed 's/,,*/ /g';
done
18
nohup

Wenn Sie sich nicht für Remotebenutzer wie LDAP oder NIS interessieren, können Sie Benutzer und ihre zugehörigen Gruppen auf einfache Weise auflisten:

cut -d: -f1 /etc/passwd | xargs groups

Ausgabe;

root : root
myuser : root www-data Fuse 
anotheruser : anotheruser   cdrom floppy audio dip video plugdev scanner bluetooth netdev
5
Fredrick Gauss

Listen Sie alle Benutzer auf

cut -d':' -f 1 /etc/passwd

Oder

awk -F ':' '{print $1}' /etc/passwd

Während cat/etc/passwd alle Benutzer (und eine Reihe anderer Dinge) anzeigt, ist cut -d ':' -f 1 eine einfache Möglichkeit, jede Zeile mit zu teilen ':' als Trennzeichen und extrahiere nur das erste Feld (Benutzer). So ziemlich das gleiche wie die awk-Version.

Listen Sie alle Gruppen auf

cut -d':' -f 1 /etc/group

Oder

awk -F ':' '{print $1}' /etc/group

Ratet mal, was dem Auflisten von Benutzern sehr ähnlich ist. Analysieren Sie stattdessen einfach / etc/group.

Ein anderer interessanter Weg, vielleicht näher an dem, was OP wollte, ist compgen. Ich bin mir jedoch nicht sicher, ob Kompatibilitätsprobleme vorliegen.

compgen -u
compgen -g
3
Marcos Valle

Verwenden getent passwd{1000..60000}, um nur manuell hinzugefügte Benutzer aufzulisten. Siehe: https://linuxize.com/post/how-to-list-users-in-linux/

for user in $(getent passwd {1000..60000} |awk -F: '{print $1}');
do 
    groups $user; 
done
0
jschnasse