Lösung 1:
Alle Benutzer:
$ getent passwd
Alle Gruppen:
$ getent group
Alle Gruppen mit einem bestimmten Benutzer:
$ getent group | grep username
Lösung 2:
Benutzer und ihre Gruppen auflisten:
for user in $(awk -F: '{print $1}' /etc/passwd); do groups $user; done
Gruppen und ihre Benutzer auflisten:
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
Lösung 3:
Wenn Sie sich nicht um entfernte Benutzer wie LDAP oder NIS kümmern, 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
Lösung 4:
Alle Benutzer auflisten
cut -d':' -f 1 /etc/passwd
Oder
awk -F ':' '{print $1}' /etc/passwd
Während cat /etc/passwd zeigt alle Benutzer (und ein paar andere Sachen), cut -d ':' -f 1 ist eine einfache Möglichkeit, jede Zeile mit ':' als Trennzeichen zu teilen und nur das erste Feld (Benutzer) zu extrahieren. So ziemlich das Gleiche wie die awk-Version.
Alle Gruppen auflisten
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 einfach /etc/group stattdessen.
Ein anderer interessanter Weg, vielleicht näher an dem, was OP wollte, ist compgen . Nicht sicher über Kompatibilitätsprobleme.
compgen -u
compgen -g