So listen Sie alle Benutzer in einer Gruppe unter Linux auf

Veröffentlicht: 2022-08-29
Linux-Laptop mit einer Bash-Eingabeaufforderung
fatmawati achmad zaenuri/Shutterstock.com

Unter Linux haben Dateien drei Berechtigungssätze. Ein Satz ist für die Gruppe der Datei. Bevor Sie einer Gruppe eine Datei zuweisen, sollten Sie prüfen, wer die Gruppenmitglieder sind.

Datei- und Verzeichnisberechtigungen

Dateien und Verzeichnisse unter Linux haben eine Reihe von Berechtigungen für den Eigentümer, eine andere Gruppe für die Gruppe, der die Datei zugewiesen ist, und Berechtigungen für alle, die nicht in einer der beiden vorherigen Kategorien sind.

Jeder Berechtigungssatz definiert, ob die Mitglieder dieser Kategorie die Datei lesen, schreiben oder ausführen können. Im Fall eines Verzeichnisses entspricht die Ausführungsaktion der Möglichkeit, in das Verzeichnis zu cd .

Die Standardgruppe für eine Datei oder ein Verzeichnis ist die Standardgruppe des Eigentümers. Das ist normalerweise die Person, die es erstellt hat. Die Gruppenberechtigungen werden verwendet, um einer Sammlung von Benutzern kontrollierten Zugriff auf die Dateien und Verzeichnisse der anderen Mitglieder dieser Gruppe zu ermöglichen.

Beispielsweise haben Sie möglicherweise ein Team von Entwicklern, ein Dokumentationsteam, ein Forschungsteam und so weiter. Die Mitglieder jedes Teams können einer entsprechend benannten Gruppe hinzugefügt werden, um die Zusammenarbeit zu unterstützen. Benutzer können in mehreren Gruppen gleichzeitig sein.

Es ist ein einfaches, aber robustes Schema. Aber wenn Ihre Dateien vertraulich sind, fühlen Sie sich vielleicht glücklicher, wenn Sie überprüfen, wer die Mitglieder der Gruppe sind, bevor Sie Ihre Arbeit mit ihnen teilen. Dazu gibt es verschiedene Möglichkeiten. Aber Achtung. Problematisch sind die beiden am häufigsten empfohlenen Methoden.

VERWANDT: So verwenden Sie den Befehl chgrp unter Linux

Die /etc/groups-Datei

Die Datei „/etc/group“ enthält eine durch Doppelpunkte „ : “ getrennte Liste von Gruppen und Gruppenmitgliedern. Jede Zeile hat vier Felder.

  • Name : Der eindeutige Name der Gruppe.
  • Passwort : Nicht verwendet. Dies wird immer "x" enthalten.
  • Gruppen-ID : Die eindeutige Gruppenkennung.
  • Users : Eine durch Kommas getrennte Liste der Mitglieder der Gruppe. Die Liste ist normalerweise für System- und Daemon-Konten leer.

Um den Inhalt der Datei in das Terminalfenster zu übertragen, können Sie cat verwenden, aber es ist bequemer, mit less durch den Inhalt der Datei scrollen zu können.

 weniger /etc/group 

Verwenden von cat, um den Inhalt der Datei /etc/group anzuzeigen

Die meisten Einträge ganz oben in der Liste haben keine Mitglieder, obwohl die Gruppe „adm“ zwei und die Gruppe „cdrom“ eines hat.

Der erste Teil der Datei /etc/groups im Less-Dateibetrachter

Wenn wir herausfinden möchten, in welchen Gruppen sich ein bestimmter Benutzer befindet, können wir mit grep nach Einträgen mit seinem Benutzerkontonamen suchen. Das ist nicht unsere Aufgabe. Wir möchten jeden sehen, der Mitglied einer Gruppe ist, nicht die Gruppen, denen eine Person angehört. Aber es ist lehrreich für uns, einen Blick darauf zu werfen.

 grep "dave" /etc/group 

Die Liste der Gruppen, in denen Benutzer dave Mitglied ist

Die Einträge, die den String „dave“ enthalten, werden uns aufgelistet. Und dazwischen verbirgt sich ein Zeichen dafür, dass die Dinge vielleicht nicht so einfach sind, wie wir dachten.

Wenn ein Benutzer zu Linux hinzugefügt wird, besteht die Standardaktion darin, ihn in einer Gruppe mit demselben Namen wie sein Benutzerkonto zu platzieren. Dies ist ihre primäre Gruppe. Alle anderen Gruppen, denen sie hinzugefügt werden, werden als sekundäre Gruppen bezeichnet.

Das Problem besteht darin, dass Benutzer nicht als Mitglieder ihrer primären Gruppen aufgeführt werden. Deshalb zeigt die Gruppe „dave“ keine Mitglieder an, obwohl der Benutzer „dave“ Mitglied dieser Gruppe ist.

Natürlich können Systemadministratoren die primäre Gruppe jedes Benutzers in die einer beliebigen anderen Gruppe ändern. Das bedeutet, dass ein Benutzer Mitglied einer beliebigen Gruppe sein kann, aber nicht als solches in der Datei „/etc/group“ aufgeführt wird. Das ist ein Problem.

Das zweite Problem ist, dass die „/etc/group“-Datei keine Single Source of Truth ist. Moderne Linux-Installationen speichern möglicherweise Benutzer- und Gruppeninformationen an mehr Stellen als „/etc/passwd“ und „/etc/group“, insbesondere in Unternehmenssituationen, in denen Dienste wie das Lightweight Directory Access Protocol bereitgestellt werden. Wenn Sie nur an einer Stelle suchen, sehen Sie möglicherweise nicht das große Ganze.

In unserem Testszenario haben wir vier Gruppen für eine Entwicklungsabteilung erstellt. Sie sind:

  • resteam : Das Forschungsteam.
  • devteam : Das Entwicklungsteam.
  • pvqteam : Das Produktprüfungs- und Qualitätsteam.
  • docteam : Das Dokumentationsteam.

Wir haben diesen Teams Personen hinzugefügt. Manche Leute sind in mehr als einem Team. Wenn wir die Datei „/etc/group“ in less öffnen und zum Ende der Datei scrollen, sehen wir die neuen Gruppen und Gruppenmitglieder. Mindestens so viele Mitglieder, wie die Datei „/etc/group“ kennt.

Das Ende der Datei /etc/group im Less-Dateibetrachter

Wenn wir eine einzelne Gruppe extrahieren möchten, können wir mit grep suchen. Das Caretzeichen „ ^ “ repräsentiert den Beginn einer Zeile.

 grep "^devteam" /etc/group 

Verwenden von grep zum Extrahieren der Mitglieder für eine einzelne Gruppe

Dadurch wird der Eintrag „devteam“ aus der Datei extrahiert und alle Gruppenmitglieder aufgelistet. Oder doch?

Der getent-Befehl

Der Befehl getent prüft mehrere Datenbanken auf Benutzergruppeninformationen, nicht nur „/etc/group“. Wir verwenden getent , um uns die Benutzergruppen anzuzeigen.

 Getent-Gruppe 

Verwendung von getent zum Auflisten aller definierten Gruppen

Die Verwendung getent mit der Option group führt auf dieser Testmaschine zu denselben Ergebnissen wie die Verwendung der Datei „/etc/group“. Das liegt daran, dass wir kein LDAP oder einen anderen zentralisierten Namensdienst verwenden. Es gibt also keine anderen Quellen, auf die getent verweisen kann.

Die Ausgabe von getent group zeigt die Gruppen und Mitglieder

Kein Wunder also, dass die Ergebnisse mit denen aus der Datei „/etc/group“ übereinstimmen. Vielleicht ist das, was wir sehen, wirklich die Realität der Situation. Vielleicht ist alles einfach und – auf diesem Computer – ist das, was Sie sehen, das, was Sie bekommen? Behalten wir uns ein Urteil darüber vor.

Der getent Befehl kann für uns eine einzelne Gruppe betrachten. Wir sehen uns die Gruppe „devteam“ an.

 Getent-Gruppe devteam 

Verwenden von getent group zum Extrahieren der Details einer einzelnen Gruppe

Wir erhalten genau die gleichen Ergebnisse wie zuvor. Es gibt jedoch eine Möglichkeit, tiefer zu graben.

VERWANDT: So listen Sie Benutzer in Linux auf

Der Deckelbefehl

Der Befehl lid ist Teil der libuser Werkzeugsammlung. Es war bereits auf unserem Fedora 36-Testcomputer installiert, musste aber auf den Ubuntu 22.04- und Manjaro 21-Computern installiert werden.

Außerdem heißt der Befehl unter Fedora und Manjaro lid , aber unter Ubuntu müssen Sie libuser-lid verwenden.

Um den Befehl unter Ubuntu zu installieren, geben Sie Folgendes ein:

 sudo apt install libuser 

libuser auf Ubuntu installieren

Auf Manjaro wird libuser vom AUR installiert, daher müssen Sie Ihren bevorzugten AUR-Helfer verwenden. Wir haben yay verwendet.

 ja liber 

libuser auf Manjaro installieren

Sie können libuser-lid verwenden, um Gruppeninformationen über Gruppen oder Benutzer anzuzeigen. Um die Gruppen anzuzeigen, in denen sich eine Person befindet, übergeben Sie ihren Benutzerkontonamen in der Befehlszeile. Denken Sie bei Fedora und Manjaro daran, lid anstelle von libuser-lid zu verwenden.

 sudo libuser-lib dave 

Verwenden von libuser-lid, um die Gruppen anzuzeigen, in denen Benutzer dave Mitglied ist

Um die Mitglieder einer Gruppe anzuzeigen, verwenden Sie die Option -g (Gruppe) zusammen mit dem Namen der Gruppe.

 sudo libuser-lid -g devteam 

Verwenden Sie libuser-lid, um die Mitglieder der devteam-Gruppe aufzulisten

Und siehe da, ein Benutzer namens „Francis“ ist als Mitglied der Liste aufgetaucht. Das ist das erste Mal, dass wir ihn sehen. Er ist nicht in „/etc/group“ gelistet und getent hat ihn auch nicht entdeckt.

Sehen wir uns einige Benutzer mit dem Befehl groups .

 Gruppen abigail
 Gruppen Hayden
 Gruppen Franz 

Verwenden des Gruppenbefehls für eine Auswahl von Benutzern

  • Benutzer „abigail“ ist in einer Gruppe namens „abigail“ und zwei weiteren Gruppen, „resteam“ und „devteam“.
  • Der Benutzer „hayden“ befindet sich in einer Gruppe namens „hayden“ und zwei weiteren Gruppen, „pvqteam“ und „docteam“.
  • Benutzer „francis“ ist in einer einzelnen Gruppe, der „devteam“-Gruppe. Es ist bemerkenswert, dass sie nicht zu einer Gruppe namens „Francis“ gehören.
Hinzufügen eines Benutzers zu einer Gruppe (oder zweiten Gruppe) unter Linux
RELATED Hinzufügen eines Benutzers zu einer Gruppe (oder zweiten Gruppe) unter Linux

Wir wissen, dass jeder Benutzer Mitglied einer primären Gruppe sein muss und dass die primäre Gruppe standardmäßig eine GID und einen Namen hat, die mit der UID und dem Kontonamen des Benutzers übereinstimmen. Es sieht so aus, als ob etwas mit dem Benutzer „francis“ anders ist.

Lassen Sie uns den id -Befehl verwenden und sehen, was uns die UID und GIDs sagen.

 Ich bin Abigail
 Ich bin Franz 

Verwenden des id-Befehls für die Benutzer abigail und francis

Der Benutzer „abigail“ hat eine UID von 1002 und eine GID von 1002. Sie befinden sich in drei Gruppen, von denen eine „abigail“ heißt. Sie hat eine GID von 1002. Dies ist ihre primäre Standardgruppe .

Der Benutzer „francis“ hat eine GID von 1019, was der GID der Gruppe „devteam“ entspricht. Diesem Benutzer wurde entweder eine neue primäre Gruppe zugewiesen oder die Gruppe „devteam“ wurde als primäre Gruppe festgelegt, als dieser Benutzer dem System hinzugefügt wurde.

Welcher es auch war, nur libuser-lid hat sie entdeckt und ihre Anwesenheit in der „devteam“-Gruppe gemeldet.

Der Teufel steckt im Detail

Daher ist es wichtig, die echten Details zu sehen.

Gruppen sind eine großartige Möglichkeit, um eine Zusammenarbeit einzurichten, solange Sie wissen, mit wem Sie sie eröffnen.

VERWANDT: So ändern Sie Benutzerdaten mit chfn und usermod unter Linux