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

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

Download:
- ZIP, ca. 15,7 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Linux von Johannes Pl&ouml;tner, Steffen Wendzel
Das umfassende Handbuch
Buch: Linux

Linux
geb., mit 2 DVDs
1302 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1704-0
Pfeil 14 Grundlegende Verwaltungsaufgaben
  Pfeil 14.1 Rechteverwaltung
    Pfeil 14.1.1 chmod
    Pfeil 14.1.2 chown
    Pfeil 14.1.3 Erweiterte Rechte
    Pfeil 14.1.4 umask
    Pfeil 14.1.5 Access Control Lists
  Pfeil 14.2 Softwareinstallation
    Pfeil 14.2.1 Paketverwaltung und Ports
    Pfeil 14.2.2 APT – Advanced Packaging Tool
    Pfeil 14.2.3 Pakete in Handarbeit: dpkg und rpm
    Pfeil 14.2.4 .tgz Packages unter Slackware
    Pfeil 14.2.5 Das Gentoo Portage System
    Pfeil 14.2.6 BSD-Ports
    Pfeil 14.2.7 Softwareinstallation ohne Pakete
  Pfeil 14.3 Tätigkeiten automatisieren
    Pfeil 14.3.1 Skripts
    Pfeil 14.3.2 Cronjobs
    Pfeil 14.3.3 Punktgenau mit »at«
  Pfeil 14.4 Logging
    Pfeil 14.4.1 Die Logdateien
    Pfeil 14.4.2 Der syslogd
    Pfeil 14.4.3 logrotate
    Pfeil 14.4.4 logcheck
  Pfeil 14.5 Dateisystemverwaltung
    Pfeil 14.5.1 Die /etc/fstab
    Pfeil 14.5.2 Das Tool »mount«
    Pfeil 14.5.3 Platz beschränken: Quotas
    Pfeil 14.5.4 du und df
    Pfeil 14.5.5 SoftRAID und LVM
    Pfeil 14.5.6 Backups, Archive
  Pfeil 14.6 Kernel kompilieren
    Pfeil 14.6.1 Die Kernel-Quellen besorgen
    Pfeil 14.6.2 Die Konfiguration
    Pfeil 14.6.3 Den Kernel übersetzen
    Pfeil 14.6.4 Den Bootloader anpassen
    Pfeil 14.6.5 BSD-Kernel kompilieren
  Pfeil 14.7 Kernelmodule verwalten
    Pfeil 14.7.1 modprobe
    Pfeil 14.7.2 lsmod
    Pfeil 14.7.3 insmod und rmmod
    Pfeil 14.7.4 /etc/modules
    Pfeil 14.7.5 modconf
  Pfeil 14.8 Linux' SysRq
    Pfeil 14.8.1 Aktivierung von SysRq
    Pfeil 14.8.2 Tastenkombinationen
  Pfeil 14.9 Lokalisierung
    Pfeil 14.9.1 Die Tastaturbelegung
    Pfeil 14.9.2 Die deutsche Sprache
    Pfeil 14.9.3 Das Einstellen der Uhr
    Pfeil 14.9.4 Texte von anderen Plattformen
  Pfeil 14.10 Zusammenfassung
  Pfeil 14.11 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

14 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

14.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 14.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

14.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 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. [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 21 = 2 und das vorderste Bit dem Wert 22 = 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:


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 14.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 (-). Hier 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 14.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 14.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 14.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

14.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 (engl. 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 14.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

14.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ümer- rechten

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 14.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 SetGID-Flag. In der Oktaldarstellung setzt man noch eine weitere Zahl vor die drei Oktalzahlen: Addiert man zu dieser Zahl 22, so wird das SetUID-Flag gesetzt, und 21 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 14.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. 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 14.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 20-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 14.10  Das Sticky-Bit setzen


Galileo Computing - Zum Seitenanfang

14.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 14.11  Die umask verändern

Um das ganze Vorgehen besser zu verstehen, wollen wir ein wenig 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 14.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

14.1.5 Access Control Lists  topZur vorigen Überschrift

Abbildung Tux

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. [Bei Kerneln der 2.4er-Reihe benötigte man noch einen speziellen Patch.]


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 14.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.


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 14.14  getfacl


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. [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 14.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, Ausgabe 2011






Linux, Ausgabe 2011
Jetzt bestellen


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

 Buchempfehlungen
Zum Katalog: Linux-Server






 Linux-Server


Zum Katalog: Linux Hochverfügbarkeit






 Linux Hoch-
 verfügbarkeit


Zum Katalog: LPIC-1






 LPIC-1


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


Zum Katalog: openSUSE 11.2






 openSUSE 11.2


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2011
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