Inhaltsverzeichnis

Gruppen / Gruppenverwaltung unter Unix

Quelle1)

Übersicht

Berechtigungen beim Zugriff auf Dateien (Verzeichnisse, Geräte usw. sind bekanntlich nur spezielle Varianten von Dateien) werden unter Unix in drei »Ebenen« vergeben. Da wäre der Besitzer einer Datei, der letztlich selbst über die Rechte des Zugriffs entscheidet. Diesen Befugnissen für eine einzelne Person stehen die »Weltrechte« gegenüber, die bestimmen, was alle »Nicht-Besitzer« mit der Datei anstellen dürfen. Natürlich existieren genügend Szenarien, in denen Rechte weder exklusiv einer Person zugeordnet, noch jedermann gewährt werden sollten. Genau diese Beschränkung der Rechte auf einen bestimmten Personenkreis kann über Gruppen geregelt werden, indem die betreffende Datei einer konkreten Gruppe gehört, deren Mitglieder die befugten Personen umfassen.

Die Zugehörigkeit von Benutzern zu einer Gruppe kann auf mehreren Wegen erfolgen. Zum einen wird durch den Gruppeneintrag in der Datei /etc/passwd die Default-Gruppe eines Benutzers bestimmt. Legt dieser Benutzer z.B. eine neue Datei an, wird diese zunächst dieser Gruppe gehören. Soll ein Benutzer mehreren Gruppen angehören, so ist er in die Liste der Gruppenmitglieder der Datei /etc/group aufzunehmen. Ein Benutzer kann dann für die Dauer der aktuellen Sitzung eine dieser Gruppen zu seiner Default-Gruppe ernennen. Und schließlich besteht die Möglichkeit, eine Gruppe durch ein Passwort zu schützen. In diesem Fall darf jeder Mitglied der Gruppe werden, der das Passwort kennt.

Die Datei /etc/group

In dieser Datei befinden sich die verschiedene Benutzergruppen und ihre Mitglieder. Ein Eintrag besitzt folgenden Aufbau:

Gruppenname:Passwort:Gruppennummer:Mitgliederliste

Die Einträge bedeuten:

Gruppenname

Der Name der Gruppe; auch hier ist die Beschränkung auf Kleinbuchstaben und maximal 8 Zeichen üblich (aber nicht notwendig).

Passwort

Benutzer können bei Kenntnis des Passwortes die Gruppe wechseln, auch wenn sie kein Mitglied der Gruppe sind; es gelten die gleichen Aussagen wie für die Passwörter der /etc/passwd.

Gruppennummer

Nichtnegative Zahl < 64000. Gruppennummern < 100 sind für Systemzwecke reserviert und sollten nicht verwendet werden.

Mitgliederliste

Durch Komma getrennte Liste der Nutzerkennzeichen.

Der zweite und vierte Eintrag können entfallen, d.h. die Gruppe ist nicht durch ein Passwort geschützt bzw. in die Gruppe kann kein Benutzer wechseln, der diese nicht als Default-Gruppe hat.

Die Passwortabfrage entfällt für Gruppenmitglieder. Passwörter werden bei Verwendung des Shadow-Passwort-Systems (dieses verwenden alle aktuellen Distributionen) in der Datei /etc/gshadow gespeichert.

Die Datei /etc/gshadow

Anstatt Gruppenpasswörter und -mitglieder in der für alle lesbaren Datei /etc/group zu speichern, werden bei Verwendung von Shadow-Passwort-Systemen diese in der nur für Root lesbaren Datei »/etc/gshadow« gehalten. Der Aufbau eines Eintrages besitzt folgendes Format:

Gruppenname:Passwort:Gruppenverwalter:Mitgliederliste

Die Einträge bedeuten:

Gruppenname

Wie in /etc/group

Passwort

Das verschlüsselte Passwort; meist wird auf eine solche Möglichkeit verzichtet. Zum Setzen des Gruppenpasswortes bedient sich der Gruppenverwalter des Kommandos gpasswd.

Gruppenverwalter

Nutzerkennzeichen der/des Benutzer(s), den/die der Systemverwalter zu Administratoren für diese Gruppe ernannt hat. Der hier angeführte Nutzer darf andere Nutzer zur Gruppe hinzufügen und deren Einträge auch wieder entfernen, sowie das Gruppenpasswort ändern.

Mitgliederliste

Durch Komma getrennte Liste der Nutzerkennzeichen.

Konvertieren der Einträge

Anmerkung: Die nachfolgend beschriebenen Programme liegen nicht jeder Distribution bei. Ob sie in Ihrer Version der Shadow-Utilities vorliegen, erkennen Sie anhand der Ausgabe von:

 user@sonne> rpm -ql shadow

Bevorzugen Sie die manuelle Bearbeitung der Konfigurationsdateien, so können Sie im Falle der Gruppenverwaltung auf zwei Kommandos zurückgreifen, die eine automatische Konvertierung der Dateien /etc/group und /etc/gshadow in das jeweils andere Format vornehmen. Ein solche Umwandlung kann in mehreren Situationen erforderlich werden:

Das Kommando 'grpconv' erzeugt aus einer vorhandenen Datei /etc/group und ggf. /etc/gshadow eine neue Datei /etc/gshadow, indem es Passwörter und Mitgliederlisten aus der Gruppen- in die Shadowdatei überträgt:

 root@sonne> grpconv

grpunconv schreibt die Passwörter und Mitgliederlisten aus der /etc/gshadow in die Datei /etc/group zurück und löscht anschließend die Shadowdatei.

 root@sonne> grpunconv

Eventuell wird eine Konsistenzprüfung der beiden Dateien nötig. Das Kommando 'grpck' gibt enthaltene Unstimmigkeiten aus und fordert ggf. zu Korrekturen auf:

 root@sonne> '''grpck'''
 group uucp: no user uucpfaxroot
 delete member `uucpfaxroot'? n
 grpck: no changes

Anlegen von Gruppen

Das Anlegen neuer Gruppen kann prinzipiell auf drei Wegen erfolgen:

Die Handarbeit

1. Der Systemverwalter bearbeitet die Datei /etc/group. Als Editor ist das Kommando 'vigr' zu empfehlen (falls installiert), da sich das Kommando selbsttätig um die Dateisperre kümmert. Welcher Editor sich hinter dem Aufruf verbirgt, kann durch Setzen der Shellvariablen „$VISUAL“ bzw. „$EDITOR“ (Auswertung in dieser Reihenfolge) gesteuert werden. Erst wenn beide Variablen nicht gesetzt sind, wird auf den vi zurück gegriffen.

 root@sonne> '''vigr'''
 ...
 fibel::102:
 '''newgroup::103:'''
 ~
 ~
 ~
 '''-- INSERT --'''                                 46,14      Bot

Achten Sie auf die Eindeutigkeit von Gruppenname und -nummer; die beiden anderen Felder sollten frei bleiben.

2. Nun ist die Datei /etc/gshadow anzupassen. Falls vorhanden, kann das Kommando 'grpconv' verwendet werden, das automatisch eine Angleichung der Einträge vornimmt. Ist grpconv nicht installiert, muss die Datei von Hand bearbeitet werden. 'vigr -s' öffnet die Datei /etc/gshadow.

 
 root@sonne> '''vigr -s'''
 ...
 fibel::root:user
 '''newgroup::root:'''
 ~
 ~
 ~
 '''-- INSERT --'''                                  46,14      Bot

In die dritten Spalte ist der Gruppenverwalter einzutragen, die 4. Spalte kann eine kommaseparierte Liste der Gruppenmitglieder beinhalten.

3. Falls erforderlich, ist das Gruppenpasswort zu setzen:

root@sonne> 'gpasswd newgroup' Changing the password for group users New Password: Re-enter new password:

4. Die Gruppenmitglieder sind anzulegen (siehe Gruppenmitglieder).

Allgemeine Werkzeuge

Auf Systemen mit traditioneller Passwort-Verwaltung heißt das benötigte Kommando 'addgroup'. Seine Bedienung ist analog dem nachfolgend diskutiertem 'groupadd', das auf Systemen mit Shadow-Passwort-Verwaltung eingesetzt wird. Letzteres Kommando nimmt automatisch die notwendigen Änderungen in der Datei /etc/gshadow vor.

Um eine neue Gruppe „newgroup“ mit der Gruppennummer 111 anzulegen, gibt Root Folgendes ein:

 root@sonne> groupadd -g 111 newgroup

Wird auf die Angabe einer Gruppennummer verzichtet, bekommt „newgroup“ die nächste freie Gruppennummer zugewiesen. „groupadd“ beendet seine Arbeit mit einer Fehlermeldung, falls eine schon verwendete Gruppennummer als Argument übergeben wurde. Ist eine doppelte Vergabe von GID's erwünscht, muss das dem Kommando mit der Option „-o“ mitgeteilt werden:

 root@sonne> groupadd -g 0 -o admins

Distributionseigene Werkzeuge

Die distributionseigenen Werkzeuge verpacken den Kommandozeilenaufruf in einen grafischen Dialog. Ihr Vorteil liegt oft in der Kopplung mehrerer Kommando in einer Maske, so ist es möglich, während des Anlegens einer Gruppe das Passwort zu setzen und gleichzeitig die Liste der Mitglieder anzulegen. Der Nachteil der Tools ist ihre meist auf nur ein System beschränkte Verfügbarkeit.

RedHat-basierende Distributionen administrieren die Gruppen über 'userconf'.

SuSE hat die Gruppenverwaltung in 'Yast' integriert .

Löschen von Gruppen

Die Handarbeit

Die Handarbeit läuft auf das manuelle Löschen der entsprechenden Einträge der Dateien /etc/group und /etc/gshadow hinaus.

1. Entfernen Sie den Gruppeneintrag aus der Datei /etc/group. Falls installiert, nutzen sie zum Bearbeiten das Kommando 'vigr'.

2. Entfernen Sie den Gruppeneintrag aus der Datei /etc/gshadow. Dies kann durch Konvertierung mit Hilfe des Aufrufes von 'grpconv' geschehen, oder durch Editieren der Datei ('vigr -s'). Falls beide Kommandos nicht auf dem System verfügbar sind, hilft jeder andere Editor.

3. Vergewissern Sie sich, dass kein Nutzer die entfernte Gruppe als Default-Gruppe in der Datei /etc/passwd eingetragen hat. Passen Sie solche Eintrage ggf. an (durch eine vorhandene Gruppe ersetzen).

4. Eventuell sollten Sie Dateien im System, die dieser Gruppe gehören, einer anderen Gruppe zuordnen (Siehe Systemverwaltung->Zugriffsrechte->Besitzer ändern) bzw. solche Dateien entfernen.

Allgemeine Werkzeuge

In Nicht-Shadow-Passwort-Systemen ist 'delgroup' das Kommando. Dessen Bedienung erfolgt analog zum Kommando 'groupdel'. Beide Kommandos erwarten als Argument einzig den Namen der zu löschenden Gruppe. „groupdel“ entfernt zusätzlich den Eintrag aus der Shadow-Gruppendatei.

root@sonne> 'groupdel fibel'

Distributionseigene Werkzeuge

Das Entfernen kann in den Tools 'userconf' von RedHat bzw. 'Yast' (Administration des Systems→Gruppenverwaltung) bei SuSE erfolgen.

Gruppenmitglieder

Die Handarbeit

In einem System mit Shadow-Passwort-Verwaltung werden die Nutzerkennzeichen der Mitglieder einfach in das vierte Feld des betreffenden Gruppeneintrags der Datei /etc/gshadow eingetragen. Die einzelnen Einträge sind durch Kommas voneinander zu trennen. Zum Bearbeiten der Datei sollte, falls installiert, das Kommando 'vigr -s' verwendet werden. Bei Systemen ohne Shadow-Passwort-Verwaltung wird die Nutzerliste in das vierte Feld des Eintrages der Datei /etc/gshadow geschrieben. Dort können die Nutzer zwar auch bei Shadow-Systemen stehen, doch ist diese Liste dann für jeden lesbar!

Allgemeine Werkzeuge

Zum Verwalten von Gruppenmitgliedern dient das Kommando 'gpasswd'. Sowohl Root als auch von ihm ernannte Gruppenverwalter können mit Hilfe von „gpasswd“

Mitglieder hinzufügen

 root@sonne> gpasswd -a user fibel
 Adding user user to group fibel

Mitglieder entfernen

 root@sonne> gpasswd -d user fibel
 Removing user user from group fibel

Das Gruppenpasswort ändern

 root@sonne> gpasswd fibel
 Changing the password for group fibel
 New Password:
 Re-enter new password:

Das Gruppenpasswort löschen

 root@sonne> gpasswd -r fibel

Alle Gruppenmitglieder entfernen

 root@sonne> '''gpasswd -R fibel'''

Distributionseigene Werkzeuge

Ein Eintrag von Nutzern kann durch Editieren der Gruppeneinträge mit den Tools 'userconf' von RedHat bzw. Yast (Administration des Systems→Gruppenverwaltung) bei SuSE erfolgen.

Gruppenwechsel

Der Wechsel einer Gruppe ist notwendig, falls:

* Der Nutzer kein ständiges Mitglied der Gruppe ist (dann muss er das Gruppenpasswort kennen) * Alle neu anzulegenden Dateien automatisch der neuen Gruppe zugeordnet werden sollen * Kommandos mit der Berechtigung einer anderen Gruppe ausgeführt werden sollen

Der Gruppenwechsel erfolgt mit dem Kommando 'newgrp':

'Aufruf':

newgrp [-] [group]

Das „-“ als Argument bewirkt eine erneute Initialisierung aller Umgebungsvariablen inklusive einem eventuellen Verzeichniswechsel. Wird dem Kommando kein Gruppenname angegeben, wird in die Default-Gruppe (aus /etc/passwd) gewechselt. Ist ein Nutzer nicht zum Wechsel berechtigt, wird er zur Eingabe des Passwortes aufgefordert.

 user@sonne> id
 uid=500(user) gid=100(users) Gruppen=100(users),102(fibel)
 user@sonne> newgrp fibel
 user@sonne> id
 uid=500(user) gid=102(fibel) Gruppen=100(users),102(fibel)
 user@sonne> newgrp root
 Password:

Um die effektive Gruppe nur während der Ausführung eines einzelnen Kommandos zu wechseln, kann auf das Kommando sg zurückgegriffen werden:

Aufruf:

sg [-] [group [[-c] command]]

Die Angabe des Gruppennamens ist zwingend. Ein Aufruf ohne Kommando funktioniert zwar, bewirkt aber praktisch nichts.

 user@sonne> sg - root ifconfig
 Password:

Der Gruppenwechsel mittels newgrp kann vom (Gruppen)Administrator unterbunden werden:

 root@sonne> gpasswd -R fibel

In die Gruppe „fibel“ kann nun niemand mehr wechseln (alle Mitglieder mit Ausnahme von „root“ wurden aus der Liste entfernt.).

Gruppenverwalter

Die Verwaltung aller Gruppen einer einzigen Person aufzubürden, kann diese schnell überfordern. Warum sollte die Mitglieder einer Gruppe, die gemeinsam an einem Programmierprojekt arbeiten, nicht auch der Projektleiter administrieren?

Das Einrichten und Entfernen von Gruppen wird immer Root anlasten, aber die Verwaltung dieser kann er delegieren:

 root@sonne> gpasswd -A user fibel

Der Nutzer „user“ ist nun berechtigt, Nutzer zur Gruppe „fibel“ hinzuzufügen bzw. jene aus dieser Gruppe zu entfernen. Außerdem kann der Gruppenverwalter das Passwort einer Gruppe entfernen, so dass kein Nicht-Mitglied sich der Gruppe zuordnen kann:

 user@sonne> gpasswd -r fibel

Root kann die Liste der Gruppenverwalter wieder löschen:

 root@sonne> gpasswd -A "" fibel

Funktioniert leider unter Suse 10 nicht :(