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:
Listing 13.15 Ein Auszug aus /etc/group
video:x:44:jploetner
staff:x:50:
games:x:60:jploetner
users:x:100:jploetner,swendzel
nogroup:x:65534:
jploetner:x:1000:
...
Diese Datei speichert ähnlich wie die /etc/passwd die Zuordnung von Gruppennamen zur Gruppen-ID sowie natürlich die Mitglieder dieser Gruppe. Betrachten wir die einzelnen Felder samt ihren Zusammenhängen etwas näher:
- Gruppenname
Das offensichtlichste Feld enthält 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, [Fn. 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. - Gruppen-ID
Die Gruppen-ID 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 seiner in der /etc/passwd bereits festgelegten Standardgruppe nicht mehr explizit 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 groupadd beziehungsweise addgroup, die beide zur Erstellung einer leeren Gruppe dienen.
Listing 13.16 groupadd und addgroup
# 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:!::
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 ihnen. Natürlich kann diese Arbeit wie immer durch das Editieren der /etc/group beziehungsweise der /etc/gshadow erfolgen, jedoch kann man auch das Allround-Frontend adduser mit dem Benutzer und der Gruppe als Argument benutzen:
Listing 13.17 Hinzufügen eines Benutzers zu einer Gruppe mit adduser
# 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
Alternativ könnte man auch das Programm gpasswd mit dem Parameter -a benutzen:
Listing 13.18 Einen Benutzer mit gpasswd zu einer Gruppe hinzufügen
# gpasswd -a jploetner test2
Adding user jploetner to group test2
Das Ergebnis ist jedoch bei allen Methoden gleich: Der Benutzer wird der Gruppe hinzugefügt und bekommt die Rechte für alle Dateien derselben Gruppe.
13.3.3 Gruppenpasswörter und /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.
Listing 13.19 Eingeschränkte Rechte der Shadow-Datei
# 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
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:
Listing 13.20 Setzen eines Gruppenpassworts
# 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.::
Es wird also ein Feld in der /etc/gshadow gesetzt. An dieser Stelle wollen wir selbstverständlich auch alle Felder dieser Datei besprechen:
- Gruppenname
Dieses Feld referenziert ähnlich wie bei der /etc/shadow das Namensfeld in der /etc/group. - 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 können zum Beispiel mit gpasswd das Gruppenpasswort ändern oder auch Benutzer zur Gruppe hinzufügen beziehungsweise aus ihr 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:
Listing 13.21 Einer Gruppe beitreten
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
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:
Listing 13.22 Auswirkungen auf die GID
$ 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)
Erstellung neuer Dateien
Für den Dateizugriff 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, denen der des Benutzer angehört, abhängig gemacht. Relevant ist dies zum Beispiel bei der Erstellung neuer Dateien. Eine Datei kann nämlich immer nur einer Gruppe gehören. Und diese wird nun einmal durch die GID des erstellenden Benutzers bezeichnet:
Listing 13.23 Dateien der Gruppe ssh erstellen
$ touch test && ls -l test
-rw-r--r-- 1 jploetner ssh 0 2005-05-08 20:41 test
Beachten Sie, dass die Datei der Gruppe ssh und nicht der primären Gruppe des Benutzers zugewiesen wurde. ändert man die GID beziehungsweise EGID nicht, so werden Dateien mit der primären, also in der /etc/passwd angegebenen Gruppenzugehörigkeit angelegt.
13.3.4 Gruppenadministratoren
So viel zur Nutzung 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 entsprechenden 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 ihr gelöscht werden.
Einen Gruppenadministrator kann nur der Systemadministrator root über den -A-Parameter festlegen:
Listing 13.24 Einen Gruppenadministrator festlegen
# grep test /etc/gshadow
test:!::
# gpasswd -A jploetner test
# grep test /etc/gshadow
test:!:jploetner:
Der Passwortgedanke
Hiernach kann sich der Benutzer jploetner um die Gruppe kümmern. Somit konnten administrative Aufgaben verlagert werden, ohne dem betreffenden Benutzer weitergehende Administratorenrechte 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:
Listing 13.25 Eine Gruppe löschen
# delgroup test
Removing group `test'...
done.
#
Damit ist die Gruppe test aus den Dateien /etc/group und /etc/gshadow gelöscht.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.