8.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 /etc/passwd nur die Nummer einer primären Gruppe gespeichert wird – zugegeben nicht ganz konsistent.
/etc/group
Diese Lücke wollen wir nun schließen und Ihnen die /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 8.14 Ein Auszug aus der /etc/group
Diese Datei beinhaltet ähnlich wie die /etc/passwd die Zuordnung von Gruppennamen zur GruppenID sowie natürlich die Mitglieder dieser Gruppe. Doch 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.
- Gruppenpasswort
/etc/gshadow
- 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 /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 /etc/group ein.
Ein Benutzer muss im Übrigen nicht mehr seiner in der /etc/passwd bereits festgelegten Standardgruppe hinzugefügt werden.
8.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 groupadd beziehungsweise addgroup, die beide mit der Erstellung einer leeren Gruppe denselben Effekt besitzen.
# 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 8.15 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.
8.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 8.16 Hinzufügen eines Benutzers zu einer Gruppe mit adduser
Alternativ könnte man auch das Programm gpasswd mit dem -a-Parameter benutzen:
# gpasswd -a jploetner test2
Adding user jploetner to group test2
Listing 8.17 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.
8.3.3 Gruppenpasswörter und die /etc/gshadow
Für Gruppen: gpasswd
Doch mit gpasswd kann man noch viel mehr machen. Zum Beispiel wird mit gpasswd, gefolgt vom Gruppennamen, das Passwort der Gruppe gesetzt – ähnlich wie bei passwd, wo, gefolgt von einem Benutzernamen, das Benutzerpasswort, 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 8.18 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 8.19 Setzen eines Gruppenpassworts
Es wird also ein Feld in der /etc/gshadow gesetzt. An dieser Stelle wollen wir, um den Zusammenhang zu wahren, nun auch noch einmal 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.
- Gruppenadministratoren
Privilegierte Benutzer
- 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
- Hier im letzten Feld sind wie in der /etc/group auch alle Mitglieder der Gruppe aufgeführt.
Gruppen beitreten
Aber was nutzt ein Gruppenpasswort nun? 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 8.20 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),29(audio),44(video),60(games), 100(users),101(ssh),1000(jploetner),1001(test)
Listing 8.21 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 8.22 Dateien der Gruppe ssh erstellen
Man beachte, 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.
8.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 3. 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 8.23 Einen Gruppenadministrator festlegen
Der Passwortgedanke
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. Zum Abschluss dieser ganzen Ausführungen sollte man sich jedoch immer eines vor Augen halten:
Ein Passwort, das eine ganze Gruppe von Benutzern kennt, ist nicht sicher und widerspricht dem eigentlichen Passwortgedanken.
Das ist auch der Hauptgrund, weswegen Gruppenpasswörter in der Praxis fast nie benutzt werden. Die Festlegung eines Gruppenadministrators ist in der Regel jedoch in größeren Netzwerken etwas, worüber man durchaus nachdenken kann.
8.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 8.24 Eine Gruppe löschen
Damit ist die Gruppe »test« aus den Dateien /etc/group und /etc/gshadow gelöscht.