Linux Shell – Zugriffs-Rechte auf Dateien und Ordner

Linux hat im Vergleich zu Windows ein ausgefeiltes System um die Zugriffs-Rechte auf Dateien und Ordner des Rechners zu regeln. Dieses System ist einer der Gründe für die hohe System-Sicherheit von Linux. (und allen anderen Unix ähnlichen Systeme, wie BSD o.ä.)
Man kann sogar soweit gehen sich als Root selbst auszusperren, was natürlich nicht Sinn der Sache ist.

Zugriffs-Rechte ermitteln
Befindet man sich im Terminal kann man mit dem Befehl “ls -l” den Inhalt des aktuellen Verzeichnisses anzeigen lassen. Die Option “-l” bewirkt das Anzeigen vieler Details für jede Datei. In der ersten Spalte steht die Maske mit den Zugriffs-Rechten. Hier eine Beispielzeile:

-rw-r–r– 1 user group  157110 2008-07-07 22:27 image.jpg

Die weiteren Spalten stehen für den Benutzer (Besitzer) und die Gruppe der Datei, die Größe und das Datum und die Zeit der letzten Änderung. Die Zahl vor den Benutzer, also hier die “1” steht für die Zahl der enthaltenen Verzeichnisse. Bei einer Datei steht hier die “1”, bei einem Verzeichnis steht hier mindestens eine zwei, da “./” und “../” mitgezählt werden.

Die eigentlichen Rechte stehen in der Maske an erster Stelle der Ausgabe. Der erste Wert zeigt ein Verzeichnis an, handelt es sich um ein solches, steht hier ein “d”. Interessant sind die restlichen neun Stellen. Hier sind die Rechte für den Besitzer, die Gruppe und alle anderen Benutzer in jeweils drei Stellen vergeben. Ein Strich steht dafür, dass das jeweilige Recht nicht erteilt ist. Die Buchstaben stehen für:

r – Datei darf gelesen werden
w – Datei darf geändert und geschrieben werden
x – Datei darf als Programm ausgeführt werden

Hier das ganze nochmal übersichtlicher und an unserem Beispiel:

–                    rw-            r–              r–
Datei/Verz.   Besitzer    Gruppe      Rest

Besitzer einer Datei ändern mit “chown”
Der Besitzer einer Datei ist der Benutzer, der die Datei erstellt hat, oder Root im Falle von Systemdateien. Das Herunterladen von Dateien zum Beispiel zählt auch als “erstellen”, da die Datei auf dem lokalen System neu generiert wird.

Der Besitzer hat in der Regel die höchsten Rechte auf die Dateien die ihm gehören, im Vergleich zur Gruppe oder anderen Benutzern. Für den Besitzer gilt immer die erste der drei Gruppen in der Rechte-Maske. (siehe oben)

Um den Besitzer einer Datei zu ändern, benötigt man folgenden Befehl:

“chown <benutzer> <datei>”

Das Ändern eines Datei-Besitzers benötigt Root-Rechte, auch wenn man bereits selbst Besitzer der Datei ist.

Gruppe einer Datei ändern mit “chgrp”
Die Rechte der Gruppe einer Datei werden durch die zweite Gruppe der Rechte-Maske bestimmt. Wie der Name schon sagt sind von diesen Rechten meist mehrere Benutzer betroffen.
In Linux ist es üblich, dass alle normalen Benutzer der Gruppe “users” zugerechnet werden. Eine Ausnahme hier bildet die Distribution Ubuntu. Hier bekommt jeder Benutzer seine eigene Gruppe, mit dem selben Namen wie der Benutzer selbst. Allerdings werden bei Ubuntu auch andere Rechte-Angelegenheiten anders behandelt.

Um die Gruppe einer Datei zu ändern, benötigt man diesen Befehl:

“chgrp <gruppe> <datei>”

Auch hier sind wieder Root-Rechte nötig.

Rechte zuweisen mit “chmod”
Um die Dateirechte tatsächlich zu ändern wird “chmod” benutzt. Dabei gibt es zwei Methoden, die je nach Vorliebe benutzt werden können. Hier nun zur Ersten, die andere Methode folgt weiter unten.

Bei dieser Methode ist der Syntax etwas komplexer. Er lautet:

“chmod <wer><operator><recht> <datei>”
oder anders:
“chmod <ugo><+-=><rwx> <datei>”

Hier nun die Erläuterung im Einzelnen … Zuerst wird festgelegt, wen die Änderung betrifft.

u – user (Benutzer / Besitzer – siehe “chown”)
g – group (Benutzergruppe – siehe “chgrp”)
o – others (alle Anderen)

Danach legt man fest ob man ein Recht hinzufügen (+), entfernen () oder explizit zuweisen will (=). Zu guter Letzt folgen dann die Rechte oder das Recht.

Die einzelnen Operatoren werden ohne Leerzeichen direkt aneinander greiht. Es kann auch auf bestimmte Operatoren verzichtet werden. Danach folgt die Datei, die geändert werden soll. Hier nun einige Beispiele:

“chmod ug+rw ./test”
Gibt dem Besitzer der Datei und der Gruppe Lese- und Schreibrechte.

“chmod g-wx ./test”
Entzieht der Gruppe das Schreib- und Ausführen-Recht.

“chmod o= ./test”
Setzt alle Rechte für “alle Anderen” auf … Nichts. Alle Rechte werden entzogen.

“chmod -wx ./test”
Entzieht allen (!) das Schreib- und Ausführen-Recht.

Rechte zuweisen mit “chmod” und Zahlen
Einen einfacheren Syntax bietet diese Methode. Hier wird eine Maske aus drei Ziffern verwendet um die Rechte zu setzten. Diese Methode zu verstehen ist sehr von Vorteil, da diese Art der Rechte-Vergabe auch in anderen Bereichen der System-Administration verwendet wird. Z.B. in der fstab-Datei. Wer also mal auf die Begriffe “umask” oder “dmask” stöst, dem wird das hier weiterhelfen.

Wie gesagt handelt es sich um drei Ziffern. Der Wert der Ziffer steht für das Recht, die Stelle für den Geltungsbereich.

4 = Lese-Recht
2 = Schreib-Recht
1 = Ausführen-Recht
0 = Kein Recht

Ein simples Beispiel: “chmod 400 ./test” – gibt dem Besitzer das Lese-Recht.
Da das aber zu einfach wäre werden die Zahlen addiert. Somit lässt sich schneller arbeiten als mit der anderen Methode.

“chmod 764 ./test” Gibt dem Besitzer alle Rechte, der Gruppe Lese- und Schreib-Recht und allen Anderen nur das Lese-Recht.
“chmod 755 ./test” Gibt dem Besitzer wieder alle Rechte. Die Gruppe und alle Anderen können Lesen und Ausführen.

Diese Art der Rechte-Vergabe wird auch verwendet, wenn man Dateien auf einem Server über FTP verwaltet. Für eine normale HTML Datei werden z.B. die Rechte “644” vergeben. Somit können alle die Datei lesen und nur der Besitzer kann die Datei ändern.

This entry was posted in Linux and tagged , , , , , , , , , , , , . Bookmark the permalink.

4 Responses to Linux Shell – Zugriffs-Rechte auf Dateien und Ordner

  1. Ja danke für den Tipp, hat etwas länger bei mir gedauert, aber dein mini tutorial hier war sehr hilfreich! Thanks and ciao n.

  2. Steve says:

    Warum bin ich auf diese Seite gegangen? Weil ich folgendes gelesen habe: “Linux hat im Vergleich zu Windows ein ausgefeiltes System …” und vor Allem, nach dem Weiterlesen auch noch die Behauptung, daß gerade deswegen Linux sicherer ist. Ich selbst administriere Windows und Linuxsysteme, insgesamt 60 Server (physikalische Maschinen) und das wohl weitaus ausgefeiltere Sicherheissystem hat ja wohl auf jden Fall Microsoft Windows. Meine Webserver sind alles Linuxrechner nur um das hier mal zu erwähnen. Aber wenn man noch nie ein Active Directory gesehen hat und dann sich an einen Windows Server setzt und den dann noch ins Web stellt, dann muß man sich nicht wundern, wenn das System nicht sicher ist. Jedenfalls habe ich auch Windows Server im Web stehen, als Terminalserver und selbst ohne VPN wurde davon noch keiner gehackt. Selbst die Versuche halten sich im Vergleich zu BruteForce Attacks an einem sshd im Verhältnis 1:1000 !!!! Da scheint der Windows-Server doch wohl erheblich sicherer, daß nicht einmal Hacker überhaupt versuchen, das Ding zu knacken! Die Sicherheitslücken von Windows-PC und Servern sitzen davor und meinen sie können Administrator spielen.
    Warum ich noch hier war? Weil ich gehofft hatte, daß ich eine einfache Möglichkeit finde, das Datum von Dateien auf einem Linuxsystem zu modifizieren (Einen ganzen Verzeichnisbaum abwärts). Bei Windows gibt es dafür zwar keinen Befehl, aber immerhin werden die Dateiattribute beim KOPIEREN auf einen anderen Datenträger aktualisiert. Leider geht nämlich touch -r … nicht so einfach wie ein chown. Aber damit mein gemecker hier über Sicherheit nicht ganz umsonst für die Welt war, hier die Lösung:
    1. in das Verzeichnis wechseln, welches man touch-en möchte
    2. folgenden liebreizenden Befehl eintippen:
    find . -size +0 -exec touch {} \;

  3. tux says:

    @steve: find braucht nicht zwingend ein suchkriterium. ein wechsel in das zu ändernde verzeichnis ist ebenso unnötig. ein simples
    [b]find /verzeich/nis/zum/suchen -exec touch{} \;[/b] genügt.

    fazit: wer von linux keine ahnung hat, sollte wohl besser auch nicht über die (angeblich unter win besseren) sicherheitskonzepte faseln😉

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s