13.3 Benutzer und Gruppen 

Bisher haben wir die Gruppenzugehörigkeit von Benutzern etwas stiefmütterlich behandelt: Sie wissen, dass ein Benutzer zu mehreren Gruppen gehören kann, aber dass in der Datei /etc/passwd nur die Nummer einer primären Gruppe gespeichert wird – dies ist zugegebenermaßen nicht ganz konsistent.
/etc/group
Diese Lücke wollen wir nun schließen und Ihnen die Datei /etc/group vorstellen:
video:x:44:jploetner staff:x:50: games:x:60:jploetner users:x:100:jploetner,swendzel nogroup:x:65534: jploetner:x:1000: ...
Listing 13.15 Ein Auszug aus /etc/group
Diese Datei beinhaltet ähnlich wie die /etc/passwd die Zuordnung von Gruppennamen zur GruppenID sowie natürlich die Mitglieder dieser Gruppe. Betrachten wir die einzelnen Felder samt ihren Zusammenhängen etwas näher:
- Gruppenname
Das offensichtlichste Feld beinhaltet den Gruppennamen. Dieser ist wie der Username bei Benutzern nur für die Anzeige durch ls und andere Programme bestimmt, die mit Gruppen arbeiten. Schließlich möchte sich ein menschlicher Benutzer nicht mit GIDs und anderen kryptischen Zahlenfolgen, sondern vielmehr mit aussagekräftigen Namen befassen.
/etc/gshadow
- Gruppenpasswort In der nächsten Spalte steht das Gruppenpasswort beziehungsweise ein x, falls die Information in der Shadow-Datei /etc/gshadow abgelegt ist. Gruppenpasswörter werden selten eingesetzt, [Gruppenpasswörter müssen dann einer Gruppe von Menschen bekannt sein, was eigentlich dem Passwortgedanken widerspricht.] erlauben es aber, Gruppen beizutreten, in denen man normalerweise nicht Mitglied ist.
- GruppenID
Die GruppenID bezeichnet die systemintern zur Repräsentation der Gruppe genutzte Zahl. Damit hat die GID eine ähnliche Aufgabe und Eigenschaft wie die UID.
- Die Mitglieder
Bisher haben wir nur gesehen, dass man die primäre Gruppe eines Benutzers – die normalerweise auch die Gruppenzugehörigkeit neuer Dateien definiert – in der Datei /etc/passwd als GID angeben musste. Soll ein Benutzer darüber hinaus noch in weiteren Gruppen Mitglied sein, so trägt man die entsprechenden Usernamen in das letzte Feld der Datei /etc/group ein.
Ein Benutzer muss im Übrigen nicht mehr seiner in der /etc/passwd bereits festgelegten Standardgruppe hinzugefügt werden.
13.3.1 Gruppen anlegen 

Möchte man eine neue Gruppe anlegen, so geht man dazu erst einmal äquivalent zur Erstellung eines neuen Benutzers vor: Man nutzt nämlich die Programme group- add beziehungsweise addgroup, die beide zur Erstellung einer leeren Gruppe dienen.
# groupadd test # addgroup test2 Adding group `test2' (1002)... Done. # grep test /etc/group test:x:1001: test2:x:1002: # grep test /etc/gshadow test:!:: test2:!::
Listing 13.16 groupadd und addgroup
Wieder ein Frontend
Anzumerken ist jedoch, dass addgroup ein Frontend zu adduser ist, das mit dem Parameter --group aufgerufen wird. Aus diesem Grund ist addgroup auch im Gegensatz zu groupadd über die /etc/adduser.conf konfigurierbar.
13.3.2 Benutzer zu Gruppen hinzufügen 

Die wichtigste Arbeit bei der Verwaltung von Benutzergruppen ist sicherlich das Hinzufügen von Benutzern zu den jeweiligen Gruppen. Natürlich kann diese Arbeit wie immer auch durch das Editieren der /etc/group beziehungsweise der /etc/gshadow erfolgen, jedoch kann man das Allround-Frontend adduser mit dem Benutzer und der Gruppe als Argument benutzen:
# adduser jploetner test
Adding user `jploetner' to group `test'...
Done.
# grep test /etc/group
test:x:1001:jploetner
# grep test /etc/gshadow
test:x::jploetner
Listing 13.17 Hinzufügen eines Benutzers zu einer Gruppe mit adduser
Alternativ könnte man auch das Programm gpasswd mit dem Parameter -a benutzen:
# gpasswd -a jploetner test2
Adding user jploetner to group test2
Listing 13.18 Einen Benutzer mit gpasswd zu einer Gruppe hinzufügen
Das Ergebnis ist jedoch bei allen Methoden gleich: Der Benutzer wird der Gruppe hinzugefügt und bekommt die Rechte für alle Dateien mit derselben Gruppe.
13.3.3 Gruppenpasswörter und die Datei /etc/gshadow 

Für Gruppen: gpasswd
Doch mit gpasswd kann man noch viel mehr machen. So wird zum Beispiel mit gpasswd, gefolgt vom Gruppennamen, das Passwort der Gruppe gesetzt – ähnlich wie bei passwd, wo das Benutzerpasswort, gefolgt von einem Benutzernamen gesetzt wird. Das Passwort der Gruppe wird ebenfalls wie bei der Benutzerverwaltung in einer speziellen Shadow-Datei – der /etc/gshadow – gespeichert.
# ls -l /etc/group /etc/shadow -rw-r--r-- 1 root root 735 05-05-08 7:52 /etc/group -rw-r----- 1 root shadow 827 05-04-28 7:29 /etc/shadow
Listing 13.19 Eingeschränkte Rechte der Shadow-Datei
Die Rechte dieser Datei sind wie gesagt eingeschränkt: Es darf nicht jeder den Inhalt der Datei lesen, sondern nur der Systemadministrator root und alle Benutzer der Gruppe shadow. Das Setzen eines Passworts hat dabei folgende Auswirkungen:
# grep test /etc/gshadow test:!:: # gpasswd test Changing the password for group test New Password: Re-enter new password: # grep test /etc/gshadow test:yYSiruuynqlK.::
Listing 13.20 Setzen eines Gruppenpassworts
Es wird also ein Feld in der /etc/gshadow gesetzt. An dieser Stelle wollen wir selbstverständlich auch alle Felder dieser Datei besprechen:
- Der Gruppenname
Dieses Feld referenziert ähnlich wie bei der /etc/shadow das Namensfeld in der /etc/group.
- Das Gruppenpasswort
Standardmäßig wird kein Passwort gesetzt, jedoch haben wir im Beispiel mittels gpasswd eines gesetzt. Welche Möglichkeiten den Benutzern eines Systems damit offenstehen, werden wir im Anschluss behandeln.
Privilegierte Benutzer
- Gruppenadministratoren
Im nächsten Feld steht eine Liste von Gruppenadministratoren. Diese Administratoren können zum Beispiel mit gpasswd das Gruppenpasswort ändern oder auch Benutzer zur Gruppe hinzufügen beziehungsweise entfernen.
- Gruppenmitglieder
Im letzten Feld sind wie in der /etc/group auch alle Mitglieder der Gruppe aufgeführt.
Gruppen beitreten
Wozu aber dient ein Gruppenpasswort? Ganz einfach: Wenn ein Benutzer nicht in einer Gruppe ist, so kann er mit dem Befehl newgrp und der Angabe des Passworts doch Mitglied werden:
jploetner@host:~$ groups jploetner cdrom sudo audio video games users ssh jploetner@host:~$ newgrp test Kennwort: jploetner@host:~$ groups test cdrom sudo audio video games users ssh jploetner
Listing 13.21 Einer Gruppe beitreten
Ruft man newgrp für eine Gruppe auf, in der man schon über die /etc/group Mitglied ist, so wird man natürlich nicht nach dem Passwort gefragt. Was jedoch geändert wird, sind die GID und EGID der Shell. Die aktuellen Werte kann man mit dem Programm id erfahren:
$ id uid=1000(jploetner) gid=1000(jploetner),Gruppen=24(cdrom), 27(sudo),29(audio),44(video),60(games),100(users),101(ssh), 1000(jploetner),1001(test) $ newgrp ssh; id uid=1000(jploetner) gid=101(ssh),Gruppen=24(cdrom), 27(sudo), 9(audio),44(video),60(games),100(users),101(ssh), 1000(jploetner),1001(test)
Listing 13.22 Auswirkungen auf die GID
Erstellung neuer Dateien
Für den Zugriff auf Dateien hat diese Änderung allerdings keine Auswirkungen: Man hat Zugriff auf eine Datei, wenn es entweder die Besitzer-, die Gruppen- oder die sonstigen Rechte erlauben. Die Gruppenzugehörigkeit wird dabei jedoch nicht allein von der GID, sondern von allen Gruppen des Benutzers abhängig gemacht. Eine Relevanz hat diese jedoch zum Beispiel bei der Erstellung neuer Dateien. Eine Datei kann nämlich immer nur in einer Gruppe sein. Und diese ist nun mal die GID des erstellenden Benutzers:
$ touch test && ls -l test
-rw-r--r-- 1 jploetner ssh 0 2005-05-08 20:41 test
Listing 13.23 Dateien der Gruppe ssh erstellen
Beachten Sie, dass die Datei der Gruppe ssh und nicht der primären Gruppe des Benutzers zugewiesen wurde. Ändert man die GID beziehungsweise die EGID nicht, so werden Dateien mit der primären, also in der /etc/passwd angegebenen Gruppe angelegt.
13.3.4 Gruppenadministratoren 

So viel zur Anwendung der verschiedenen Gruppenrechte. Im Folgenden wollen wir jedoch noch auf einen anderen Aspekt der Gruppenverwaltung eingehen: auf die Gruppenadministratoren. Gruppenadministratoren werden im dritten Feld der /etc/gshadow angegeben und können mittels gpasswd folgende Aufgaben übernehmen:
- Das Gruppenpasswort ändern
Nicht nur root kann das Gruppenpasswort mit gpasswd und dem Gruppennamen als Parameter ändern, sondern auch der Gruppenadmin kann diese Aufgabe wahrnehmen.
- Benutzer zur Gruppe hinzufügen
Über den Parameter -a kann auch ein Gruppenadministrator neue Benutzer zu einer Gruppe hinzufügen. Die neuen User bekommen somit die Gruppenberechtigungen, ohne dass sie erst newgrp aufrufen und das Gruppenpasswort eingeben müssen.
- Benutzer löschen
Analog zum Hinzufügen neuer Benutzer können bereits einer Gruppe zugewiesene User über den -d-Parameter wieder aus dieser Gruppe gelöscht werden.
Einen Gruppenadministrator kann dabei nur der Systemadministrator root über den -A-Parameter festlegen:
# grep test /etc/gshadow test:!:: # gpasswd -A jploetner test # grep test /etc/gshadow test:!:jploetner:
Listing 13.24 Einen Gruppenadministrator festlegen
Der Passwort- gedanke
Damit kann sich nun der Benutzer jploetner um die Gruppe kümmern. Somit konnten administrative Aufgaben verlagert werden, ohne dem betreffenden Benutzer weitergehende administrative Rechte einzuräumen. Eines sollten Sie sich jedoch immer vor Augen halten:
Ein Passwort, das einer ganzen Gruppe von Benutzern bekannt ist, ist nicht sicher und widerspricht dem eigentlichen Passwortgedanken. |
Das ist auch der Hauptgrund, weshalb Gruppenpasswörter in der Praxis fast nie Verwendung finden. Die Festlegung eines Gruppenadministrators ist in der Regel jedoch in größeren Netzwerken eine durchaus erwägenswerte Option.
13.3.5 Gruppen löschen 

Natürlich kann man auch Gruppen wieder löschen – und wie erwartet erledigen groupdel und delgroup diese Aufgabe:
# delgroup test
Removing group `test'...
done.
#
Listing 13.25 Eine Gruppe löschen
Damit ist die Gruppe test aus den Dateien /etc/group und /etc/gshadow gelöscht.