Zu_Befehl.png

Rechte und Pflichten – meine oder Deine Datei?

Zu Befehl

01.10.2000
Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Dateien und Verzeichnisse haben unter Unix nicht nur einen Besitzer, sondern auch eine ganze Liste von Zugriffsrechten – eine gute Grundlage, um gezielten Zugang zu Files erlauben oder verbieten zu können. Solche Berechtigungen legen ebenfalls fest, ob eine Datei ausführbar ist und wer diese ausführen darf. Mit dem Kommando ls (für englisch "list") und dem Parameter -l kann man nachschauen, wie das für einzelne Files aussieht:

huhn@huehnerstall ~ > ls -l
drwxr-xr-x   3 huhn     huhn         1024 Aug 21 18:56 ./
drwxr-xr-x  11 huhn     huhn         1024 Aug  5 14:33 ../
-rw-r--r--   1 huhn     games        7790 Aug  5 15:32 datei
-rwxr-xr-x   1 huhn     huhn         7780 Aug  5 17:19 datei2

-rw-r--r-- sind die Zugriffsrechte für datei, der Besitzer heißt huhn, und der Name der Gruppe ist games. Wie schlüsselt man aber die Kombination aus Strichen und Buchstaben für die Rechte auf? Das erste Zeichen steht für den Dateityp, hier ein "-" für eine normale Datei. Alternativ könnte dort ein "d" für ein Verzeichnis ("directory") auftauchen, ein "l" für einen symbolischen Link usw. Das "r" steht für Leseerlaubnis ("read"), das "w" für Schreibberechtigung ("write") und das "x" für die Erlaubnis, die Datei ausführen zu dürfen ("executable"). Die ersten drei Zeichen gehören zum Dateieigentümer, die nächsten drei zur Gruppe, und die letzte Dreiergruppe gehört zu allen übrigen Benutzern des Systems. Je nachdem, welcher Buchstabe dort erscheint, darf das File entsprechend gelesen, geschrieben oder ausgeführt werden. Für das File datei in dem Beispiel oben gilt: Der Besitzer huhn darf die Datei lesen und verändern, Angehörige der Gruppe games und alle anderen Benutzer dürfen sie lesen. Die datei2 darf vom Besitzer gelesen, verändert und ausgeführt werden, die anderen Benutzer dürfen sie lesen und ausführen, aber nicht darin schreiben.

chmodifizierte Rechte

Das Programm chmod ändert die Zugriffsrechte von Dateien und Verzeichnissen, allerdings nur die eigenen. Der Superuser root kann auch die Rechte von fremden Files verändern. Als Parameter werden bei chmod die neuen Zugriffsrechte und eine oder mehrere Dateien, die verändert werden sollen, angegeben. Es gibt zwei verschiedene Möglichkeiten, wie die Zugriffsrechte angegeben werden können: Bei der symbolischen Schreibweise wird zuerst klargemacht, wessen Rechte verändert werden sollen. Dieses geschieht mit Buchstaben: "u" steht für den Eigentümer ("user"), "g" für die Gruppe ("group") und "o" für alle anderen ("others"). Kombinationen dieser Kürzel sind möglich, indem man sie ohne Leerzeichen hintereinander hängt, z. B. "ug" oder "go". Übrigens kann man "ugo" einfach mit "a" (für "all") abkürzen. Anschließend folgt (wiederum ohne Leerzeichen) entweder ein "+", ein "-" oder ein "=". Das "+" beduetet, dass Rechte hinzukommen, das "-" entsprechend, dass welche weggenommen werden. Mit dem "=" werden genau die Rechte gesetzt, die im Aufruf angegeben sind, während bei "+" und "-" nicht erwähnte Rechte der Datei unverändert bleiben. Dahinter stehen dann noch die Rechte selbst – hier kommen wieder "r", "w" und "x" ins Spiel.

Das klingt auf den ersten Blick alles recht kompliziert, wird aber schnell klar, wenn man sich ein paar Beispiele dazu anschaut:

huhn@huehnerstall ~ > chmod g+w datei
huhn@huehnerstall ~ > ls -l datei
-rw-rw-r--   1 huhn  games   0 Aug  5 15:32 datei

Die Übersetzung lautet: Ändere die Rechte für die Gruppe ("g") dahingehend, dass Schreibrechte ("w") zusätzlich ("+") bestehen. Jetzt kann also nicht nur der Besitzer, sondern auch jedes Mitglied der Gruppe die Datei verändern.

huhn@huehnerstall ~ > chmod o=rx datei
huhn@huehnerstall ~ > ls -l datei
-------r-x   1 huhn  games   0 Aug  5 15:32 datei

Dieser Aufruf setzt die Rechte für alle übrigen Benutzer explizit auf "r-x". Natürlich können auch mehrere Schritte zu einem einzigen zusammengefasst werden. chmod ug=rx,u+s datei erlaubt zunächst dem Eigentümer und der Gruppe, die Datei zu lesen und auszuführen, und setzt dann das s-Bit für den Eigentümer:

-r-sr-xr-x   1 huhn  games   0 Aug 5 15:32 datei

Aber bitte mit Zahlen!

Eine andere Möglichkeit, mit chmod Rechte zu verändern, ist die Verwendung von drei- oder vierstelligen Oktalzahlen. Hierbei werden jedesmal alle Rechte mit einem Aufruf komplett neu gesetzt. Die Abkürzungen "u", "g" und "o" werden jeweils einer Ziffer zugeordnet. Jede dieser Zahlen ist eine Summe aus 4 (Leserechte), 2 (Schreibrechte) und 1 (Datei darf ausgeführt werden), z. B. lässt sich 777 in rwxrwxrwx oder 644 in rw-r--r-- übersetzen. Um das s-Bit zu setzen, wird noch eine weitere Ziffer an den Anfang gesetzt, wiederum die Summe aus 4 (s-Bit für den Eigentümer), 2 (s-Bit für die Gruppe) und 1 (t-Bit). Ein chmod 4755 datei setzt also die Rechte auf rwsr-xr-x – alle dürfen die Datei lesen und ausführen, zusätzlich ist das s-Bit für den Eigentümer gesetzt.

Rechte oktal und symbolisch

In dieser Tabelle können Sie die "Umrechnung" zwischen symbolischen Rechten und der Darstellung in Oktalzahlen nachschlagen:

---  0           r--  4
--x  1           r-x  5 (=4+1)
-w-  2           rw-  6 (=4+2)
-wx  3 (=2+1)    rwx  7 (=4+2+1)

Übrigens haben die neun Zugriffsrechte auch bei Verzeichnissen Gültigkeit, allerdings eine leicht abweichende Bedeutung: "r" steht weiterhin für "readable", d. h. andere Anwender können den Inhalt des Verzeichnisses mit ls betrachten. Bei einem gesetzten "x" darf mit dem Kommando cd directory in das Verzeichnis gewechselt werden. Nur, wenn "x" und "w" dort stehen, dürfen von anderen Benutzern fremde Dateien in das Verzeichnis kopiert werden, sonst gibt es eine Fehlermeldung der Form cp: cannot create regular file `/home/huhn/test/datei': Permission denied.

Achtung Rekursion!

Die Kommandos chmod, chown und chgrp arbeiten mit dem Parameter -R (die Langform ist --recursive) auch rekursiv. Wenn man z. B. einem ganzen Dateibaum die Schreibrechte für die Gruppe nehmen möchte, sollte man

chmod -R g-w verzeichnis

von dessen übergeordnetem Verzeichnis aufrufen. Ein einfaches Beispiel macht das Problem schnell klar: Angenommen, es gibt ein Verzeichnis b, das in a liegt, und für b sollen eben diese Schreibrechte für die Gruppe entfernt werden – der o. g. Aufruf erfolgt aus a heraus. Damit kann man alle Dateien, egal ob versteckt (.datei) oder nicht, in diesem untergeordneten Verzeichnis erfassen. Allerdings gelten die veränderten Rechte nun auch für das Unterverzeichnis. Was geschieht also, wenn man ein chmod -R 600 * aufruft? Bevor irgendetwas in einem Unterverzeichnis passiert, wird das * ausgewertet: Dateien, die auch in b erfasst werden sollen, können nicht mehr erreicht werden, weil zuerst die Rechte des Unterverzeichnisses auf drw------- gesetzt wurden, die Fehlermeldung des Systems lautet: chmod: b/datei: Permission denied. Der Trick, wie man das Unterverzeichnis selbst auslassen kann, liegt in einem kombinierten Aufruf aus den Kommandos find (s. "Zu Befehl 06/2000") und chmod:

huhn@huehnerstall ~ > find b -type f -exec chmod 600 \{\} \;
huhn@huehnerstall ~ > ls -l b
drwxr-xr-x   3 huhn     huhn         1024 Aug 21 21:48 ./
drwxr-xr-x   3 huhn     huhn         1024 Aug 21 22:27 ../
-rw-------   1 huhn     huhn            0 Aug 21 20:53 .datei
-rw-------   1 huhn     huhn            0 Aug 21 20:48 datei

Des Rätsels Lösung: Zuerst wird in b nach Dateien (-type f) gesucht, auf welche dann das Kommando chmod 600 angewendet wird. Das Unterverzeichnis selbst bleibt davon unberührt.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • chmod, chown, chgrp und umask
    Hände weg von fremden Dateien: Dank eines ausgefeilten Rechte-Systems können Sie unter Linux Ihre Dateien für andere Benutzer freigeben oder sperren. Dazu setzen Sie entweder Kommandos wie chmod und chgrp ein oder legen schon im Vorfeld mit umask fest, wer was darf.
  • Zu Befehl
    Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilen-Dschungel ein wenig auszukennen.
  • Zutritt erlaubt!
    Ein ausgefeiltes Benutzer- und Rechtesystem regelt unter Linux präzise, wer Zugriff worauf erhält. Die Besitzverhältnisse regeln Sie auf der Kommandozeile mit den Werkzeugen Chmod, Chgrp und Chown an.
  • Zu Befehl
    Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.
  • Zu Befehl
    Auch wenn viele Dinge sich bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Und auch sonst gibt es viele Situationen, wo es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...