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

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

Spacer
Linux von Johannes Plötner, Steffen Wendzel
Das umfassende Handbuch
Buch: Linux

Linux
Rheinwerk Computing
1282 S., 5., aktualisierte Auflage 2012, geb., mit 2 DVDs
49,90 Euro, ISBN 978-3-8362-1822-1
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 Das Slackware-Paketsystem
Pfeil 14.2.5 Gentoo Portage
Pfeil 14.2.6 BSD-Ports
Pfeil 14.2.7 Softwareinstallation ohne Pakete
Pfeil 14.3 Tätigkeiten automatisieren
Pfeil 14.3.1 Skripte & Co.
Pfeil 14.3.2 Cronjobs
Pfeil 14.3.3 Punktgenau mit »at«
Pfeil 14.4 Logging
Pfeil 14.4.1 Logdateien
Pfeil 14.4.2 syslogd
Pfeil 14.4.3 logrotate
Pfeil 14.4.4 logcheck
Pfeil 14.5 Dateisystemverwaltung
Pfeil 14.5.1 /etc/fstab
Pfeil 14.5.2 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 & Co.
Pfeil 14.6 Kernel kompilieren
Pfeil 14.6.1 Kernel-Quellen besorgen
Pfeil 14.6.2 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 und Co.
Pfeil 14.7.5 modconf
Pfeil 14.8 Magic SysRq
Pfeil 14.8.1 Aktivierung von SysRq
Pfeil 14.8.2 Tastenkombinationen
Pfeil 14.9 Lokalisierung
Pfeil 14.9.1 Tastaturbelegung
Pfeil 14.9.2 Deutsche Sprache
Pfeil 14.9.3 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 VerwaltungsaufgabenZur nächsten Überschrift

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 Punkt, der sehr eng mit der Benutzerverwaltung zusammenhängt.


Rheinwerk Computing - Zum Seitenanfang

14.1 RechteverwaltungZur nächsten ÜberschriftZur vorigen Überschrift

Die Rechteverwaltung wurde zum Teil bereits in vorhergehenden Kapiteln vorgestellt und soll im Folgenden 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 ohnehin keine Einschränkungen gelten. Rechte anzeigen können wir dabei mit ls:

Listing 14.1 Rechte betrachten 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

Wir haben auch schon über die Interpretation der hier angezeigten Daten gesprochen: Beide angezeigten Dateien gehören dem Benutzer jwmp und der Gruppe users. Für die Datei test 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.


Rheinwerk Computing - Zum Seitenanfang

14.1.1 chmodZur nächsten ÜberschriftZur vorigen Überschrift

Rechte verändern

Zuerst stellt sich also die Frage, wie man die Rechte auf Dateien verändern kann. Hierzu dient das Programm chmod, das neben der Datei 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. [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 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 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 der Gruppe und die dritte schließlich die Rechte der »anderen«. Dazu ein einfaches Beispiel:

[zB]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 also 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, wozu das erste und das letzte Bit in der Binärzahl gesetzt sein müssen. 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:

Listing 14.2 Setzen der Zugriffsrechte mit chmod

$ 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

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 wiedergibt. 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 der symbolische Ausdruck. Die Manpage von chmod beschreibt ihre Syntax mit dem regulären Ausdruck [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 noch erläutern.

Intuitive Syntax

Man kann den Bezeichnern u (user), g (group), o (others) und a (all) beziehungsweise sinnvollen Kombinationen aus ihnen bestimmte Rechte-Flags zuordnen (=), sie 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 Flag hinzufügen. Die Aufgabe erledigt folgender Befehl:

Listing 14.3 Schreibrecht für die Gruppe

$ chmod g+w test.txt

    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:

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

$ chmod a-x test.sh

    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:

Listing 14.5 Keine Ausführungsrechte mehr

$ chmod u=rw test.ldif

    Der Eigentümer kann nun unabhängig vom vorherigen Rechtestatus der Datei diese lesen und auch schreiben, aber nicht ausführen.

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 weiterhin die Oktalnotation an.


Rheinwerk Computing - Zum Seitenanfang

14.1.2 chownZur 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 Gruppenzuordnung 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 Gruppenzuordnung 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. Es wird ähnlich wie chmod mit dem neuen Eigentümer und der betroffenen Datei als Parameter aufgerufen:

Listing 14.6 Den Eigentümer ändern

# 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

Gruppen ändern

Im Beispiel wird der Eigentümer von jwmp in steffen geändert. Möchte man auch die Gruppenzuordnung ä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 Zuordnen zu einer neuen Gruppe.
  • User:
    Im letzten Fall kann man die neue Gruppenzuordnung 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 einer 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 Gruppenzuordnung für Dateien festlegen.

chgrp

Ein einfaches Frontend

Ein einfacheres Frontend zum Ändern der Gruppenzuordnung 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 beeinflussen und entweder alle Dateien in einem Verzeichnis oder sogar ganzen Verzeichnisstrukturen rekursiv ändern. Sollen alle – oder auch nur bestimmte – Dateien in einem Verzeichnis betroffen sein, helfen logischerweise die bekannten Wildcards der Shell weiter. Für das rekursive Ändern ganzer Verzeichnisse stellen jedoch alle Programme den Parameter -R bereit. Dann muss entsprechend ein Verzeichnis als Argument für chmod, chown oder chgrp angegeben werden. Allerdings werden Verzeichnisse unter Unix ohnehin, was die Rechte anbelangt, wie normale Dateien behandelt.


Rheinwerk Computing - Zum Seitenanfang

14.1.3 Erweiterte RechteZur 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 zugeordneten Gruppe der Datei ausgeführt zu werden – auch wenn der ausführende 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:

Listing 14.7 Programm mit dem setuid-Flag: passwd

$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 9616 Apr 4 4:39 /usr/bin/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; das Programm kann nun 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 dem Parameter u+s setzt man mit chmod das setuid-Flag, mit g+s das setgid-Flag. In der Oktaldarstellung setzt man noch eine weitere Ziffer vor die drei Oktalziffern: Addiert man zu ihr 22, so wird das setuid-Flag gesetzt, und 21 setzt das setgid-Flag.

Listing 14.8 Das setuid-Flag mit chmod setzen

$ 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

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 öffentlich schreibbare Verzeichnisse wie /tmp mit dem Sticky-Bit versehen. In diesem Verzeichnis können Programme aller Benutzer temporäre Dateien anlegen. Fatale Sicherheitsprobleme wären die Folge, wenn solche Dateien von anderen Benutzern einfach entfernt oder umbenannt werden könnten.

Listing 14.9 Das /tmp-Verzeichnis mit Sticky-Bit

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

Bei Dateien ist dieses Bit mittlerweile unüblich. Die Semantik war ursprünglich, dass ein entsprechender Prozess nicht in 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 je nach verwendetem Unix-Derivat 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 Ziffer das 20-Bit:

Listing 14.10 Das Sticky-Bit setzen

$ 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

Rheinwerk Computing - Zum Seitenanfang

14.1.4 umaskZur 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 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: Eine umask von 0022 verhinderte, dass bei neuen Dateien das Schreibrecht für die Gruppe und den Rest der Welt gesetzt würde. Die umask kann man mit dem gleichnamigen Konsolenprogramm verändern:

Listing 14.11 Die umask verändern

$ umask
0022
$ umask 0002
$ umask
0002

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.

Listing 14.12 Programm oder Builtin?

$ type umask
umask is a shell builtin

Integration ins System

Diese Prozesseigenschaft wird nun relevant, 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, d. h. rw-r--r--, angelegt. Allerdings hat der Programmierer einer Applikation die Möglichkeit, das mode-Argument zu verändern oder aber nach dem Aufruf direkt einen chmod()-Syscall aufzurufen, um die Rechte der soeben mit den umask-Einschränkungen erstellten Datei zu ändern.


Rheinwerk Computing - Zum Seitenanfang

14.1.5 Access Control ListsZur nächsten ÜberschriftZur vorigen Überschrift

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 so genannte 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.]

[zB]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 solches einzelnes 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 nun ACLs 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:

Listing 14.13 ACL-Administration mit setfacl

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

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 (Setzen auf ---), und der Gruppe (g:) autoren wurden alle Rechte gegeben.

Bevor wir uns damit beschäftigen, wie man die soeben gesetzten ACLs anzeigen lassen 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 ein Benutzer auf eine Datei zugreifen, so sind zunächst die Standardrechte relevant. Ist er der Besitzer der Datei, läuft alles wie gehabt. Andernfalls werden die ACLs abgefragt, 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 schlussendlich 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.

Listing 14.14 getfacl

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

group::r--
mask::rw-
other::---

[zB]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-coreutils können ebenfalls mit ACLs umgehen. [Fn. Die meisten Distributionen liefern ihre coreutils 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:

Listing 14.15 ACLs und ls

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

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



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


Zum Rheinwerk-Shop: Linux Server






 Linux Server


Zum Rheinwerk-Shop: Raspberry Pi






 Raspberry Pi


Zum Rheinwerk-Shop: Ubuntu 14.04 LTS






 Ubuntu 14.04 LTS


Zum Rheinwerk-Shop: Roboter bauen mit Arduino






 Roboter bauen
 mit Arduino


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2012
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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern