OP formulierte die Frage, um die Verwendung des Befehls groups auszuschließen . Da dies Teil von coreutils unter Linux ist, wurde entweder (a) es entfernt oder (b) OP gibt den Namen falsch ein.
OP könnte groups
zum Beispiel so verwendet werden:
for name in $(cut -d: -f1 /etc/passwd);do groups $name|grep -w sudo|awk '{print $1;}';done
Eine vorgeschlagene Antwort ist nur grep's für den Gruppennamen in /etc/group
. Manchmal funktioniert das wie vorgesehen.
Eine etwas bessere Verwendung von grep berücksichtigt die Syntax von /etc/group
:
group_name:password:GID:user_list
so dass nur der Teil vor dem ersten Doppelpunkt ein gültiger Gruppenname ist. Ein einfaches Greifen ohne Rücksicht auf die Syntax kann (und wird) irreführende Übereinstimmungen aus der Datei abrufen. Verwenden Sie reguläre Ausdrücke, damit grep genau den Anforderungen entspricht:
grep -E '^users:' /etc/group |sed -e 's/^.*://'
oder mit einer Shell-Variablen:
grep -E '^'$groupname':' /etc/group |sed -e 's/^.*://'
Hier werden jedoch nur diejenigen aufgelistet, die keiner Standardgruppe angehören . So fügen Sie diejenigen , müssen Sie die Kennwortdatei berücksichtigen, beispielsweise durch die Gruppen-ID - Nummer von Extrahieren /etc/group
und Drucken der Benutzer , deren Standard - Gruppenspiele aus /etc/passwd
, zum Beispiel,
grp=$(awk -F: '$1 ~ /^users$/ {print $3; }' </etc/group)
awk -F: '$4 ~ /^'$grp'$/ { print $1; }' </etc/passwd
Sie können dasselbe auch mit grep und sed machen, aber es ist mehr Arbeit als mit awk.
Eine andere vorgeschlagene Antwort schlug die Verwendung vor getent
, die sich wahrscheinlich auch auf einem Linux-Rechner befindet (zusammen mit Debian ist sie Teil von GNU libc). Eine schnelle Überprüfung zeigt jedoch, dass nur der /etc/group
Inhalt bereitgestellt wird.
Ich habe (wie die meisten) keine libusers
oder keine lid
installiert, daher kann ich nicht beurteilen, ob sie die Bedingungen von OP erfüllen.
Es gibt auch das id
Programm, das Gruppeninformationen gibt. Jemand könnte darauf als mögliche Antwort eingehen.
groups
Befehl. Es ist unwahrscheinlich, dass Sie es nicht unter Linux haben, da es Teil von coreutils ist.