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:

PositionFeldBeispielwertBedeutung
1GruppennameprojektteamLesbare textuelle Bezeichnung der Gruppe.
2Passwort- oder PlatzhalterfeldxHistorisches beziehungsweise optionales Gruppenpasswortfeld. Moderne Systeme verwenden typischerweise einen Platzhalter; geschützte Gruppeninformationen können in /etc/gshadow stehen.
3GID5100Numerische Gruppen-ID, die die Gruppe eindeutig identifiziert.
4Mitgliederlistealice,bobKommaseparierte 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_group ist der Gruppenname.
  • x ist der Platzhalter im zweiten Feld.
  • 5000 ist die GID.
  • jwilliams und bob sind 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 MitgliedschaftTypische SpeicherstelleBedeutung
Primäre GruppeBenutzerkontoinformationen, gewöhnlich das GID-Feld in /etc/passwdStandardgruppe eines Benutzerkontos. Neue Dateien des Benutzers erhalten häufig diese Gruppe als Gruppeneigentümer.
Sekundäre GruppeMitgliederliste im vierten Feld von /etc/groupZusä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/gshadow und 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

  1. Mit id BENUTZERNAME oder groups BENUTZERNAME prüfen, ob die neue Mitgliedschaft erkannt wird.
  2. Eine neue Anmeldung oder Sitzung starten.
  3. 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/group ist 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 group ist 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.