Benutzerrechte

Klippstein IT Service

Aus 4webmaster.de

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

ist Merkmal von::Dateien und ist Merkmal von::Verzeichnisse (nicht aber Verknüpfungen) haben eine Regelung der Benutzerrechte. Geregelt ist, wer welchen Zugriff auf die Datei oder das Verzeichnis hat.

Fehlerhaft gesetzte Benutzerrechte gehören zum Alltag jedes Administrators und sind ein ständiger Fehlerquell. Sind die Benutzerrechte zu restrikiv gesetzt, funktioniert es nicht. Sind sie zu lasch gesetzt, machen Sie sich zum leichten Ziel von Angreifern und gehen damit u.U. erhebliche rechtliche und finanzielle Risiken ein.

Wessen Zugriff wird geregelt?

Linux unterscheidet drei Berechtigungsstufen, für die sich die Benutzerrechte jeweils unterschiedlich einstellen lassen:

  1. der Eigentümer der Datei oder des Verzeichnisse (user)
  2. eine bestimmte Gruppe von Usern mit besonders privilegierten Zugriffsrechten (group)
  3. alle anderen (other)

Die Stufen enthalten einander, d.h. der Besitzer einer Datei hat immer auch alle Rechte der Gruppe und aller anderen. Die Gruppe hat zwar nicht die Rechte des Eigentümers, aber stets mindestens die Rechte aller anderen. Für jede dieser drei Stufen muss die erlaubte Art des Zugriffes einzeln festgelegt werden.

Zuoberst steht zusätzlich die Stufe root. User mit Rootrechten dürfen alles. Das folgende Diagramm veranschaulicht die Rechte der einzelnen Sufen:

Root

Eigentümer (u)

Gruppe (g)

alle Anderen (o)

Was für eine Art von Zugriff wird erlaubt oder verboten?

Drei verschiedene Zugriffsarten werden unterschieden:

  • r = read = lesen erlauben oder verbieten
  • w = write = schreiben erlauben oder verbieten
  • x = execute = ausführen erlauben oder verbieten

Verzeichnisse kann man nicht ausführen. Sie haben aber trotzdem eine x-Zugriffsregelung. Bei Verzeichnissen bedeutet das Fehlen der x-Berechtigung, dass man sie nicht mehr mit dem Befehl cd betreten kann.

Siehe auch: erweiterte Dateirechtbits Setuid, Setgid sowie das Sticky Bit.

Mit welche Befehlen lassen sich die Benutzerrechte regeln?

Um die Benutzerrechte für eine Datei oder ein Verzeichnis zu setzen, müssen Sie für alle drei Klassen (u, g und o) jeweils alle drei Zugriffsarten regeln, d.h. Sie müssen in 3 x 3 = 9 Bereichen den Zugriff jeweils erlauben oder verbieten. Dazu können Sie den Befehl chmod verwenden.

Jede Datei und jedes Verzeichnis braucht außerdem einen Eigentümer. Mit dem Befehl chown können Sie den Eigentümer festlegen.

Weiterhin sind ja stets auch die Zugriffsrechte für eine bestimmte Gruppe mit besonders privilegierten Zugriffsrechten geregelt. Welche spezielle Gruppe das sein soll, legen Sie mit chgrp fest.

Benutzerrechte anzeigen

Mit dem Befehl

ls -hal

können Sie sich die Regelung der Benutzerrechte aller Dateien und Unterverzeichnisse im aktuellen Verzeichnis anzeigen lassen. Sie erhalten eine Ausgabe wie im folgenden Beispiel:

drwxrwxr-x  3 bjoern bjoern 4,0K 2007-08-08 17:04 images
-rwxrwxr-x  1 bjoern bjoern 4,8K 2002-05-21 00:52 index.htm
lrwxrwxrwx  1 bjoern bjoern   15 2007-08-08 18:07 wiki -> /var/www/wiki

Das erste Zeichen zeigt, ob es sich um eine Datei ("-"), ein Verzeichnis ("d") oder eine Verknüpfung ("l") handelt. Danach folgt die Regelung der Benutzerrechte:

  1. Wer darf was, also die Information die sich mit chmod ändern lässt. Hier z.B. rwxrwxr-x
  2. dann der Eigentümer (der sich mit chown ändern lässt), hier bjoern
  3. dann die Gruppe (die sich mit chgrp ändern lässt), hier ebenfalls , hier bjoern

und dann weitere Angaben.

Die neun Zeichen, in den die "Wer darf was"-Regelung dargestellt wird, gliedern sich in drei Blöcke. Die ersten drei Stellen beschreiben Sie die Rechte des Eigentümers. Die mittleren drei Stellen beschreiben die Rechte der Gruppe (also die Gruppe der User mit speziellen Rechten). Die letzten drei Stellen beschreiben die Rechte aller anderen.

Die Benutzerrechte, die ls für Verknüpfungen anzeigt, können Sie igorieren. Maßgeblich sind nur die Benutzerrechte des Verknüpfungszieles, die aber zeigt ls nicht an.

Typische Kombinationen

Typ Eigentümer Gruppe alle anderen Oktal Bedeutung
Verzeichnis rwx rwx r-x 775 Verzeichnis mit Vollzugriff des Eigentümers und der Gruppe. Andere können lesen und das Verzeichnis betreten.
Verzeichnis rwx r-x r-x 755 Typische Berechtigung für Verzeichnisse. Nur der Eigentümer hat Vollzugriff. Die Gruppe und Andere können lesen und das Verzeichnis betreten.
Verzeichnis r-x r-x r-x 555 Nur-Lese-Verzeichnis für alle außer root.
Datei rw- rw- r-- 664 Der Eigentümer und die Gruppe können die Datei verändern, andere nur lesen.
Datei rw- r-- r-- 644 Typische Berechtigung für Textdateien. Nur der Eigentümer kann sie verändern, aber jeder kann sie lesen.
Datei r-- r-- r-- 444 Nur-Lese-Datei für alle außer root.
Ausführbare Datei rwx r-x r-x 755 Typische Berechtigung für Scripte und Programme. Nur der Eigentümer hat Vollzugriff. Die Gruppe und Andere können das Script ausführen und lesen.

Erlaubte Zugriffsarten ändern

Der Befehl zum Ändern der erlaubten Zugriffsarten (read / write / execute) lautet chmod. Mit chmod können Sie die Benutzerrechte auf zwei verschiedene Weisen ändern:

  • relativ zu den schon vorhandenen Rechten können Lese-, Schreib- oder Ausführungsrechte hinzugefügt oder entzogen werden. Dazu verwenden Sie ein relativ kompliziertes System von Optionen, das Sie der man-Page von chmod entnehmen können (Befehl: man chmod), wenn die untenstehenden Beispiele nicht ausreichen.
  • absolut und unabhängig von den schon vorhandenen Rechten kann die Regelung der Benutzerrechte eindeutig festgelegt werden. Dazu geben Sie die gewünschten Rechte als dreistellige Oktalzahl an.
    rwx bedeutet dabei 7, r-x ist oktal 5, und r-- ist 4. Die Oktalzahl 755 bedeutet also rwxr-xr-x.
    Obige Übersicht gibt die Oktalzahlen der gängigsten Rechtekombinationen wieder.


Beispiele für absolute Änderungen:

Anwendung auf Befehl Erklärung
Datei sudo chmod 644 Name einer Textdatei Erlaubte Zugriffsarten für typische Textdatei festlegen (siehe oben)
Verzeichnis sudo chmod 755 Verzeichnisname Erlaubte Zugriffsarten für typisches Verzeichnis festlegen (siehe oben)
Ausführbare Datei sudo chmod 755 Name eines Scriptes Erlaubte Zugriffsarten für typisches Script festlegen (siehe oben)
Verknüpfung sudo chmod 755 Name einer Verknüpfung Legt die erlaubten Zugriffsarten des Verknüpfungszieles fest


Beispiele für relative Änderungen:

Befehl Erklärung
sudo chmod -w Dateiname Allen die Schreibrechte entziehen
sudo chmod +x Name eines Scriptes Eine reine Textdatei in ein ausführbares Script wandeln
sudo chmod u+w Dateiname Dem Eigentümer ("u") Schreibrechte verleihen
sudo chmod ug+w Dateiname Dem Eigentümer und der Gruppe ("ug") Schreibrechte verleihen
sudo chmod o-w Dateiname Nur den Anderen ("o") die Schreibrechte entziehen

Erlaubte Zugriffsarten rekursiv ändern

Die Benutzerrechte eines Verzeichnisses vererben sich nicht auf seine Unterverzeichnisse. Stattdessen können Sie die erlaubten Zugriffsarten eines Verzeichnisses (theoretisch) mit dem Befehl chmod -R rekursiv ändern. D.h. sie ändern nicht nur die erlaubten Zugriffsarten des einen Verzeichnisses, sondern auch die aller darin enthaltenen Dateien und Unterverzeichnisse (und deren Dateien).

Der Haken dabei ist: Dateien und Verzeichnisse bekommen die gleichen erlaubten Zugriffsarten. Das wollen Sie ganz sicher nicht! Eine rekursive Zuweisung, die nur für Dateien (oder nur für Verzeichnisse) gilt, beherrscht chmod nicht. Damit ist die Verwendung der Option -R meist unpraktikabel.

Mit folgendem Befehl können Sie die erlaubten Zugriffsarten aller Verzeichnisse rekursiv auf den Standardwert 755 ändern:

sudo find /name/des/verzeichnisses/ -type d -exec chmod 755 {} \;

Und mit folgendem Befehl ändern Sie die erlaubten Zugriffsarten aller Dateien, die sich im Verzeichnis befinden, rekursiv auf den Standardwert 644 für Textdateien:

sudo find /name/des/verzeichnisses/ -type f -exec chmod 644 {} \;

Enthält ihr Verzeichnis auch Verknüpfungen? Dann überprüfen Sie, ob obige Befehle die Benutzerrechte der Verknüpfungsziele korrekt gesetzt haben. Ich habe es nicht ausprobiert.

Eigentümer und Gruppe ändern

Die Regelung der Benutzerrechte bezieht sich wie oben ausgeführt auf drei verschiedene Berechtigungsstufen: Was darf der Eigentümer, was darf die besonders privilegierte Gruppe (auch Eigentümergruppe genannt), was dürfen alle anderen.

Das bedeutet, dass Sie für jede Datei und jedes Verzeichnis festlegen müssen, wer der Eigentümer ist und welche Gruppe privilegierten Zugriff bekommen soll. Mit dem Befehl

chown apacheuser eindateiname

ändern Sie den Eigentümer der angegebenen Datei auf den User apacheuser. Mit

chown -R bjoern /ein/verzeichnisbaum

ändern Sie den Eigentümer des angegebenen Verzeichnisses und seines kompletten Inhaltes inkl. aller Unterverzeichnisse rekursiv auf den User bjoern.

Wollen Sie nicht den Eigentümer festlegen, sondern die Gruppe, dann verwenden Sie statt chown den Befehl chgrp. Der Syntax ist identisch.


ist Merkmal von::Datei Keywords::Zugriffsrecht Keywords::Zugriffsrechte Keywords::Dateisystemberechtigungen Keywords::Dateiberechtigungen siehe auch::Wikipedia:Inode siehe auch::Wikipedia:Access_Control_List




Klickbare Grafik