Gibt es einen Befehl zum Auflisten aller Unix-Gruppennamen? [geschlossen]

615

Ich weiß, dass es die /etc/groupDatei gibt, in der alle Benutzergruppen aufgelistet sind.

Ich würde gerne wissen, ob es einen einfachen Befehl gibt, um alle Benutzergruppennamen aufzulisten, obwohl die weltweit lesbare /etc/groupDatei analysiert wurde . Ich bin bereit, eine Administrator-Webseite zu erstellen, auf der die Gruppennamen der Linux-Konten aufgeführt sind.

Cavila
quelle
6
Bisher versuchte er stackoverflow.com/questions/14059916/…
ott--
2
"Ich bin bereit, eine Webseite zu erstellen, auf der Linux-Benutzer aufgelistet sind" - welches Problem versuchen Sie zu lösen? Dies klingt nach etwas, das einige Sicherheitsprobleme verursachen kann (Anzeigen der Benutzerliste, Anzeigen von Anmeldeinformationen).
Ich habe versucht, ein einfaches Beispiel zu geben. Ich möchte eine "Administrator-System-Webseite zum Auflisten der aktuellen Linux-Kontonamen" öffnen. Unter Linux konnte ich Befehle finden, um einen Benutzer hinzuzufügen, einen Benutzer zu entfernen, einen Benutzer zu ändern, die Gruppen eines bestimmten Benutzers zu finden, aber keinen Befehl zum Suchen eines Benutzers nach Namensfragmenten finden. Ich denke, die Frage ist nicht so irrelevant. Alles, was ich tun konnte, um mich an ein Linux-Gruppenkonto zu erinnern, war eine Suche in der Datei / etc / group
durchzuführen

Antworten:

871

Verwenden Sie diesen Befehl, um alle lokalen Gruppen aufzulisten, denen Benutzer zugewiesen sind:

cut -d: -f1 /etc/group | sort

Weitere Info-> Unix - Gruppen , Cut - Befehl , Befehl sort

Arpit
quelle
3
Ja, MichaelIT hat Recht. Der Befehl groups hat nicht alle Gruppen aufgelistet. Ich habe dies gefragt, weil ich nicht sicher bin, ob es einen einfachen Befehl wie Gruppen gibt, um alle Gruppennamen aufzulisten, oder sogar einen Schalter wie Gruppen [-a | --all], um alle Systemgruppen aufzulisten, ohne einen Dateiscan durchzuführen.
Cavila
1
ok also für den Moment ist die Antwort NEIN. Sie müssen die Textbearbeitung verwenden, um die Gruppendatei zu filtern.
Cavila
3
Was ist "cut -d: -f1"?
Zed
5
@zed cutist ein weiterer Befehl, der die spezifische Spalte aus einer Eingabe extrahiert. Hier extrahiere ich Feld 1, wo Felder durch:
Arpit
267

Wenn Sie möchten, dass alle Gruppen dem System bekannt sind, würde ich empfehlen, getent groupanstatt zu analysieren /etc/group:

getent group

Der Grund dafür ist, dass Gruppen auf vernetzten Systemen möglicherweise nicht nur aus /etc/groupDateien lesen , sondern auch über LDAP oder Gelbe Seiten abgerufen werden (die Liste der bekannten Gruppen stammt aus der lokalen Gruppendatei plus Gruppen, die in diesen Fällen über LDAP oder YP empfangen wurden).

Wenn Sie nur die Gruppennamen möchten, können Sie Folgendes verwenden:

getent group | cut -d: -f1
dasup
quelle
7
Für einige Anwendungsfälle kann eine sortierte Liste von Gruppennamen vorzuziehen sein:getent group | cut -d: -f1 | sort
user1364368
2
Wenn nummerierte Zeilen erwünscht sind, tun Sie dies getent group | cut -d: -f1 | sort | cat -n.
MLC
Toller Punkt für vernetzte Systeme wie LDAP!
Maziyar
50

Verwenden Sie unter Linux, MacOS und Unix Folgendes, um die Gruppen anzuzeigen, zu denen Sie gehören:

id -Gn

Dies entspricht einem groupsDienstprogramm, das unter Unix veraltet ist (gemäß Unix-Handbuch ).

Unter MacOS und Unix wird der Befehl id -pfür normale interaktive Aktionen empfohlen.

Erläuterung der Parameter:

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

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

-p - Machen Sie die Ausgabe lesbar.

Kenorb
quelle
10
Und id -Gn someusernamegibt die Liste der Gruppen für den angegebenen Benutzer zurück.
grimmig
6
id -Gnz | xargs -0 -I% echo %listet jede Gruppe in einer separaten Zeile auf. Dies ist nützlich, wenn die Gruppennamen Leerzeichen enthalten.
Mark Lakata
1
Wie ist groupsveraltet? Irgendwelche Quellen? Ich suchte nach "Unix-Gruppenbefehl veraltet", fand aber nichts.
Franklin Yu
1
@FranklinYu Es ist in der BSD-Handbuchseite fürgroups .
Kenorb
3
Beantworten Sie die ursprüngliche Frage zu Gruppen außerhalb des aktuellen Benutzers.
Nein,