VMware ESXi and vSphere Cluster Management
Die Datei /etc/group: Linux-Gruppen und Gruppenmitgliedschaften
Lerne Aufbau, Felder und Gruppenmitgliedschaften in /etc/group kennen. Mit Beispielen, getent-Abfragen und sicheren Verwaltungsbefehlen.
/etc/group ist eine lokale Linux-Systemdatei zur Definition von Gruppen. Sie enthält pro Zeile einen Gruppeneintrag mit Gruppenname, numerischer Gruppen-ID und einer Liste ausdrücklich eingetragener Benutzer. Gruppen bündeln Benutzerkonten, damit gemeinsame Dateiberechtigungen und andere Zugriffsregeln vergeben werden können.
Dieser Beitrag setzt Grundkenntnisse zu Linux-Benutzern, Dateipfaden, Unix-Berechtigungen und administrativen Befehlen voraus.
Aufgabe von /etc/group
Die Datei /etc/group ist eine einfache Textdatei. Jede Zeile beschreibt eine Gruppe. Die lokale Gruppendatenbank kann beispielsweise so aussehen:
root:x:0:
users:x:100:
projektteam:x:5100:alice,bob
Die Datei beschreibt insbesondere:
- den lesbaren Namen einer Gruppe,
- ihre eindeutige numerische Gruppen-ID, kurz GID,
- und die Benutzer, die im Eintrag als zusätzliche Gruppenmitglieder aufgeführt sind.
Direkt in /etc/group stehen lokale Einträge. Ein Linux-System kann jedoch zusätzlich andere Quellen für Gruppeninformationen verwenden, etwa über die konfigurierte Namensdienst-Auflösung.
Syntax eines Gruppeneintrags
Die allgemeine Syntax lautet:
gruppenname:passwort:gid:mitgliederliste
Die vier Felder werden durch Doppelpunkte getrennt. Auch ein leeres Feld muss durch seine Trennzeichen an der richtigen Position erhalten bleiben. Ein Eintrag ohne explizite zusätzliche Mitglieder endet daher mit einem Doppelpunkt:
projektteam:x:5100:
Die vier Felder haben folgende Bedeutung:
| Position | Feld | Beispielwert | Bedeutung |
|---|---|---|---|
| 1 | Gruppenname | projektteam | Lesbare textuelle Bezeichnung der Gruppe. |
| 2 | Passwort- oder Platzhalterfeld | x | Historisches beziehungsweise optionales Gruppenpasswortfeld. Moderne Systeme verwenden typischerweise einen Platzhalter; geschützte Gruppeninformationen können in /etc/gshadow stehen. |
| 3 | GID | 5100 | Numerische Gruppen-ID, die die Gruppe eindeutig identifiziert. |
| 4 | Mitgliederliste | alice,bob | Kommaseparierte Liste zusätzlicher Gruppenmitglieder. |
1. Gruppenname
Der Gruppenname ist die lesbare Bezeichnung, unter der Benutzer und Administratoren die Gruppe erkennen. In einem Eintrag wie projektteam:x:5100:alice,bob lautet der Gruppenname projektteam.
2. Passwort- oder Platzhalterfeld
Das zweite Feld stammt aus dem historischen Modell von Gruppenpasswörtern. Auf modernen Linux-Systemen steht dort häufig x oder ein anderer Platzhalter. Sicherheitsrelevante Gruppeninformationen können in der geschützten Begleitdatei /etc/gshadow verwaltet werden. Das Feld sollte nicht als normales Klartextpasswort betrachtet werden.
3. GID
Die GID ist eine numerische Gruppen-ID. Während der Gruppenname für Menschen lesbar ist, verwenden Betriebssystem und Dateisystem intern die numerische ID. In projektteam:x:5100:alice,bob ist 5100 die GID.
4. Mitgliederliste
Das vierte Feld enthält zusätzliche Gruppenmitglieder als kommaseparierte Liste. Leerzeichen gehören nicht zur vorgesehenen Trennung. Der Eintrag
test_group:x:5000:jwilliams,bob
bedeutet:
test_groupist der Gruppenname.xist der Platzhalter im zweiten Feld.5000ist die GID.jwilliamsundbobsind zwei einzelne zusätzliche Mitglieder.
Eine Gruppe ohne explizite zusätzliche Mitglieder kann so aussehen:
projektteam:x:5100:
Das leere vierte Feld bedeutet, dass in diesem Eintrag keine zusätzlichen Mitglieder aufgelistet sind. Die Gruppe kann trotzdem die primäre Gruppe eines Benutzerkontos sein.
Primäre und sekundäre Gruppenmitgliedschaft
Für das Verständnis von /etc/group ist die Unterscheidung zwischen primärer und sekundärer Gruppe entscheidend.
| Art der Mitgliedschaft | Typische Speicherstelle | Bedeutung |
|---|---|---|
| Primäre Gruppe | Benutzerkontoinformationen, gewöhnlich das GID-Feld in /etc/passwd | Standardgruppe eines Benutzerkontos. Neue Dateien des Benutzers erhalten häufig diese Gruppe als Gruppeneigentümer. |
| Sekundäre Gruppe | Mitgliederliste im vierten Feld von /etc/group | Zusätzliche Gruppenmitgliedschaft neben der primären Gruppe. |
Die primäre Gruppen-ID eines Benutzers steht im Benutzerkontoeintrag in /etc/passwd. Deshalb muss ein Benutzer, dessen primäre Gruppe beispielsweise projektteam ist, nicht im vierten Feld des Gruppeneintrags erscheinen.
Mit id lassen sich primäre GID und weitere Gruppen gemeinsam untersuchen:
id BENUTZERNAME
groups BENUTZERNAME
/etc/group auslesen: Datei oder Gruppendatenbank?
Für eine schnelle lokale Kontrolle kann die Datei direkt angezeigt werden:
cat /etc/group
Gezielter ist beispielsweise:
grep '^test_group:' /etc/group
Der Anfang mit ^ und der abschließende Doppelpunkt sorgen dafür, dass nach einem exakten Gruppennamen gesucht wird, statt etwa auch eine Gruppe namens test_group_extra zu finden.
In Umgebungen mit zusätzlichen Namensdiensten ist getent meist die aussagekräftigere Abfrage. Das Werkzeug fragt konfigurierte Namensdienst-Datenbanken ab und nicht nur die lokale Datei:
getent group test_group
Ein direktes Lesen von /etc/group zeigt lokale Einträge. getent group kann dagegen auch Gruppen liefern, die aus weiteren konfigurierten Quellen stammen.
Die primäre GID eines Benutzers kann ebenfalls über die Gruppendatenbank beziehungsweise die Kontodaten geprüft werden:
getent passwd BENUTZERNAME
Gruppen sicher verwalten
Für Änderungen sollten die vorgesehenen Verwaltungswerkzeuge verwendet werden. Sie berücksichtigen wichtige Konsistenzregeln besser als eine händische Bearbeitung der Datei.
Eine Gruppe anlegen
sudo groupadd projektteam
Einen Benutzer zusätzlich hinzufügen
sudo usermod -aG projektteam BENUTZERNAME
Die Kombination aus -a und -G ist wichtig. -a bedeutet „anhängen“. Ohne diese Option können bestehende zusätzliche Gruppen des Benutzers durch die mit -G angegebene Liste ersetzt werden.
Einen Benutzer entfernen
sudo gpasswd -d BENUTZERNAME projektteam
Eine Gruppe umbenennen
sudo groupmod -n neuer_name alter_name
Eine Gruppe löschen
sudo groupdel projektteam
Vor dem Löschen sollte geprüft werden, ob die Gruppe noch als primäre Gruppe eines Kontos verwendet wird oder als Gruppeneigentümer von Dateien und Verzeichnissen vorkommt.
Weitere Verwaltungsaufgaben lassen sich je nach System und Anwendungsfall mit groupmod, groupdel, usermod und gpasswd erledigen.
Warum manuelle Bearbeitung riskant ist
Eine direkte Änderung von /etc/group ist normalerweise nicht nötig und sollte auf kontrollierte Spezialfälle beschränkt bleiben. Ein Syntaxfehler kann dazu führen, dass Gruppen nicht mehr korrekt aufgelöst werden. Vor einer direkten Bearbeitung sind mindestens eine Sicherung und eine sorgfältige Prüfung erforderlich.
- Jede Zeile muss die vier durch Doppelpunkte getrennten Felder in der richtigen Reihenfolge enthalten.
- Mehrere Mitglieder werden durch Kommas, nicht durch Leerzeichen getrennt.
- Leere Felder dürfen nicht dazu führen, dass Trennzeichen entfernt werden.
- Geschützte Begleitinformationen in
/etc/gshadowund die allgemeine Konsistenz der Kontodaten müssen berücksichtigt werden.
Für normale Verwaltungsaufgaben sind groupadd, groupmod, groupdel, usermod und gpasswd die bessere Wahl.
Änderungen und laufende Sitzungen
Nach dem Hinzufügen eines Benutzers zu einer zusätzlichen Gruppe ist die Änderung in bereits laufenden Sitzungen möglicherweise noch nicht sichtbar. Die Gruppen werden häufig beim Anmelden in die Sitzung übernommen. Deshalb sollte sich der Benutzer ab- und wieder anmelden oder eine neue Sitzung starten.
Danach kann die Zuordnung geprüft werden:
id BENUTZERNAME
groups BENUTZERNAME
Fehleranalyse
Der erwartete Zugriff funktioniert weiterhin nicht
- Mit
id BENUTZERNAMEodergroups BENUTZERNAMEprüfen, ob die neue Mitgliedschaft erkannt wird. - Eine neue Anmeldung oder Sitzung starten.
- Dateibesitzer, Gruppeneigentümer und Berechtigungsbits des betroffenen Objekts kontrollieren. Die Gruppenmitgliedschaft allein garantiert keinen Zugriff, wenn die Dateirechte ihn nicht erlauben.
Der Benutzer steht nicht im vierten Feld
Prüfen, ob die betreffende Gruppe die primäre Gruppe des Benutzers ist. Die primäre GID steht typischerweise in /etc/passwd und muss nicht zusätzlich in der Mitgliederliste von /etc/group erscheinen.
id BENUTZERNAME
getent passwd BENUTZERNAME
Die Gruppe fehlt in /etc/group, wird aber erkannt
Verwende:
getent group GRUPPENNAME
Wenn die Gruppe dort erscheint, kann sie aus einer weiteren konfigurierten Quelle der Gruppendatenbank stammen. Das direkte Lesen der lokalen Datei erfasst solche Quellen nicht.
Ein manuell geänderter Eintrag wird nicht korrekt gelesen
- Kontrollieren, ob genau vier durch Doppelpunkte getrennte Felder vorhanden sind.
- Prüfen, ob die Mitglieder mit Kommas getrennt sind.
- Leere Felder und ihre Trennzeichen beibehalten.
- Die geschützte Begleitdatei und die Konsistenz der übrigen Kontodaten berücksichtigen.
Wichtigste Merksätze
/etc/groupist eine lokale Textdatei mit einem Gruppeneintrag pro Zeile.- Das Format lautet
gruppenname:passwort:gid:mitgliederliste. - Die GID identifiziert eine Gruppe numerisch.
- Das vierte Feld beschreibt vor allem zusätzliche beziehungsweise sekundäre Gruppenmitgliedschaften.
- Die primäre GID eines Benutzers steht gewöhnlich in
/etc/passwd. getent groupist für die konfigurierte Gruppendatenbank oft geeigneter als das direkte Lesen von/etc/group.- Für Änderungen sind Verwaltungswerkzeuge sicherer als eine manuelle Bearbeitung der Datei.