Tipp: Dateirechte unter Linux
Das Konzept der Dateirechte unter Linux bereitet Benutzern wie Administratoren gerade in der Anfangszeit immer wieder Probleme. Grund genug also, hier einen genaueren Blick darauf zu werfen!
Die Notwendigkeit von Dateirechten im PC-Bereich fiel mit der zunehmenden Nutzung einzelner Geräte durch mehrere Personen zusammen. Microsoft beispielsweise führte Dateirechte mit dem Start des Dateisystems NTFS Anfang der 1990er Jahre ein.
Bereits bei Unix-Dateisystemen gab es die gleichen Berechtigungsstrukturen, wie sie heute unter Linux bei den gängigen Dateisystemen (ext2, ext3, ext4, btrfs, xfs, reiserfs usw.) üblich sind.
Grundsätzlich unterscheidet man bei Dateirechten zwei Kategorien: ‘Besitzrechte’ und ‘Zugriffsrechte’.
Besitzrechte
Jede Datei ist genau einem Besitzer und einer Gruppe zugeordnet. Die Zuordnung zu weiteren Besitzern oder Gruppen ist ohne die Nutzung erweiterter Zugriffsrechte nicht möglich.
Bei einer typischen Ausgabe des Befehls ls
mit dem Parameter -l
,
der eine ausführliche Ausgabe erzeugt, sind ‘Besitzer’ (hier user
)
und ‘Gruppe’ (hier group
) deutlich sichtbar:
user@linux ~$ ls -l
-rw-r--r-- 1 user group 634 19. Feb 14:12 kapitel1.txt
-rwxr-xr-x 1 user group 512 19. Feb 14:12 myscript
Neben dem Besitzer und benannten Gruppen gibt es immer eine weitere Gruppe, die immer dann zum Tragen kommt, wenn der Zugriff weder vom Besitzer noch einem Mitglied einer angegebenen Gruppe erfolgt: Diese ``Gruppe der Namenlosen’’ heißt schlicht ‘andere’ (other).
Die Auswertung der Besitzrechte erfolgt immer in der Reihenfolge Benutzer -> Gruppe -> Andere. Auch wenn durch eine Fehlkonfiguration einer Gruppe weiterreichende Rechte an einer Datei gegeben wurden als dem Besitzer selbst, so hat sie dennoch nur die maximalen Rechte des Benutzers. Hier gilt also das Prinzip des ‘First Match’, also des ersten Treffers.
Zugriffsrechte
Die Zugriffsrechte sagen aus, welche Rechte der durch die Besitzrechte bestimmte Benutzer, die Gruppe oder andere auf die Datei haben.
In dem oben aufgeführten Beispiel beschreibt die Zeichenfolge
-rw-r--r--
die Zugriffsrechte für die Datei kapitel1.txt
Genau genommen gehört das erste Zeichen, in diesem Fall ein einzelner
Strich (-
), nicht zu den Zugriffsrechten. Es repräsentiert vielmehr
den Dateityp, und der Strich steht für eine ``normale’’ Datei.
An dieser Position könnten auch folgende Buchstaben stehen bzw. folgende Typen markiert sein:
d
- Verzeichnisl
- Links
- Socketp
- Pipeb
- blockorientiertes Gerätc
- zeichenorientiertes Gerät
Die folgenden Zeichen lassen sich in drei Gruppen zu je drei Zeichen gliedern.
Die erste Dreiergruppe (hier rw-
) bezeichnet die Rechte für den
Besitzer, die zweite (hier r--
) für die Gruppe und die letzte für
alle anderen (hier ebenfalls r--
).
Die drei Dreiergruppen sind gleich aufgebaut: Das erste Zeichen gibt
jeweils die ‘Leseberechtigung’ an (r
für ‘read’), das zweite die
‘Scheibberechtigung’ (w
für ‘write’) und das dritte die
Ausführberechtigung (x
für ’execute’). Bei dem letzten Zeichen gibt
es Sonderfälle, die später folgen.
Steht an einer Stelle statt des Buchstabens, der das entsprechende
Recht repräsentiert, der Strich (-
), so ist das Recht nicht gesetzt.
Für unser Beispiel bedeutet das, dass die Gruppe die Datei
kapitel1.txt
zwar lesen, aber weder verändern/schreiben noch
ausführen darf.
Die Leseberechtigung erlaubt es, den Inhalt einer Datei auszugeben:
user@linux ~$ cat kapitel1.txt
Hello World!!!
Bei Verzeichnissen bedeutet es, in das entsprechende Verzeichnis
wechseln und sich dessen Inhalt ansehen zu dürfen. Verzeichnisse sind,
getreu dem Linux/Unix-Grundsatz Everything is a file'' (
Alles ist
eine Datei’’), auch nur Dateien, in denen die Inhalte des
Verzeichnisses aufgelistet sind.
Die Schreibberechtigung erlaubt es, Daten in eine Datei zu schreiben oder, im Falle eines Verzeichnisses, neue Dateien anzulegen:
user@linux ~$ cat kapitel1.txt
Hello World!!!
user@linux ~$ echo "Hello User!" >> kapitel1.txt
user@linux ~$ cat kapitel1.txt
Hello World!!!
Hello User!
Alle mit einem x
markierten Dateien dürfen ausgeführt werden,
allerdings nur dann, wenn auch der Pfad zur Datei angegeben wird (oder
der Dateipfad in der Umgebungsvariablen PATH
hinterlegt ist).
user@linux ~$ /home/user/myscript
Ein tolles Program...
user@linux ~$ ./myscript
Ein tolles Programm...
user@linux ~$ myscript
-bash: myscript: Kommando nicht gefunden.
Für Verzeichnisse hat die Ausführberechtigung eine besondere
Bedeutung: Hier weist das x
darauf hin, dass man in das Verzeichnis
wechseln darf.
Neben diesen ``normalen’’ Rechten kann an Stelle der
Ausführberechtigung für das Zeichen x
auch ein s
stehen – bei den
anderen auch ein t
.
Das s
steht bei der Besitzergruppe für SetUID
. Eine solche Datei
wird bei Ausführung statt mit den Rechten des ausführenden Benutzers
mit den Rechten des Besitzers – im Beispiel die des Benutzers root
– ausgeführt. Im Linux-System gibt es einige Dateien, die mit diesem
Recht arbeiten, zum Beispiel der Befehl mount
:
user@linux ~$ ls -l /bin/mount
-rws--x--x 1 root root 48160 17. Dez 11:54 /bin/mount
Ohne dieses Recht könnte ein normaler Benutzer keine Dateisysteme einhängen.
Steht das s
bei der Gruppe, hat es die Bedeutung SetGID
, d.h. bei
Ausführung der Datei wird die Gruppe als effektive Gruppe gesetzt. Ist
SetGID
für ein Verzeichnis gesetzt, erhalten alle in dem Verzeichnis
neu angelegten Dateien oder Verzeichnisse automatisch die angegebene
Gruppe. Es ist also eine Art Vererbung, die es sonst in
Linux-Dateisystemen nicht gibt. Besitzrechte neuer Dateien werden
sonst immer auf den Benutzer und dessen primäre Gruppe gesetzt.
Betrachten wir zuletzt das Zeichen t
, das statt des x
nur für die
anderen gesetzt sein kann. Es steht für das sog. ‘Sticky Bit’ und
spielt nur im Zusammenhang mit temporären Verzeichnissen wie
z.B. /tmp
eine Rolle:
user@linux ~$ ls -ld /tmp
drwxrwxrwt 22 root root 620 19. Feb 14:24 /tmp
Das Verzeichnis bietet volle Rechte für jeden. Damit könnte auch jeder die Dateien eines anderen löschen oder umbenennen. Das ‘Sticky Bit’ schränkt dies innerhalb des Verzeichnisses so ein, dass Dateien nur noch von den eingetragenen Besitzern gelöscht oder umbenannt werden können.
So viel zur Übersicht über die Dateirechte. Der nächste Artikel dieser Reihe wird sich dem Setzen und Verändern dieser Besitz- und Zugriffsrechte widmen.