Ein Projekt von Meg Palffy

Zugriffsrechte setzen, Verzeichnisse und Dateien schützen

Wozu gibt es Zugriffsrechte?

Zugriffsrechte sind dazu da, damit mehrere Benutzer, die auf demselben Rechner arbeiten, einander nicht in die Quere kommen, und damit Unbefugte keinen Schaden an fremden Dateien oder sogar am Betriebssystem anrichten können. Die Systemverzeichnisse und -dateien des Linux-Systems sind auf diese Weise vor unerlaubten Zugriffen geschützt. Nur der Superuser (der Systemadministrator "root") kann uneingeschränkt auf alle Verzeichnisse und Dateien zugreifen. Normale Benutzer wie "meg" und "tux" können das in der Regel nicht. Ihr Wirkungskreis ist jeweils auf ihr eigenes Home-Verzeichnis begrenzt.

Mit Hilfe der Zugriffsrechte kannst Du Deine eigenen Dateien in Deinem Home-Verzeichnis vor anderen Benutzern verstecken. So kannst Du z.B. verhindern, daß jemand anders Deine neueste Homepage zu sehen kriegt, bevor sie ganz offiziell ins Netz geht... ;o)

Zugriffsrechte setzen (einfache Erklärung)

Um die Zugriffsrechte für Verzeichnisse oder Dateien zu setzen, verwende ich den Befehl chmod ("change mode").

Dazu ein Beispiel: Wenn ich festlegen will, daß andere Benutzer meiner Gruppe die Datei datei.txt zwar lesen, aber nicht ändern dürfen, dann gebe ich die folgende Zeile ein:

    meg@rutabaga:~> chmod 640 datei.txt

Die drei Ziffern hinter dem Befehl chmod enthalten eine Kurzfassung der Rechte, die ich setze.

Die folgende Liste sagt Dir, was die Ziffern genau bedeuten:

0 keine Rechte: darf nicht lesen, nicht schreiben und auch nicht ausführen
1 lese- und schreibgeschützt: darf nur ausführen (z.B. eine Scriptdatei), aber nicht lesen und nicht schreiben
2 darf nur schreiben, aber nicht lesen und nicht ausführen
3 darf schreiben und ausführen, aber nicht lesen
4 schreibgeschützt: darf nur lesen, aber nicht schreiben und nicht ausführen
5 schreibgeschützt: darf lesen und ausführen, aber nicht schreiben
6 darf lesen und schreiben, aber nicht ausführen
7 alle Rechte: darf lesen, schreiben und ausführen

Verwirrend? Keine Sorge: Ein paar typische praktische Beispiele, wie Du den Befehl chmod anwenden kannst, findest Du weiter unten im Abschnitt Dateien und Verzeichnisse schützen.

Zugriffsrechte setzen (etwas technischere Erklärung)

Diesen Abschnitt kannst Du auch überspringen. Er ist nicht unbedingt notwendig, um den Befehl chmod richtig anzuwenden. Er kann aber hilfreich sein, um das Thema Zugriffsrechte etwas besser zu verstehen (z.B. wenn Du Dich fragst, woher die geheimnisvollen Ziffern 0 bis 7 bei der Rechtevergabe stammen).

Um dem Ursprung der Ziffern 0 bis 7 auf die Spur zu kommen, laß Dir mit dem Befehl ls mal die ausführlichen Informationen zu einer Datei anzeigen:

    meg@rutabaga:~> ls -l datei.html
    -rw-rw-r--   1 meg   users   248 Jun 29 16:34 datei.html

Dem Ergebnis kannst Du unter anderem entnehmen, daß meg die Besitzerin der Datei datei.html ist, und daß sie zur Gruppe users gehört. Außerdem findest Du am Anfang der Zeile ganz links noch die Angabe -rw-rw-r--.

Das erste Zeichen (-) gibt an, daß es sich um eine Datei handelt. (Bei Verzeichnissen steht an dieser Stelle ein d für "directory".)

Danach folgen drei Dreiergruppen rw-, rw- und r--. Sie geben die genauen Zugriffsrechte der Datei an:

Jede Dreiergruppe kann grundsätzlich aus den Zeichen r ("read" = lesen), w ("write" = schreiben) und x ("execute" = ausführen) bestehen. Wenn der jeweilige Buchstabe in einer Dreiergruppe gesetzt ist, zeigt das an, daß die entsprechende Aktion erlaubt ist. Wenn statt eines Buchstabens das Zeichen - steht, dann zeigt das an, daß die entsprechende Aktion nicht erlaubt ist.

Im Beispiel oben entspricht also die Angabe -rw-rw-r-- den folgenden Zugriffsrechten:

Und woher kommen denn nun die Ziffern 0 bis 7 im Befehl chmod? Ganz einfach: Dahinter steckt eine dreistellige binäre Zahl, die in eine dezimale Zahl umgerechnet wurde. Und zwar so:

Denk Dir statt der Buchstaben rwx (= alle Rechte) die binäre Zahl 111. Das entspricht der dezimalen 7, für "alle Rechte" (siehe Liste der Ziffern). Für jeden der drei Buchstaben, die durch das Zeichen - ersetzt werden, ersetze die binäre Ziffer 1 durch eine 0. Die dreistellige binäre Zahl, die Du so erhältst, rechnest Du dann in eine dezimale Zahl um.

So wird z.B. aus der Angabe rw- (= Lese- und Schreibrecht) die binäre Zahl 110. Diese binäre Zahl entspricht der dezimalen 6 (= Lese- und Schreibrecht, siehe Liste der Ziffern). Oder, zweites Beispiel: Aus der Angabe r-- (= nur Leserecht) wird die binäre Zahl 100, und die entspricht der dezimalen 4 (= nur Leserecht, siehe Liste der Ziffern).

Um das Umrechnen der binären Zahlen in dezimale Zahlen zu vereinfachen, kannst Du Dir vorstellen, daß die Zeichenfolge rwx der Ziffernfolge 421 entspricht. Also so:

    rwx
    421

Jetzt addierst Du einfach die Zahlen der Rechte, die Du setzen willst. Das Ergebnis ist eine dezimale Zahl von 0 bis 7.

Fertig. Das ist schon fast zu leicht, stimmts? ;o)

Dateien und Verzeichnisse schützen

Hier ein paar praktische Beispiele, wie Du die Zugriffsrechte für Dateien und Verzeichnisse festlegen kannst.

Hinweis: In den Beispielen auf dieser Seite gebe ich nach dem Befehl chmod den Befehl ls -l ein, um die neu gesetzten Rechte zu kontrollieren. (Eine kurze Beschreibung des Befehls ls (list) findest Du im Abschnitt Durch die Verzeichnisse navigieren.) Als Ergebnis werden die neu gesetzten Rechte in der Form -rw-r--r-- angezeigt (siehe Zugriffsrechte setzen (etwas technischere Erklärung)). In diesen Beispielen ist die Besitzerin der Datei immer "meg", und die Gruppe immer "users".

Berechtigungen für eine Datei setzen, so daß die Besitzerin die Datei lesen und verändern darf. Die Mitglieder der Gruppe und alle übrigen Benutzer dagegen dürfen die Datei nur lesen.

    meg@rutabaga:~> chmod 644 datei.txt
    meg@rutabaga:~> ls -l
    -rw-r--r--    1 meg      users           5 Jun 30 13:12 datei.txt

oder mit Parameter:
-v = verbose: Meldungen für jeden Arbeitsschritt ausgeben

    meg@rutabaga:~> chmod -v 644 datei.txt
    Modus von datei.txt nach 0644 (rw-r--r--) geändert

Berechtigungen für eine Datei setzen, so daß die Besitzerin die Datei lesen und verändern darf. Die Mitglieder der Gruppe und alle übrigen Benutzer dagegen haben keinerlei Rechte.

    meg@rutabaga:~> chmod 600 datei.txt
    meg@rutabaga:~> ls -l
    -rw-------    1 meg      users           5 Jun 30 13:12 datei.txt

oder mit Parameter:
-v = verbose: Meldungen für jeden Arbeitsschritt ausgeben

    meg@rutabaga:~> chmod -v 600 datei.txt
    Modus von datei.txt nach 0600 (rw-------) geändert

Berechtigungen für ein Verzeichnis setzen, so daß die Besitzerin das Verzeichnis lesen und verändern darf. Die Mitglieder der Gruppe und alle übrigen Benutzer dagegen dürfen das Verzeichnis zwar lesen und den Inhalt ansehen, aber nichts verändern.

    meg@rutabaga:~> chmod 755 ./verzeichnis/
    meg@rutabaga:~> ls -l
    drwxr-xr-x    2 meg      users          60 Jun 30 13:12 verzeichnis

oder mit Parameter:
-v = verbose: Meldungen für jeden Arbeitsschritt ausgeben

    meg@rutabaga:~> chmod -v 755 ./verzeichnis/
    Modus von ./verzeichnis nach 0755 (rwxr-xr-x) geändert

Berechtigungen für ein Verzeichnis und alle darin enthaltenen Verzeichnisse und Dateien setzen, so daß die Besitzerin das Verzeichnis mit allen Unterverzeichnissen und Dateien lesen und verändern darf. Den Mitgliedern der Gruppe und allen übrigen Benutzern ist der Zugriff auf das Verzeichnis ganz verwehrt.
Parameter:
-R = rekursiv: Befehl auch auf Unterverzeichnisse und Dateien anwenden
-v = verbose: Meldungen für jeden Arbeitsschritt ausgeben)

    meg@rutabaga:~> chmod -Rv 700 ./verzeichnis/
    Modus von ./verzeichnis nach 0700 (rwx------) geändert
    Modus von ./verzeichnis/datei.txt nach 0700 (rwx------) geändert