Die Gruppenverwaltung

Übersicht Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

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 (Administration des Systems Gruppenverwaltung; Abbildung 1).

Gruppenverwaltung im Yast

Abbildung 1: Gruppenverwaltung im Yast

Löschen von Gruppen Zurück Anfang Weiter

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 Zurück Anfang Weiter

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 Zurück Anfang Weiter

Der Wechsel einer Gruppe ist notwendig, falls:

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 Zurück Anfang

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