Berechtigungen des Dateisystems
Unter Linux ist jede Datei und jedes Verzeichnis mit bestimmten Berechtigungen versehen. Man kann sich die Berechtigungen ansehen, indem man an der Konsole z.B. den Befehl ls -l eingibt. Berechtigungen werden ferner auch von Dateimanagern angezeigt und können oft auch bei grafischen Desktop-Oberflächen z.B. per Rechtsklick→Eigenschaften angezeigt und verändert werden.
Beispiel
Gibt man an der Linux-Shell den Befehl ls -l ein, so erhält man in etwa die folgende Ausgabe:
chme@xpert:~/dokumente$ ls -l insgesamt 3 -rw-r--r-- 1 chme chme 35 2003-10-28 19:05 berechtigungen.txt -rw-r--r-- 1 chme chme 27 2003-10-28 19:05 dokument1.txt drwx------ 2 chme chme 1024 2003-10-28 19:05 verzeichnis chme@xpert:~/dokumente$Wie man hier sehen kann, stehen die Berechtigungen in der linken Spalte. In der dritten und vierten Spalte steht jeweils der Benutzername und der Name der Gruppe, der diese Datei gehört.
Berechtigungen von Dateien
Im Beispiel oben handelt es sich bei den ersten beiden Einträgen um Dateien. Eine Bereichtigung, bei der jeder das Recht zu lesen, zu schreiben und zum Ausführen hat, sieht folgendermaßen aus:
-rwxrwxrwxDie Berechtigung besteht aus drei Paaren von rwx. Jedes r steht für lesbar, jedes w steht für Schreibzugriff und jedes x steht für ausführbar.
Die erste Kombination von rwx steht für den Benutzer, dem diese Datei gehört (ablesbar in der dritten Spalte der Ausgabe von ls -l). Im Falle von rwx kann der Benutzer die Datei lesen, sie verändern und ausführen. Fehlt hier das x, so ist die Datei auch nicht ausführbar, wie dies bei den meisten Datendateien der Fall ist.
Die zweite rwx-Kombination bezeichnet die Berechtigungen für Benutzer, welche der bestimmten Gruppe angehören (vierte Spalte der Ausgabe von ls -l). So kann man hier z.B. mit r– festlegen, dass Benutzer, welche der besagten Gruppe angehören, eine Datei nur lesen, aber nicht verändern können.
Die dritte Kombination von rwx steht für die Berechtigungen, welche alle anderen Benutzer haben. Wenn man nicht möchte, dass andere Benutzer die eigenen Dokumente lesen können, so gibt man hier z.B. — an.
Berechtigungen von Verzeichnissen
Bei Verzeichnissen sieht eine Berechtigung so aus:
drwxrwxrwx
Hier beschreibt das erste Zeichen d, dass es sich um ein Verzeichnis (Directory) handelt. Die Berechtigungen sind in etwa wie bei den Dateien, allerdings bedeutet das x hier nicht ausführbar, sondern eher 'begehbar', d.h., es legt fest, ob bestimmte Benutzer in das Verzeichnis wechseln dürfen oder nicht.
Ändern von Berechtigungen
Um die Berechtigungen von Dateien bzw. Verzeichnissen zu ändern, gibt es den Befehl chmod:
chmod a+r test.txt
Dieser Befehl setzt die Berechtigung für Lese-Zugriff für alle, d.h. für den Eigentümer, die Gruppe und alle anderen.
Der Aufbau des Befehls chmod sieht etwa so aus:
chmod A?B dateiname
Hier werden die Werte für A, ? und B folgendermaßen ersetzt:
Zeichen | Bedeutung |
---|---|
A | u (Benutzer), g (Gruppe), o (andere) oder a (alle) |
? | + (Rechte hinzufügen) oder - (Rechte entfernen) |
B | r (Lesezugriff), w (Schreibzugriff) oder x (ausführbar/begehbar) |
So entfernt der Befehl
chmod u-x /home/paul/datei
die Berechtigung „Ausführen“ für den Besitzer an der Datei /home/paul/datei. Der Befehl
chmod -R u-x /home/paul/
entfernt die Berechtigung „x“ ab dem Ordner /home/paul/ an allen Dateien und Ordnern.
Alternativ hierzu können Berechtigungen auch folgendermaßen gesetzt werden:
chmod ABC dateiname
Die Werte für A, B und C erhalten Sie, indem Sie die Rechte anhand der folgenden Tabelle addieren:
Berechtigung | A: Benutzer | B: Gruppe | C: Andere |
---|---|---|---|
r (lesen) | 4 | 4 | 4 |
w (schreiben) | 2 | 2 | 2 |
x (ausführen) | 1 | 1 | 1 |
Soll eine Datei beispielsweise die Berechtigung
rw-r-----erhalten, so gibt man ein:
chmod 640 dateiname
Sonderberechtigungen
rws | rws | rwT |
---|---|---|
set UserID on execution | set GroupID on Execution | sticky Bit mit x-Ausführungsrecht |
mit chmod 1777 /usr/bin/passwd root shadow (=chmod +s)können die Sonderrecht eingerichtet werden, wobei hier nur die 1. Ziffer betrachtet wird:
0 | kein Sonderrecht | |
1 | sticky Bit | Löschrecht unterhalb des Verzeichnisses |
2 | n SGID | Dateien gehören zur Gruppe der Verzeichnisgruppe |
3 | 1+2 | |
4 | SUID | Prozesse ausführen, (Bsp. passwd, gpasswd, mount, ping) die normalerweise kein user ausführen darf(root-Rechte) |
5 | 1+4 | |
6 | 2+4 | |
7 | 1+2+4 |
Suchne nach Berechtigungen
suchen nach einer Datei mit den Rechten rwx r-s r-x in kompletten Verzeichnisbaum:
find / -perm 2755
Standard-Zugriffsrechte setzen
Man kann natürlich auch Zugriffsrechte festlegen, welche für neue Dateien standardmäßig gelten sollten. Dies geschieht mit dem Kommando umask, welches man an das Initialisierungsskript der Shell, z.B. .cshrc oder .bash_profile anhängen oder in dieser Datei verändern kann, wenn es dort schon vorhanden ist. Die Berechtigungen für neue Dateien und Verzeichnisse sehen dann z.B. folgendermaßen aus:
Wert für umask | Datei | Verzeichnis |
---|---|---|
022 | - r w - r - - r - - | d r w x r - x r - x |
027 | - r w - r - - - - - | d r w x r - x - - - |
077 | - r w - - - - - - - | d r w x - - - - - - |
Der Aufruf lautet dann z.B. so:
umask 022
Den aktuellen umask-Wert bekommt man heraus, indem man einfach nur umask eingibt.
Übung zur Vererbung
Fred erzeugt einen Ordner:
mkdir fred, chmod 775
Wilma gibt Folgendes ein:
touch /fred/wilma.txt, vi Inhalt, chmod 700, mkdir /fres/wilma-verz, chmod 700, touch /fred/wilma-verz/wilma2.txt
Ergebnis
Fred kommt weder an die Datei wilma.txt, noch an das Verzeichnis wilma-verz ran.