5.2 Dateisystemberechtigungen
An dieser Stelle geht es nicht mehr um die Art und Weise, wie Dateisystemrechte vergeben werden, sondern um die Planung von Berechtigungsstrukturen. Da bei Linux-Systemen immer nur der Besitzer und der Benutzer root Rechte an Dateien und Verzeichnisse vergeben können, sollten Sie immer darauf achten, dass bei allen Verzeichnissen, die Sie als Systemverwalter den Benutzern zur Verfügung stellen, immer der Benutzer root als Besitzer eingetragen ist. So stellen Sie sicher, dass kein anderer Benutzer die Berechtigungen an den von Ihnen bereitgestellten Verzeichnissen ändern kann. Nachdem Sie die Verzeichnisstruktur erzeugt und alle Gruppen angelegt haben, können Sie die Grundstruktur der Rechte einrichten. In Listing 5.3 sehen Sie die Rechtestruktur mit tree:
adminbuch:/# tree -pug daten/
daten/
|-- [drwxr-xr-x root root ] Abteilung
| |-- [drwxr-x--- root Buchhaltung] Buchhaltung
| | |-- [drwxrwx--- root buch-lg ] Lohnbuchhaltung
| | `-- [drwxrwx--- root buch-ps ] Personalbuchhaltung
| |-- [drwxr-x--- root Produktion] Produktion
| | |-- [drwxrwx--- root prod-ak ] Arbeitskontrolle
| | |-- [drwxrwx--- root prod-av ] Arbeitsvorbereitung
| | |-- [drwxrwx--- root prod-fg ] Fertigung
| | `-- [drwxrwx--- root prod-qs ] Qualitaetssicherung
| `-- [drwxr-x--- root Verwaltung] Verwaltung
| |-- [drwxrwx--- root verw-ek ] Einkauf
| |-- [drwxrwx--- root verw-gl ] Geschaeftsleitung
| |-- [drwxrwx--- root verw-mk ] Marketing
| `-- [drwxrwx--- root verw-vt ] Vertrieb
`-- [drwxrwx--- root benutzer] Alle
Listing 5.3 Grundstruktur der Berechtigungen mit »tree«
Wie Sie in Listing 5.3 sehen können, wurde hier allen Verzeichnissen eine Gruppe zugeordnet, und die Rechte wurden so angepasst, dass nur noch die Gruppen Zugriff auf die Verzeichnisse haben. Bei den Verzeichnissen Buchhaltung, Produktion und Verwaltung handelt es sich nur um Verzeichnisse, die zur Strukturierung des Verzeichnisbaums dienen; hier haben deshalb die Benutzer keine Schreibrechte. Erst in den Verzeichnissen der Fachbereiche können die Benutzer Daten speichern.
Damit die Mitarbeiter der einzelnen Fachbereiche einer Abteilung Daten austauschen können, könnten Sie zusätzlich im Abteilungsverzeichnis ein Verzeichnis anlegen, das zum Datenaustausch dient, und dort anschließend der entsprechenden Abteilungsgruppe das Schreibrecht geben. Hier wäre es das Verzeichnis Alle.
Aber was tun Sie, wenn Sie an einem Verzeichnis unterschiedliche Rechte für unterschiedliche Gruppen vergeben wollen? Dies können Sie nicht mit den einfachen Dateisystemrechten abbilden. Dazu brauchen Sie die Dateisystem-ACLs aus Abschnitt 5.3.
5.2.1 Spezialbits
Um die Berechtigungen auch auf die durch Benutzer neu erstellten Ordner und Dateien übertragen zu können, sollten die Rechte um die Spezialbits erweitert werden. Zuvor jedoch noch eine Erklärung der einzelnen Bits:
Das SUID-Bit
Das SUID-Bit dient dazu, einem Benutzer Rechte an einer Datei zu geben, die er sonst nicht hat. Ein gutes Beispiel für dieses Bit ist die Berechtigung auf die Datei /etc/shadow, in der sich die Passwörter der Benutzer befinden. Die Berechtigung an dieser Datei ist standardmäßig wie in Listing 5.4 gesetzt:
adminbuch:/daten# ls -l /etc/shadow
-rw-r----- 1 root shadow 767 14. Mai 15:23 /etc/shadow
Listing 5.4 Rechte an der Datei »shadow«
Da kein Benutzer Mitglied der Gruppe shadow ist und nur der Benutzer root Schreibrechte an der Datei hat, muss den Benutzern die Änderung der Passwörter also über einen anderen Weg ermöglicht werden. Dazu sehen Sie in Listing 5.5 die Berechtigungen des Programms /usr/bin/passwd:
adminbuch:/daten# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 31704 14. Mai 2016 /usr/bin/passwd
Listing 5.5 Berechtigungen des Programms »/usr/bin/passwd«
Sie sehen hier, dass an der Stelle, an der normalerweise das »x« beim Benutzer gesetzt ist, hier ein »s« steht. Dieses »s« zeigt an, dass das SUID-Bit gesetzt ist. Ein kleines »s« zeigt dabei an, dass das »x« zusätzlich gesetzt ist. Würde an der Stelle ein großes »S« stehen, wäre das »x« nicht gesetzt. Dieses »s« sorgt dafür, dass der Benutzer, der das Programm startet, für die Laufzeit des Programms eine zusätzliche UID erhält, und zwar die UID des Eigentümers des Programms, in diesem Fall die UID des Benutzers root. Dadurch kann ein »normaler« Benutzer sein Passwort in der Datei /etc/shadow ändern.
Das SUID-Bit setzen Sie mit dem Kommando chmod u+s <Programmname>. Setzen Sie das SUID- Bit nur für ausführbare Programme. Bei anderen Dateien wäre es sinnlos.
Das SGID-Bit
Mit dem SGID-Bit können Sie die Verwaltung der Rechtestruktur in Ihrem Dateisystem beeinflussen. Normalerweise gibt es bei Linux keine Vererbung der Berechtigungen im Dateisystem, aber durch den Einsatz des SGID-Bits können Sie das in einem bestimmten Rahmen ändern. Wenn Sie an einem Verzeichnis das SGID-Bit setzen, wird ab diesem Zeitpunkt jeder neue Eintrag unterhalb des Verzeichnisses immer der Gruppe gehören, die in diesem Verzeichnis als besitzende Gruppe eingetragen ist.
Das SGID-Bit vererbt sich auch auf alle neu erstellten Unterverzeichnisse, die nach dem Setzen des SGID-Bits erzeugt werden. Wenn Sie auf Ihrer Verzeichnisstruktur das SGID-Bit an den einzelnen Bereichsverzeichnissen setzen, gehören anschließend alle Einträge der entsprechenden Gruppe, ohne dass ein Benutzer seine Standardgruppe ändern müsste.
Das SGID-Bit setzen Sie mit dem Kommando chmod g+s <Verzeichnis>. Das SGID-Bit macht nur Sinn, wenn es auf Verzeichnisse gesetzt wird. Nach der Änderung der Berechtigung in unserem Beispieldateisystembaum sieht dieser so wie in Listing 5.6 aus:
adminbuch:/# tree -pug daten/
daten/
|-- [drwxr-xr-x root root ] Abteilung
| |-- [drwxr-x--- root Buchhalt] Buchhaltung
| | |-- [drwxrws--- root buch-lg ] Lohnbuchhaltung
| | `-- [drwxrws--- root buch-ps ] Personalbuchhaltung
| |-- [drwxr-x--- root Produktion] Produktion
| | |-- [drwxrws--- root prod-ak ] Arbeitskontrolle
| | |-- [drwxrws--- root prod-av ] Arbeitsvorbereitung
| | |-- [drwxrws--- root prod-fg ] Fertigung
| | `-- [drwxrws--- root prod-qs ] Qualitaetssicherung
| `-- [drwxr-x--- root Verwaltung] Verwaltung
| |-- [drwxrws--- root verw-ek ] Einkauf
| |-- [drwxrws--- root verw-gl ] Geschaeftsleitung
| |-- [drwxrws--- root verw-mk ] Marketing
| `-- [drwxrws--- root verw-vt ] Vertrieb
`-- [drwxrws--- root benutzer] Alle
Listing 5.6 Dateisystem mit gesetztem SGID-Bit
Wenn Sie noch die umask aller Benutzer auf den Wert 007 setzen, dann haben alle Dateien und Verzeichnisse später die passenden Rechte und die Verzeichnisse gehören auch immer den entsprechenden Gruppen.
Das Sticky-Bit
Über das Sticky-Bit können Sie dafür sorgen, dass nur der Besitzer einer Datei diese auch löschen kann, selbst wenn andere Benutzer aufgrund der Dateisystemberechtigungen das Recht hätten, die Datei zu löschen. Das Bit macht immer dann Sinn, wenn viele oder sogar alle Benutzer eines Systems auf ein Verzeichnis Zugriff haben und dort Dateien erstellen können.
So macht das System auch Gebrauch von dem Sticky-Bit, und zwar beim Verzeichnis /tmp. Dort haben alle Benutzer immer das Schreibrecht, aber durch das Sticky-Bit kann nur der Besitzer einer Datei Einträge im Verzeichnis /tmp löschen. Das Sticky-Bit setzen Sie mit dem Kommando chmod o+t <Verzeichnis>.
Im Beispiel wird jetzt das Sticky-Bit auf das Verzeichnis /daten/Alle gesetzt, da dort alle Mitarbeiter des Unternehmens Schreibrecht haben. In Listing 5.7 sehen Sie die Ausgabe des Kommandos tree:
adminbuch:/# tree -pug daten/
daten/
|-- [drwxr-xr-x root root ] Abteilung
| |-- [drwxr-x--- root Buchhalt] Buchhaltung
| | |-- [drwxrws--- root buch-lg ] Lohnbuchhaltung
| | `-- [drwxrws--- root buch-ps ] Personalbuchhaltung
| |-- [drwxr-x--- root Produktion] Produktion
| | |-- [drwxrws--- root prod-ak ] Arbeitskontrolle
| | |-- [drwxrws--- root prod-av ] Arbeitsvorbereitung
| | |-- [drwxrws--- root prod-fg ] Fertigung
| | `-- [drwxrws--- root prod-qs ] Qualitaetssicherung
| `-- [drwxr-x--- root Verwaltung] Verwaltung
| |-- [drwxrws--- root verw-ek ] Einkauf
| |-- [drwxrws--- root verw-gl ] Geschaeftsleitung
| |-- [drwxrws--- root verw-mk ] Marketing
| `-- [drwxrws--- root verw-vt ] Vertrieb
`-- [drwxrws--T root benutzer] Alle
Listing 5.7 Gesetztes Sticky-Bit am Verzeichnis »/daten/Alle«
Wie Sie hier sehen, steht an der Stelle, an der sonst unter others das »x« steht, ein großes »T«. Das zeigt an, dass unter dem »T« das »x« nicht gesetzt ist. Jetzt ist die Verzeichnisstruktur schon gut gegen unerlaubte Zugriffe gesichert, und die Rechte werden auch schon automatisch den entsprechenden Gruppen zugeordnet.