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 vs. BSD
1 Der Kernel
2 Die Grundlagen aus Anwendersicht
3 Die Shell
4 Reguläre Ausdrücke
5 Tools zur Dateibearbeitung
6 Die Editoren
7 Shellskriptprogrammierung
8 Benutzerverwaltung
9 Grundlegende Verwaltungsaufgaben
10 Netzwerk-Grundlagen
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 Sicherheit
24 Prozesse und IPC
25 Bootstrap und Shutdown
26 Dateisysteme
27 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

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

Spacer
 <<   zurück
Linux von Johannes Plötner, Steffen Wendzel
Das distributionsunabhängige Handbuch
Buch: Linux

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

9.1 Rechteverwaltung  downtop

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 diese beiden sowie für den Rest der Welt werden nun jeweils drei Rechte vergeben oder verweigert: lesen, schreiben und ausfü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

9.1.1 chmod  downtop

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, 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, ...> 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 dabei relativ einfach: Das hinterste Bit entspricht dem Wert 20, 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 zum Beispiel 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 oder schlicht Ü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 sie 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 diese 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. In der Manpage von chmod wird diese Angabe als Ausprägung des regulären Ausdrucks

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

beschrieben. 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 davon bestimmte Rechte-Flags zuordnen (=), hinzufügen (+) oder auch entfernen (-). Betrachten wir einige Beispiele:

  • Der Gruppe das Schreibrecht geben
  • In einem solchen Fall würden wir nicht die ganze bestehende Rechtemaske ändern, sondern nur ein Rechte-Flag hinzufügen wollen. 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 (+) noch das Schreibrecht zu gewähren.
  • Allen Benutzern das Ausführungsrecht entziehen
  • Diese Aktion funktioniert ganz analog zum obigen Beispiel:
$ chmod a-x test.sh

Listing 9.4    Keine Ausführungsrechte mehr

  • 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 verständlich gemacht haben. Wenn man jedoch unterschiedliche Rechte für Eigentümer, Gruppe sowie »andere« setzen will, bietet sich weiterhin die Oktalnotation an.


Galileo Computing

9.1.2 chown  downtop

Eigentümer ...

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 geklä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 dabei ä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

... und 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 /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 alles 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

9.1.3 Erweiterte Rechte  downtop

Außerdem gibt es außer rwx 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 SetUID/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 diese Rechte normalerweise nicht hätte.

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 jedoch 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« sehen kann:

$ 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 /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. Die Alternative in diesem Beispiel wäre, dem Benutzer ein Lese- oder Schreibrecht auf die gesamte Datei zu geben, was dem Schutzgedanken jedoch deutlich widersprechen würde.

Mit chmod kann man diese Flags wie folgt setzen: Mit dem Parameter »u+s« kann man das SetUID-Flag und mit »g+s« das SetGID-Flag setzen. In der Oktaldarstellung setzt man noch eine weitere Zahl vor die drei Oktalzahlen: Addiert man zu ihr 22, 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 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, nimmt man nun wieder chmod zur Hand: Als symbolischen Ausdruck wählt man entweder »+t«, oder in der oktalen Repräsentation wird in der vierten, zusätzlichen Zahl das 20-Bit gesetzt:

$ 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

9.1.4 umask  downtop

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, d.  h., es werden alle in der 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 macht auch das kleine Shell-Builtin.

$ type umask 
umask is a shell builtin

Listing 9.12    Programm oder Bultin?

Integration ins System

Diese Prozesseigenschaft wird nun aktiv, wenn Sie eine Datei mit dem open()-Syscall erstellen: Dort wird nämlich 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 (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

9.1.5 Access Control Lists  toptop

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 Recht auf 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 – wie der Name schon sagt, kann mit einer Art Liste der Zugriff für jeden Nutzer und jede Gruppe separat gesteuert werden.

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 /etc/fstab aktiviert werden:

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

Listing 9.13    Auszug aus der fstab

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.14    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 jetzt damit beschäftigen, wie man die eben 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, werden zuerst die Standardrechte aktiv. Ist er der Besitzer, läuft alles wie gehabt. Ansonsten werden die ACLs gefragt, und es gilt: Die speziellste Regel greift.

Ist also ein Eintrag für den Benutzer selbst vorhanden, zählt dieser. Ansonsten gilt der Eintrag der Gruppe, soweit einer vorhanden ist. Die Rechte aus der ACL können dabei aber nur so weit gehen, 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 schließlich mit getfacl <Datei> ähnlich wie bei ls -l <Datei> ansehen:

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

Listing 9.15    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.

Und auch halbwegs neue Versionen der GNU-binutils können 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 9.16    ACLs und ls

Mit diesem kleinen Ausblick soll die Rechteverwaltung abgeschlossen sein. Als Nächstes wollen wir eine weitere wichtige Verwaltungsaufgabe besprechen: Die Softwareinstallation.



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

 Buchtipps
Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: Einstieg in Linux






 Einstieg in Linux


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-
 Programmierung


Zum Katalog: Praxisbuch Netzwerk-Sicherheit






 Praxisbuch
 Netzwerk-Sicherheit


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




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