So listen Sie alle Benutzer in einer Gruppe unter Linux auf
Veröffentlicht: 2022-08-29Unter 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
Die meisten Einträge ganz oben in der Liste haben keine Mitglieder, obwohl die Gruppe „adm“ zwei und die Gruppe „cdrom“ eines hat.
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 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.
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
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
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.
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
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
Auf Manjaro wird libuser
vom AUR installiert, daher müssen Sie Ihren bevorzugten AUR-Helfer verwenden. Wir haben yay
verwendet.
ja liber
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
Um die Mitglieder einer Gruppe anzuzeigen, verwenden Sie die Option -g
(Gruppe) zusammen mit dem Namen der Gruppe.
sudo libuser-lid -g devteam
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
- 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.
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
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