Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Über die Autoren
Über dieses Buch
Linux und BSD: Geschichte und Grundbegriffe
1 Der Kernel
2 Die Grundlagen aus Anwendersicht
3 Die Shell
4 Reguläre Ausdrücke
5 Konsolentools
6 Die Editoren
7 Shellskriptprogrammierung
8 Benutzerverwaltung
9 Grundlegende Verwaltungsaufgaben
10 Netzwerkgrundlagen
11 Anwendersoftware für das Netzwerk
12 Netzwerkdienste
13 Mailserver unter Linux
14 LAMP
15 DNS-Server
16 Secure Shell
17 Die grafische Oberfläche
18 Window-Manager und Desktops
19 X11-Programme
20 Multimedia und Spiele
21 Softwareentwicklung
22 Crashkurs in C und Perl
23 Einführung in die Sicherheit
24 Netzwerksicherheit überwachen
25 Prozesse und IPC
26 Bootstrap und Shutdown
27 Dateisysteme
28 Virtualisierung und Emulatoren
A Die Installation
B Lösungen zu den einzelnen Aufgaben
C Kommandoreferenz
D X11-InputDevices
E MBR
F Die Buch-DVDs
G Glossar
H Literatur
Stichwort

Download:
- ZIP, ca. 9,3 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Linux von Johannes Ploetner, Steffen Wendzel
Das umfassende Handbuch
Buch: Linux

Linux
geb., mit 2 DVDs
1.200 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1483-4
Pfeil 9 Grundlegende Verwaltungsaufgaben
  Pfeil 9.1 Rechteverwaltung
    Pfeil 9.1.1 chmod
    Pfeil 9.1.2 chown
    Pfeil 9.1.3 Erweiterte Rechte
    Pfeil 9.1.4 umask
    Pfeil 9.1.5 Access Control Lists
  Pfeil 9.2 Softwareinstallation
    Pfeil 9.2.1 Paketverwaltung und Ports
    Pfeil 9.2.2 APT – Advanced Packaging Tool
    Pfeil 9.2.3 Pakete in Handarbeit: dpkg und rpm
    Pfeil 9.2.4 .tgz Packages unter Slackware
    Pfeil 9.2.5 Das Gentoo Portage System
    Pfeil 9.2.6 BSD-Ports
    Pfeil 9.2.7 Softwareinstallation ohne Pakete
  Pfeil 9.3 Tätigkeiten automatisieren
    Pfeil 9.3.1 Skripts
    Pfeil 9.3.2 Cronjobs
    Pfeil 9.3.3 Punktgenau mit at
  Pfeil 9.4 Logging
    Pfeil 9.4.1 Die Logdateien
    Pfeil 9.4.2 Der syslogd
    Pfeil 9.4.3 logrotate
    Pfeil 9.4.4 logcheck
  Pfeil 9.5 Dateisystemverwaltung
    Pfeil 9.5.1 Die /etc/fstab
    Pfeil 9.5.2 Das Tool mount
    Pfeil 9.5.3 Platz beschränken: Quotas
    Pfeil 9.5.4 du und df
    Pfeil 9.5.5 SoftRAID und LVM
    Pfeil 9.5.6 Backups, Archive
  Pfeil 9.6 Kernel kompilieren
    Pfeil 9.6.1 Die Kernel-Quellen besorgen
    Pfeil 9.6.2 Die Konfiguration
    Pfeil 9.6.3 Den Kernel übersetzen
    Pfeil 9.6.4 Den Bootloader anpassen
    Pfeil 9.6.5 BSD-Kernel kompilieren
  Pfeil 9.7 Linux' SysRq
    Pfeil 9.7.1 Aktivierung von SysRq
    Pfeil 9.7.2 Tastenkombinationen
  Pfeil 9.8 Lokalisierung
    Pfeil 9.8.1 Die Tastaturbelegung
    Pfeil 9.8.2 Die deutsche Sprache
    Pfeil 9.8.3 Das Einstellen der Uhr
    Pfeil 9.8.4 Texte von anderen Plattformen
  Pfeil 9.9 Zusammenfassung
  Pfeil 9.10 Aufgaben

»Ich sehne mich danach, eine große und noble Aufgabe zu erfüllen,
doch es ist meine größte Pflicht, kleine Aufgaben so zu erfüllen,
als ob sie groß und nobel wären.« Helen Keller

9 Grundlegende Verwaltungsaufgaben

Nachdem wir uns im letzten Kapitel in aller Ausführlichkeit der Benutzerverwaltung gewidmet haben, wollen wir im Folgenden weitere wichtige Themen zur Systemadministration behandeln. Beginnen wollen wir dabei mit einem Thema, das sehr eng mit der Benutzerverwaltung zusammenhängt.


Galileo Computing - Zum Seitenanfang

9.1 Rechteverwaltung  Zur nächsten ÜberschriftZur vorigen Überschrift

Die Rechteverwaltung wurde zum Teil bereits in vorhergehenden Kapiteln vorgestellt und soll in diesem Kapitel vom Kopf auf die Füße gestellt werden. Bisher ist Ihnen bekannt, dass jede Datei einen Eigentümer besitzt und einer Gruppe zugeordnet ist. Für Eigentümer und Gruppe sowie für den Rest der Welt werden nun jeweils drei Rechte vergeben oder verweigert: Das Recht zu lesen, zu schreiben und auszuführen. Verändern kann diese Rechte nur der Eigentümer oder eben root, für den sowieso keine Einschränkungen gelten. Rechte anzeigen können wir dabei mit ls:

$ ls -l
-rwxr-xr-x 1 jwmp users 12262 2005-05-08 20:41 test
-rw-r--r-- 1 jwmp users   245 2005-04-16 18:27 test.c

Listing 9.1  Rechte betrachten mit ls

Dabei haben wir auch schon über die Interpretation der hier angezeigten Daten gesprochen: Die Dateien gehören beide dem Benutzer jwmp und der Gruppe users. Für die test-Datei hat der Eigentümer die Rechte rwx, während die Gruppe und die »anderen« die Rechte r-x – also das Lese- und Ausführrecht, aber kein Schreibrecht – besitzen.


Galileo Computing - Zum Seitenanfang

9.1.1 chmod  Zur nächsten ÜberschriftZur vorigen Überschrift

Rechte verändern

Zuerst stellt sich also die Frage, wie man die Rechte auf Dateien verändern kann. Dazu wird das Programm chmod genutzt, das neben der Datei natürlich noch die zu verändernden Rechte als Argument auf der Kommandozeile entgegennimmt. Die neuen Rechte können dabei auf zwei Arten angegeben werden: als eine Oktalzahl, die das Bitmuster der Rechteverteilung repräsentiert, oder als symbolischer Ausdruck.

Rechte als Oktalzahl

Die Rechtemaske für den Eigentümer, die Gruppe und den Rest besteht besteht aus jeweils drei Bits. Ein Bit repräsentiert dabei den Zustand eines Rechts: 0 steht für ein verweigertes Recht, 1 für ein gegebenes Recht. Eine Oktalzahl ist nun eine Zahl zur Basis 8.[Fn. Im Oktalsystem gibt es also keine Ziffer »8« und keine Ziffer »9«. Man zählt somit 1, 2, 3, 4, 5, 6, 7, 10, 11, 12 etc.] Damit kann man eine Ziffer mit drei Bits darstellen: das Bitmuster 000 entspricht der Null, 001 der Eins, 010 der Zwei und schließlich 111 der Sieben. Binär zu zählen ist relativ einfach: Das hinterste Bit entspricht dem Wert 2, also der 1. Das zweite Bit entspricht dem Wert 2 = 2 und das vorderste Bit dem Wert 2 = 4. Möchte man eine Zahl nun binär darstellen, so zerlegt man sie einfach in diese Komponenten: 5 wird damit zu 4 + 1 und damit – man muss jetzt nur die entsprechenden Bits setzen – zu 101 binär.

Drei Zahlen

Um die Rechtemaske einer Datei nun als Oktalzahl darzustellen, brauchen wir drei Oktalzahlen. Die erste Oktalzahl repräsentiert die Rechte des Eigentümers, die zweite die Rechte der Gruppe und die dritte schließlich die Rechte der »Anderen«. Dazu ein einfaches Beispiel:

Beispiel

Nehmen wir die Zahl 660. Die Zahl 6 lässt sich als 4 plus 2 schreiben, womit in der binären Darstellung das zweite und dritte Bit (von rechts gelesen) gesetzt wird. Die Binärzahl 110 wird nun so interpretiert, dass die erste Eins die Rechte für alle anderen Benutzer definiert: Da die Null natürlich kein einziges Bit gesetzt hat, dürfen die anderen Benutzer die Datei weder lesen noch schreiben und schon gar nicht ausführen.

Wie kann man nun die Rechte einer Datei entsprechend den eigenen Vorstellungen setzen? Zuerst muss man sich natürlich überlegen, welche Rechte diese Datei nun eigentlich bekommen soll – und zwar aufgeschlüsselt nach Eigentümer, Gruppe und »Andere«. Hat man sich also einmal überlegt, dass man als Eigentümer die Datei lesen, schreiben und ausführen will, die Gruppe und alle anderen sie jedoch nur lesen und ausführen können sollen, ist wieder etwas Mathematik und Übung gefragt:

Das Lesen, Schreiben und Ausführen zu gewähren bedeutet, dass alle drei Bits in der ersten Oktalzahl gesetzt werden müssen. Diese Zahl ist nun 1 + 2 + 4 = 7. Da die Rechtemaske des Eigentümers zuerst genannt wird, steht diese Zahl im Oktetttripel an erster Stelle. Die Zahlen für die Gruppe und den Rest der Welt ergeben sich analog: Hier soll nur das Lesen und das Ausführen erlaubt sein, was das erste und das letzte Bit in der Binärzahl setzt. Diese Zahl 101 wird nun als 4 + 1 = 5 gelesen und damit entsprechend umgewandelt. Da diese Maske für die Gruppe und den Rest der Welt gilt, ergibt sich eine endgültige Rechtemaske von 755. Mit chmod wird die Maske wie folgt gesetzt:

$ ls -l test.sh
-rw-r--r-- 1 jwmp users 122 2005-05-08 20:41 test.sh
$ chmod 755 test.sh
$ ls -l test.sh
-rwxr-xr-x 1 jwmp users 122 2005-05-08 20:41 test.sh

Listing 9.2  Setzen der Zugriffsrechte mit chmod

Zu kompliziert?

Auf Anfänger wirkt diese Art der Rechtevergabe oft abschreckend, da ihre mathematischen Spitzfindigkeiten zugegeben etwas kompliziert sind. Hat man sich jedoch an diese Notation gewöhnt, wird man sie nicht mehr missen wollen, da sie alle Fakten sehr kompakt und eindeutig definiert. An dieser Stelle sei wieder auf die Unix-Philosophie verwiesen: Professionellen Anwendern wird diese Notation irgendwann in Fleisch und Blut übergehen, und redundanzarm ist sie auch.

Rechte als symbolischer Ausdruck

Einfacher ist dabei der symbolische Ausdruck. Die Manpage von chmod beschreibt diese Angabe als Ausprägung des regulären Ausdrucks

»[ugoa...][[+-=][rwxXstugo...]...][,...]«

Spätestens an dieser Stelle wäre es nun praktisch, die Ausführungen unseres Kapitels über reguläre Ausdrücke verstanden zu haben – aber natürlich werden wir die genaue Notation hier ebenfalls erläutern.

Intuitive Syntax

Jedenfalls kann man den Werten u (User), g (Group), o (Others) und a (All) beziehungsweise sinnvollen Kombinationen aus diesen Werten bestimmte Rechte-Flags zuordnen (=), hinzufügen (+) oder auch entfernen (-). Betrachten wir einige Beispiele:

  • Der Gruppe das Schreibrecht erteilen
    In einem solchen Fall würden wir nicht die ganze bestehende Rechtemaske ändern, sondern nur ein Rechte-Flag hinzufügen. Die Aufgabe erledigt folgender Befehl:
$ chmod g+w test.txt

Listing 9.3  Schreibrecht für die Gruppe

    • Benutzt wurde also das w-Flag, um der Gruppe (g) zusätzlich (+) das Schreibrecht zu gewähren.
  • Allen Benutzern das Ausführungsrecht entziehen
    Diese Aktion funktioniert analog zum Erteilen des Schreibrechts:
$ chmod a-x test.sh

Listing 9.4  Nur noch Lese- und Schreibrecht für den Eigentümer

    • Nun kann die Datei test.sh weder vom Eigentümer noch von der Gruppe oder irgendwem sonst ausgeführt werden.
  • Dem Eigentümer das Lesen und Schreiben erlauben
    Anders als bei den vorherigen Beispielen möchte man in diesem Beispiel nicht die bestehenden Rechte verändern, sondern für den Eigentümer gleich eine ganz neue Maske setzen:
$ chmod u=rw test.ldif

Listing 9.5  Keine Ausführungsrechte mehr

    • Der Eigentümer kann nun unabhängig vom vorherigen Rechtestatus der Datei diese lesen und auch schreiben.

Diese Beispiele sollten den intuitiven Charakter der symbolischen Notation verdeutlicht haben. Wenn man jedoch unterschiedliche Rechte für Eigentümer, Gruppe sowie »Andere« setzen will, bietet sich des Weiteren die Oktalnotation an.


Galileo Computing - Zum Seitenanfang

9.1.2 chown  Zur nächsten ÜberschriftZur vorigen Überschrift

Eigentümer ändern

Wenn man besondere Rechte für den Eigentümer und die Gruppe festlegen kann, stellt sich natürlich die Frage, wie man einen neuen Eigentümer beziehungsweise eine neue Gruppe für eine Datei festlegen kann. Wie wir bereits erklärt haben, wird eine neue Datei immer als Eigentümer den Benutzer haben, der sie erstellt hat, und als Gruppe dessen GID. Aber gerade wenn man als Systemadministrator arbeitet und verschiedenen Benutzern neue Dateien zur Verfügung stellt, ist es wichtig, den Eigentümer jedes Mal entsprechend anpassen zu können.

Für diesen Zweck steht Ihnen das Tool chown (englisch »change owner«) zur Verfügung. Das Programm wird ähnlich wie chmod mit dem neuen Eigentümer und der betroffenen Datei als Argumente aufgerufen:

# ls -l ssc.h
-rw------- 1 jwmp users 946 1999-05-21 14:12 ssc.h
# chown steffen ssc.h
# ls -l
-rw------- 1 steffen users 946 1999-05-21 14:12 ssc.h

Listing 9.6  Den Eigentümer ändern

Gruppen ändern

Im Beispiel wird der Eigentümer von jwmp in steffen geändert. Möchte man auch die Gruppe ändern, so sollte man eine der folgenden Notationen verwenden:

  • User:Gruppe
    Wenn man einen Doppelpunkt, gefolgt von der neuen Gruppe, ohne Leerzeichen an den Benutzernamen anhängt, wird zusätzlich zum neuen Eigentümer auch die Gruppe verändert.
  • :Gruppe
    Möchte man nur die Gruppe ändern, so lässt man einfach den Benutzernamen weg und gibt stattdessen einen Doppelpunkt, gefolgt vom Gruppennamen, ein. Diese Notation verhindert also das Ändern des Eigentümers beim Setzen einer neuen Gruppe.
  • User:
    Im letzten Fall kann man die neue Gruppe der Datei auch auf die Login-Gruppe – also die in der Datei /etc/passwd angegebene GID – setzen. Dazu schreibt man nach dem Benutzernamen einfach nur einen Doppelpunkt ohne die explizite Angabe dieser Gruppe.

Statt mit den Benutzer- und Gruppennamen kann bei chown auch mit UIDs beziehungsweise GIDs gearbeitet werden. Allerdings kann bei den meisten Unix-Systemen aus Sicherheitsgründen nur root einen Eigentümer respektive auch eine neue Gruppe für Dateien festlegen.

chgrp

Ein einfaches Frontend

Ein einfacheres Frontend zum Ändern der Gruppe ist chgrp. Diesem Programm wird einfach die neue Gruppe als Argument übergeben. Oft werden so beim Ändern von Eigentümer und Gruppe einer Datei die Programme chown und chgrp nacheinander benutzt, anstatt den gesamten Vorgang gleich über einen chown-Aufruf zu erledigen.

Oft möchte man natürlich mehr als eine Datei ändern und entweder alle Dateien in einem Verzeichnis oder sogar ganze Verzeichnisstrukturen rekursiv ändern. Für alle – oder auch nur bestimmte – Dateien in einem Verzeichnis helfen logischerweise die bekannten Wildcards der Shell weiter. Für das rekursive Ändern von ganzen Verzeichnissen stellen jedoch alle Programme den Parameter -R bereit. Entsprechend muss natürlich ein Verzeichnis als Argument für chmod, chown oder chgrp angegeben werden. Aber Verzeichnisse werden unter Unix ja, was die Rechte anbelangt, wie normale Dateien behandelt.


Galileo Computing - Zum Seitenanfang

9.1.3 Erweiterte Rechte  Zur nächsten ÜberschriftZur vorigen Überschrift

Außer rwx gibt es auch noch weitere, ergänzende Rechte-Flags, die wir im Folgenden behandeln wollen. Konkret geht es dabei um das SetUID/SetGID-Flag sowie um das Sticky-Bit.

Das SetUID/SetGID-Flag

Programme mit Eigentümerrechten

Dieses Flag ist eine Modifizierung des Execute-Bits: Programme mit dem Set- UID/SetGID-Flag haben die Möglichkeit, unter den Berechtigungen des Eigentümers beziehungsweise der Gruppe der Datei ausgeführt zu werden – auch wenn der Benutzer über diese Rechte normalerweise nicht verfügt.

Ein populäres Beispiel für diese erweiterten Rechte ist das passwd-Programm. Es soll einfachen Benutzern erlauben, ihr Passwort zu ändern, ohne dass diese Zugriff auf den Ort der Speicherung – die Datei /etc/shadow – haben müssen. Somit gehört das Programm dem Benutzer sowie der Gruppe root und hat das SetUID-Flag gesetzt, was man in der ls -l-Ausgabe am Buchstaben »s« erkennt:

$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 9616 Apr 4 4:39 /usr/bin/passwd

Listing 9.7  Programm mit dem SetUID-Flag: passwd

setuid()

Wird das Programm nun von einem einfachen User wie jploetner ausgeführt, so wird nach dem setuid()-Syscall des Programms die EUID des Prozesses auf »0« gesetzt, und das Programm kann auf die Datei /etc/shadow zugreifen und das Passwort für diesen Benutzer ändern.


Nur ganz besonders vertrauenswürdige Programme sollten mit dem SetUID/SetGID-Flag versehen werden, da ein Fehler in einem so privilegierten Programm das gesamte System kompromittieren kann.


Ohne den setuid()-Syscall werden die erweiterten Rechte aus Sicherheitsgründen nicht aktiv. Erstens werden so verschiedene Attacken über Hardlinks oder Shellskripte verhindert, und zweitens beschränkt diese Vorgehensweise die Nutzung der erweiterten Privilegien auf ein Minimum, was wiederum die Sicherheit erhöht.

Außerdem ist die Lösung eines solchen Problems sauber, da der Zugriff auf besonders geschützte Daten über ein vertrauenswürdiges Interface kanalisiert wird. Alternativ könnte man in diesem Beispiel dem Benutzer ein Lese- oder Schreibrecht auf die gesamte Datei geben, was dem Schutzgedanken jedoch deutlich widersprechen würde.

Mit chmod kann man diese Flags wie folgt setzen: Mit dem Parameter u+s setzt man das SetUID-Flag und mit g+s das man das SetGID-Flag. In der Oktaldarstellung setzt man noch eine weitere Zahl vor die drei Oktalzahlen: Addiert man zu dieser Zahl 2, so wird das SetUID-Flag gesetzt, und 2 setzt das SetGID-Flag.

$ chmod g+s test
$ ls -l test
-rwxr-sr-x 1 jploetner users 162 2005-05-08 20:41 test
$ chmod 4755 test
$ ls -l test
-rwsr-xr-x 1 jploetner users 162 2005-05-08 20:41 test
$ chmod 755 test
$ ls -l test
-rwxr-xr-x 1 jploetner users 162 2005-05-08 20:41 test

Listing 9.8  Das SetUID-Flag mit chmod setzen

Das Sticky-Bit

Sicherheit für Eigentümer

Das Sticky-Bit wird heutzutage meistens auf Verzeichnissen gesetzt: Durch diese Veränderung können dort nur root und der jeweilige Eigentümer Dateien löschen oder umbenennen. Ist das Sticky-Bit nicht gesetzt, könnte jeder Benutzer, der Schreibrechte auf das Verzeichnis besitzt, Dateien umbenennen oder auch löschen.

Aus diesem Grund werden vor allem alle schreibbaren Verzeichnisse wie /tmp mit dem Sticky-Bit versehen. In diesem Verzeichnis können Programme sowie Benutzer temporäre Dateien anlegen, und fatale Sicherheitsprobleme wären die Folge, wenn solche Dateien von anderen Benutzern einfach entfernt oder umbenannt werden könnten.

$ ls -ld /tmp
drwxrwxrwt 14 root root 4096 2005-05-24 23:33 /tmp

Listing 9.9  Das /tmp-Verzeichnis mit Sticky-Bit

Auf Dateien ist dieses Bit mittlerweile unüblich und wird je nach Unix-Derivat sogar ignoriert. Die Semantik war ursprünglich, dass ein entsprechender Prozess nicht auf den Swap-Bereich der Festplatte ausgelagert werden soll. Jedoch weiß das Betriebssystem in der Regel selbst am besten, was wann ausgelagert wird, und so wird das Bit in der Regel ignoriert.

Um das Sticky-Bit zu setzen, nutzen Sie wieder chmod: Als symbolischen Ausdruck wählen Sie entweder +t oder setzen in der oktalen Repräsentation in der vierten, zusätzlichen Zahl das 2-Bit:

$ ls -ld world
drwxrwxrwx 2 jploetner users 48 2005-05-24 23:48 world
$ chmod +t world
$ ls -ld world
drwxrwxrwt 2 jploetner users 48 2005-05-24 23:48 world
$ chmod 777 world
$ ls -ld world
drwxrwxrwx 2 jploetner users 48 2005-05-24 23:48 world
$ chmod 1777 world
$ ls -ld world
drwxrwxrwt 2 jploetner users 48 2005-05-24 23:48 world

Listing 9.10  Das Sticky-Bit setzen


Galileo Computing - Zum Seitenanfang

9.1.4 umask  Zur nächsten ÜberschriftZur vorigen Überschrift

Voreinstellungen für Rechte

Das letzte Rechte-Thema soll nun das umask-Tool sein, mit dem man Voreinstellungen für die Rechte neu angelegter Dateien setzen kann. Diese Rechte werden ähnlich wie bei chmod durch eine Oktettmaske von vier Zahlen repräsentiert. Jedoch ist diese Maske invertiert, das heißt, es werden alle durch umask gesetzten Rechte-Bits bei neuen Dateien nicht gesetzt und die damit verknüpften Rechte somit entzogen.

Mit anderen Worten würde eine umask von 0022 verhindern, dass bei neuen Dateien das Schreibrecht für die Gruppe und den Rest der Welt gesetzt werden würde. Die umask kann man mit dem gleichnamigen Konsolenprogramm verändern:

$ umask
0022
$ umask 0002
$ umask
0002

Listing 9.11  Die umask verändern

Um das ganze Vorgehen besser zu verstehen, wollen wir etwas unter die Haube schauen. Die umask ist eine Eigenschaft des Prozesses und kann über einen gleichnamigen Syscall verändert werden. Nichts anderes tut auch das kleine Shell-Builtin.

$ type umask
umask is a shell builtin

Listing 9.12  Programm oder Builtin?

Integration ins System

Diese Prozesseigenschaft wird nun aktiv, wenn Sie eine Datei mit dem open()-Syscall erstellen: Dort wird das diesem Syscall optional übergebbare mode-Argument intern mit der umask verknüpft, um so die Rechte einer neuen Datei zu bestimmen. Bei einem Standard-mode von 0666 und einer umask von 0022 würde eine Datei also mit den Rechten 0666 - 0022 = 0644, also rw-r--r--, angelegt. Aber natürlich hat der Programmierer einer Applikation die Möglichkeit, erstens das mode-Argument zu verändern und zweitens nach dem Aufruf direkt einen chmod()-Syscall zu machen, um die Rechte der eben mit den umask-Einschränkungen erstellten Datei zu ändern.


Galileo Computing - Zum Seitenanfang

9.1.5 Access Control Lists  topZur vorigen Überschrift

PingGanz

Manchmal ist die Welt leider etwas zu kompliziert, um sie mit Unix-Rechten befriedigend abbilden zu können. Aus diesem Grund wurden für einige Dateisysteme wie beispielsweise XFS oder ext3 die sogenannten Access Control Lists, kurz ACLs, implementiert. Möchte man ACLs mit Ext2/Ext3-Dateisystemen nutzen, so benötigt man nur einen aktuellen 2.6er-Kernel.[Fn. Bei Kerneln der 2.4er-Reihe benötigte man noch einen speziellen Patch.]

Beispiel

Access Control Lists sind im Prinzip eine mächtige Erweiterung der Standardrechte. Stellen Sie sich vor, Sie hätten eine Firma mit einer Abteilung Rechnungswesen. Diese Abteilung darf natürlich auf eine Datei bzw. eine Datenbank mit den aktuellen Rechnungen zugreifen. Nun ist aber ein Mitarbeiter in Ungnade gefallen, und Sie möchten ihm das Zugriffsrecht für diese eine Datei entziehen, allerdings soll er weiterhin auf alle anderen Daten der Gruppe »Rechnungswesen« zugreifen dürfen. Mit Unix-Rechten ist diese Situation, wenn überhaupt, nur sehr kompliziert zu lösen, mit ACLs ist es jedoch so einfach wie mit chmod, ein Recht zu setzen.

Bei ACLs werden die Rechte nicht mehr nur für den Eigentümer, die Gruppe und den Rest der Welt festgelegt. Vielmehr wird, wie der Name schon sagt, mit einer Art Liste der Zugriff für jeden Nutzer und jede Gruppe separat gesteuert.

ACLs aktivieren

Auch wenn der ACL-Support in aktuellen Kerneln bereits aktiviert ist, müssen je nach Distribution noch die Userland-Tools zum Arbeiten mit ACLs installiert werden. Meist heißt das entsprechende Paket schlicht acl, und nach der Installation muss der entsprechende Support als Option für das Mounten nur noch in der Datei /etc/fstab aktiviert werden:

/dev/hda3 /home ext3 defaults,acl 0 2

Nach einem Reboot beziehungsweise einem Remount der entsprechenden Partition können ACLs nun genutzt werden. Wichtig ist allerdings, dass ACLs vom Dateisystem unterstützt werden müssen, wie dies beispielsweise bei Ext3 der Fall ist.

ACLs setzen

Mit einem einfachen Aufruf des Programms setfacl aus den ACL-Tools kann man nun entsprechende Rechte für Benutzer beziehungsweise Gruppen setzen:

$ setfacl -m u:jploetner:--- test.txt
$ setfacl -m g:autoren:rwx test.txt

Listing 9.13  ACL-Administration mit setfacl

In diesem Beispiel werden für die Datei test.txt zwei zusätzliche Rechte definiert. Dazu wird die Option -m genutzt, da man die Zugriffskontrollliste modifizieren möchte. Dem Benutzer (gekennzeichnet durch ein vorangestelltes u:) jploetner wurden alle Rechte auf die Datei explizit entzogen, da sie auf --- gesetzt worden sind, und der Gruppe (g:) autoren wurden alle Rechte gegeben.

Bevor wir uns damit beschäftigen, wie man die soeben gesetzten ACLs wieder betrachten kann, wollen wir zuerst einmal klären, wie die ACLs nun im System aktiv werden und ob das bisher konsistente Gesamtbild der Rechte durch dieses neue Feature gestört wird.

ACLs werden aktiv

Möchte nun also ein Benutzer auf eine Datei zugreifen, so werden zuerst die Standardrechte aktiv. Ist er der Besitzer der Datei, läuft alles wie gehabt. Andernfalls werden die ACLs gefragt, und es gilt: Die speziellste Regel greift. Ist also ein Eintrag für den Benutzer selbst vorhanden, so gilt dieser Eintrag. Ansonsten gilt der Eintrag der Gruppe, soweit einer vorhanden ist. Die Rechte aus der ACL können dabei aber nur so weit reichen, wie es die Standardgruppenrechte der Datei erlauben. Damit stehen also die normalen Unix-Rechte über den ACLs, und alles hat seine Ordnung. Und wenn schließlich kein spezieller Eintrag für den Benutzer oder seine Gruppe in der ACL existiert, werden wie bisher die Vorgaben für den Rest der Welt bindend.

ACLs abfragen

Eine ACL für eine bestimmte Datei oder ein bestimmtes Verzeichnis kann man sich mit getfacl <Datei> ähnlich wie bei ls -l <Datei> ansehen.

Hinweis

Um eine tabellarische Auflistung zu erhalten, können Sie den Parameter --tabular verwenden.

$ getfacl file.txt
#file:file.txt
#owner:jploetner
#group:users
user::rw-
user:swendzel:rw-
group::r--
mask::rw-
other::---

Listing 9.14  getfacl

Beispiel

Hier im Beispiel hat also der Benutzer swendzel noch ein explizit angegebenes Schreibrecht. Ansonsten sieht man die normalen Eigentümer- und Gruppenrechte sowie die sonstigen Rechte und die durch die Gruppenrechte gegebene effektive Maske für die ACLs.

Neue Versionen der GNU-binutils können ebenfalls mit ACLs umgehen.[Fn. Die meisten Distributionen liefern ihre binutils schon mit einkompiliertem ACL-Support aus, hier ist also keine Handarbeit notwendig.] So zeigt ls beim langen Listing ein Plus nach den Rechten an, wenn ACLs vergeben wurden:

$ ls -l file.txt
-rw-rw----+ 1 jploetner users 36 Jun 21 13:56 file.txt

Listing 9.15  ACLs und ls

Mit diesem kleinen Ausblick wollen wir die Rechteverwaltung abschließen. Als Nächstes erläutern wir eine weitere wichtige Verwaltungsaufgabe: Die Installation von Software.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  Zum Katalog
Zum Katalog: Linux

Linux
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: VirtualBox






 VirtualBox


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


Zum Katalog: openSUSE 11.2






 openSUSE 11.2


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: LPIC-1






 LPIC-1


Zum Katalog: UNIX






 UNIX


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-
 Programmierung


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de