claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 09/2003

Dateirechte ändern

Alles, was recht ist

von Elisabeth Bauer


Das Linux-Rechtekonzept kennt genau drei Aktionen: Lesen, Schreiben, Ausführen. Wer unter Linux was darf und wie man das ändert, erklärt dieses Guru-Training.

"Permission denied" -- Keine Berechtigung -- mit dieser Meldung speist Linux jeden ab, der auf eine Datei zugreift, ohne die nötigen Rechte zu besitzen. Das Rechtekonzept ist ein zentraler Bestandteil des Multi-User-Systems Linux. Es sorgt zum Beispiel dafür, dass Sie als normaler Benutzer keine wichtigen Systemdateien versehentlich löschen können. Wenn sich mehrere Anwender einen Rechner teilen, schaffen Dateirechte Privatsphäre -- außer dem Administrator kann bei entsprechend gesetzten Rechten kein anderer Benutzer Ihre Dateien lesen oder ändern.

Im Gegenzug führen unzureichend gesetzte Rechte jedoch häufig zu Problemen. Wenn der Zugriff auf angeschlossene Hardware nicht klappt, sind nicht selten die Rechte schuld. Wie im Artikel auf Seite ## erklärt, betrachtet Linux CD-Brenner, Digitalkamera und andere Geräte letzten Endes als ganz normale Dateien, für die das Rechtekonzept genauso gilt wie für jedes Textdokument oder Programm auf Ihrem Rechner.

Rechte anzeigen

Um herauszufinden, wer welche Zugriffsrechte auf eine Datei hat, verwendet man das Kommando ls -l, das Sie unter Red Hat und SuSE Linux auch kürzer mit ll aufrufen können. Wer auch versteckte Dateien sehen will, ruft ls -al auf, für das auf vielen Systemen das Alias la gesetzt ist.

Abb. 1: ll zeigt Rechte und Eigentümer von Verzeichnissen und Dateien an.

Für die Dateirechte ist die erste Spalte relevant: Der erste Buchstabe bezeichnet den Dateityp, dahinter folgt das für diesen Artikel Interessante -- die Dateirechte, eine neunstellige Zeichenfolge, beispielsweise rwxr-x---.

Wer sich mit ll ein bisschen durchs Dateisystem wühlt, wird auf wenige Buchstaben stossen, die hier vorkommen (Abbildung 2). Am häufigsten sind r für das Leserecht, also die Möglichkeit, eine Datei zu öffnen und anzuschauen, w für das Schreibrecht, die Möglichkeit eine Datei zu ändern und abzuspeichern, und x für das Recht, ein Programm oder Skript auszuführen oder -- bei einem Verzeichnis -- für das Recht, hinein zu wechseln. Wesentlich seltener trifft man auf die Buchstaben s und t. s ist das so genannte setuid oder setgid bit, t nennt man sticky bit. Beides brauchen Sie normalerweise nicht.

Abb. 2: Schaubild der Linux-Dateirechte.

In der dritten und vierten Spalte der Ausgabe von ll stehen der Eigentümer (in Ihrem Home-Verzeichnis also üblicherweise Sie selbst) und die Benutzergruppe, der die Datei zugeordnet ist. Hier scheiden sich die Linux-Distributionen: Red Hat Linux legt für jeden Benutzer eine gleichnamige Gruppe an. Unter SuSE Linux hingegen ist jeder Benutzer automatisch Mitglied der Gruppe users. Jeder Benutzer des Systems kann übrigens Mitglied in mehreren Gruppen sein: In welche Gruppen Sie Ihre Linux-Distribution gesteckt hat, finden Sie mit dem Befehl groups heraus. Unter SuSE Linux erhalten Sie als Ausgabe beispielsweise:

users uucp dialout audio video

users ist die primäre Gruppe, die auch von Ihnen neuangelegten Dateien zugewiesen wird. Die anderen Gruppen benutzt Linux, um Ihnen Rechte auf Gerätedateien wie Sound- oder Video-Karte zu verleihen. So können alle Mitglieder der Gruppe audio auf die Sound-Karte zugreifen.

Rechte ändern mit chmod

Wer Dateirechte nicht nur anzeigen, sondern auch ändern will, braucht den Befehl chmod ("change mode"=Ändere Modus). In vielen Linux-Anleitungen im Internet kommen chmod-Aufrufe mit geheimnisvollen Zahlenfolgen daher, etwa chmod 0644 datei. Diese Notation in Oktalzahlen mögen Programmierer schön und praktisch finden, für normale Computer-Nutzer ist sie auf Anhieb jedoch nicht zu durchschauen. Glücklicherweise versteht chmod auch Anweisungen in menschenfreundlicherer Syntax, die wir im Folgenden erklären. Wer sich mit der Zahlenschreibweise vertraut machen will, findet im Kasten eine Aufschlüsselung der Oktalnotation.

Für das erste Experiment erzeugen wir mit touch testdatei eine leere Datei. Mit ll testdatei kontrollieren Sie, wie die Rechte standardmäßig gesetzt sind. Für diese Default-Rechtevergabe ist das Kommando umask zuständig (siehe Kasten).

Unter Red Hat Linux sieht die Ausgabe von ll beispielsweise so aus:

-rw-rw-r--  1 eli eli   0 Jul 16 17:37 testdatei

Eigentümer (eli) und Gruppe (eli) haben jeweils Lese- und Schreibrecht (rw), die restliche Welt darf die Datei nur lesen (r). SuSE Linux hat die Standardrechtevergabe etwas anders geordnet:

-rw-r--r--  1 eli users 0 2003-07-21 20:01 testdatei

Hier hat nur der Eigentümer (eli) Schreibrecht. Die Gruppe users und die "Anderen" dürfen die Datei ausschließlich lesen.

Doch manchmal ist auch das nicht gewünscht: Soll wirklich jeder Benutzer des Rechners in Ihrem elektronischen Tagebuch blättern dürfen? Wollen Sie anderen Benutzern das Leserecht entziehen, rufen Sie chmod o-r testdatei auf. Das o steht für "other", also alle anderen Benutzer auf dem System. Mit -r subtrahieren Sie das Leserecht.

chmod funktioniert mit einfachen Rechenzeichen: Mit - entfernen Sie ein Recht, mit + addieren Sie eins, und = setzt die Rechte genau, wie Sie es angeben. Vor das Rechenzeichen kommt das Kürzel, für wen Sie Rechte ändern wollen:

Gleiches Recht für alle schaffen Sie also mit chmod a=rw testdatei -- ein Befehl, den Sie aus Sicherheitsgründen sehr sparsam einsetzen sollten.

Abb. 3: "chmod go-rw" sorgt dafür, dass nur Sie selbst noch auf eine Datei zugreifen können.

Ein Ordner für alle

Trockenübungen schön und gut -- aber irgendwann will man chmod auch sinnvoll einsetzen. Am System ohne Not Rechte zu ändern, ist keine kluge Idee: Die meisten Linux-Distributionen setzen die Rechte für Systemverzeichnisse und -dateien bereits sinnvoll.

Bei einem Mehrbenutzersystem wie Linux ist ein gemeinsames Verzeichnis praktisch, auf das alle Benutzer zugreifen können. Warum sollte man seine Musiksammlung beispielsweise nicht den anderen Mitgliedern der Familie oder Wohngemeinschaft zugänglich machen? Auch die Urlaubsfotos sind in einem solchen Verzeichnis gut aufgehoben.

Das Verzeichnis selbst ist in der Shell schnell erstellt. Wechseln Sie mit cd / ins Wurzelverzeichnis des Systems (oder dorthin, wo es später liegen soll). Hier darf nur der Administrator schreiben, loggen Sie sich daher mit su und dem Administratorpasswort als Root ein -- ab jetzt ist Vorsicht angesagt: Tippfehler in einer Root-Shell können gefährlich werden. mkdir grabbelkiste erzeugt einen Ordner namens grabbelkiste. Bei Ihrer Namenswahl sollten Sie darauf achten, dass keine Umlaute, Sonderzeichen oder Leerzeichen vorkommen -- das erleichtert die spätere Handhabung per Shell.

Die mittlerweile altbekannte Rechtezeile lassen wir uns diesmal mit dem Befehl ls -ld grabbelkiste anzeigen. Die selten gebrauchte Option -d sorgt dafür, dass ls nicht den Inhalt, sondern das Verzeichnis selbst auflistet. So sieht die Ausgabe aus:

drwxr-xr-x  2 root root  48 Jul 22 13:57 grabbelkiste

Nur root hat hier alle Rechte -- in die Grabbelkiste soll jedoch jeder Dateien werfen können. Jetzt schlägt die große Stunde von chmod:

chmod a=rwx grabbelkiste

sorgt dafür, dass alle Benutzer volle Rechte auf die Grabbelkiste erhalten. Loggen Sie sich anschließend mit [Strg-D] oder dem Befehl exit aus der Root-Shell aus und arbeiten als normaler Benutzer weiter. Mit Konqueror oder den Shell-Kommandos mv und cp können Sie und die anderen Benutzer des Systems jetzt beliebig Dateien und Ordner in die Grabbelkiste verschieben oder kopieren.

Viele auf einen Streich

chmod kann natürlich auch mehrere Dateien auf einen Streich verarbeiten. Dazu benutzen Sie entweder Wildcards, also die Shell-Joker ? und *, die für ein oder mehrere beliebige Zeichen stehen, oder die Option -R, um rekursiv ein Verzeichnis mit Unterverzeichnissen zu durchlaufen. chmod hat hier noch eine praktische Finesse auf Lager: Statt beispielsweise

chmod -R go+rwx verzeichnisname

rufen Sie chmod mit einem großgeschriebenen X auf:

chmod -R go+rwX verzeichnisname

Der erste Befehl setzt die Rechte des Verzeichnisses und aller Dateien darin (sowohl Verzeichnisse als auch normale Files), für Gruppe und Welt auf rwx. Eine normale Datei, egal ob Bild, MP3-File oder OpenOffice-Dokument, braucht jedoch in keinem Fall ein Ausführrecht -- das ist nur wichtig für Programme und Verzeichnisse. Das große X sorgt dafür, dass das Ausführrecht nur dann gesetzt wird, wenn irgendwer, zum Beispiel der Besitzer, schon ein Ausführrecht hat. Damit vermeiden Sie es, unnötig Rechte zu vergeben -- eine Grundregel der Sicherheit unter Linux, die man beherzigen sollte. Seien Sie in diesem Punkt geizig!

Eigentümer und Gruppe ändern

Um Eigentümer und Gruppe einer Datei zu ändern, kennt Linux die Befehle chown ("change owner"=Ändere Eigentümer) und chgrp ("change group"=Ändere Gruppe). Da chown aber beides kann, dürfen Sie den zweiten Befehl getrost gleich wieder vergessen.

Die Syntax von chown ist denkbar einfach:

chown benutzername datei

oder, wenn Sie auch die Gruppe ändern wollen

chown benutzername:gruppenname datei

Einen kleinen Haken hat die Sache jedoch -- Linux erlaubt nicht, dass Sie Dateien einfach herschenken (unter anderen Unix-Systemen geht das durchaus). Wenn Sie den Eigentümer einer Datei ändern wollen, müssen Sie sich dazu mit dem Befehl su als Administrator einloggen (Abbildung 4). (eba)

Abb. 4: Den Eigentümer wechseln Sie mit dem Befehl "chown". Das darf unter Linux nur der Superuser root.
Oktalschreibweise

In Programmdokumentation und Handbüchern findet man sehr häufig Aufrufe von chmod mit mehreren Ziffern. Diese auf den ersten Blick merkwürdig erscheinende Schreibweise lässt sich jedoch recht einfach auflösen. Jede Eigenschaft entspricht einem Zahlenwert:

  • 4=Lesen
  • 2=Schreiben
  • 1=Ausführen

Um Rechte zu setzen, wird addiert: 4+2=6 für die Rechte, eine Datei zu lesen und zu schreiben. 4+1=5 fürs Lese- und Execute-Recht, oder 4+2+1=7 für alle drei zusammen. Die Rechnung macht man jeweils für den Eigentümer, die Gruppe und die anderen -- und landet bei nur drei Ziffern für eine Information, die sonst in neun Buchstaben ausgedrückt ist. Mit der so berechneten Zahl ruft man anschließend chmod auf. Beispiele: chmod 755 erzeugt rwxr-xr-x, oft verwendet für Verzeichnisse und ausführbare Programme. chmod 640 hingegen produziert rw-r-----, sinnvoll für Dateien.

Hat man diese Berechnungsweise verstanden, wird auch die Syntax des Kommandos umask klar. Dieser Befehl bestimmt, wie die Rechte einer von Ihnen frisch erzeugten Datei aussehen. umask müssen Sie nicht selbst aufrufen, das übernimmt das System für Sie. Unter SuSE Linux wird es in der globalen Profildatei /etc/profile, unter Red Hat Linux in /etc/bashrc bei jedem Login aufgerufen.

Wer in diese Dateien hineinschaut, findet darin die Zeilen umask 022 beziehungsweise umask 002. Wo bei chmod addiert wird, wird bei umask Ziffer für Ziffer subtrahiert: Ein Verzeichnis, das mit den Rechten 777 erzeugt würde, erhält mit umask 022 die Rechte 755 (rxwr-xr-x), die Ausgangsrechte 666 einer normalen Datei werden zu 644 (rw-r--r--).

Berichtigung

Im Artikel zum Kommando ls im letzten EasyLinux (08/2003) wurde bei der Erklärung der Dateirechte etwas durcheinander gewürfelt. Fürs Löschen gelten nicht die Rechte der Datei selbst, sondern die Rechte des Verzeichnisses, in dem die Datei liegt. In seinem Home-Verzeichnis ist der Benutzer also König: Er kann alle Dateien dort löschen, auch wenn Sie jemand anderem gehören und er kein Schreibrecht darauf besitzt.

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2017 COMPUTEC MEDIA GmbH | Last modified: 2007-01-25 16:27

Nutzungsbasierte Onlinewerbung

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]