Tipp: Dateirechte unter Linux 2

Dateirechte unter Linux sind Lerninhalt der LPI Prüfungen Linux Essentials, Thema 5
und LPI 101, Thema 104.5


dateirechte

Nachdem der letzte Artikel dieser Reihe die Besitz- und
Zugriffsrechte ausführlich erklärt hat, geht es hier um die wichtigen
Kommandos, mit denen Sie die Dateirechte ändern: chown, chgrp
und chmod.

Zuvor aber stellen wir das Kommando stat vor, das die Rechte sehr
übersichtlich anzeigt:

user@linux ~$ stat kapitel.txt
  File: 'kapitel.txt'
  Size: 819             Blocks: 8          IO Block: 4096   regular file
Device: fd06h/64774d    Inode: 439267      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 4000/mgisbers)   Gid: ( 4000/mgisbers)
Access: 2013-03-25 18:52:04.283934329 +0100
Modify: 2013-03-25 18:52:04.283934329 +0100
Change: 2013-03-25 18:52:04.288934359 +0100

Es finden sich alle bereits bekannten Parameter wieder. Darüber hinaus
sind einige Zeitangaben eingeblendet. Die vom Befehl ls
standardmäßig ausgegebene Zeit ist die mtime (Modifikationszeit),
also der Zeitpunkt der letzten Änderung am Inhalt der Datei. Weniger
bekannt sind die atime (Zugriffszeit), das Datum des letzten Zugriffs
auf den Dateiinhalt, und die ctime (Änderungszeit), die den Zeitpunkt
der letzten Rechteänderung angibt.

In vielen Konfigurationen wird inzwischen von der aktiven Nutzung der
atime abgesehen, da jeder Lesezugriff auf den Inhalt der Datei einen
Schreibzugriff nach sich zieht. Nur wenige Administratoren nutzen die
atime bei Ihrer Arbeit, tatsächlich wird bei aktuellen Systemen
standardmäßig die atime erst beim schreiben der ctime oder mtime
mit aktualisiert.

Besitzrechte

Zur Kontrolle der Besitzrechte von Benutzer und Gruppe einer Datei
dienen die beiden Kommandos chown und chgrp. Jede Datei kann genau
einem Benutzer und einer Gruppe gehören.

Mittels chown lassen sich beide Werte gleichzeitig ändern. Dafür
werden Benutzer und Gruppe durch einen Doppelpunkt (:) getrennt
angegeben. Es funktionieren sowohl die numerischen IDs als auch die
namentliche Darstellung.

Einige Beispiele:

root@linux ~# chown user:gruppe kapitel.txt
root@linux ~# chown 1000:1001 kapitel.txt
root@linux ~# chown user kapitel.txt
root@linux ~# chown :gruppe kapitel.txt

Die letzten beiden Beispiele sind ein Beispiel dafür, wie nur der
Benutzer oder die Gruppe geändert wird.

Eine Alternative für das letzte Beispiel stellt der Befehl chgrp
dar, der nur die Gruppe einer Datei ändert:

root@linux ~# chgrp gruppe kapitel.txt

Für beide Befehle gibt es einen Parameter -R, um rekursiv
Verzeichnisse zu bearbeiten.

Vielleicht ist Ihnen schon aufgefallen, dass die Befehle als
Benutzer root ausgeführt wurden. Dies hat einen einfachen
Hintergrund: Auch wenn ein Benutzer der Eigentümer einer Datei ist, so
hat er nicht die Berechtigung, die Datei einem anderen Benutzer
zuzuweisen. Ebenso kann er nur Gruppen zuordnen, in denen er selbst
Mitglied ist. Nur der privilegierte Benutzer root ist in der Lage,
Rechte für beliebige Benutzer und Gruppen zu vergeben.

Zugriffsrechte

Bei den Zugriffsrechten — die Kombination der Lese-, Schreib- und
Ausführrechte für Benutzer, Gruppen und anderer — gibt es grundsätzlich
zwei verschiedene Schreibweisen.

Den meisten Linux-Benutzern wird die sogenannte Oktalschreibweise
bekannt sein, bei der eine drei- oder vierstellige Zahlenkombination
die Zugriffsrechte anzeigt.

Hier entsprechen die Ziffern der Summe aus den verschieden
Berechtigungswerten.

  • r = Leseberechtigung = 4
  • w = Schreibberechtigung = 2
  • x = Ausführberechtigung = 1

Die Position der jeweiligen Summen in der Zahlenkombination gibt den Bereich
an, für den sie gelten:

  • Sonderrechte (bei vierstelligen Zahlenkombinationen)
  • Benutzer
  • Gruppe
  • andere

Setzt man nun die Berechtigung 640 auf eine Datei, bedeutet dies,
dass der Benutzer Lese- und Schreibrechte, die Gruppe Leserechte und
andere keinen Zugriff haben.

root@linux ~# chmod 640 kapitel.txt
root@linux ~# ls -l kapitel.txt
-rw-r----- 1 user gruppe 3592 26. Mär 11:21 kapitel.txt

Um sicherzustellen, dass nicht weitere Sonderrechte eingeräumt werden,
sollte zusätzlich eine 0 vorangestellt werden, die eventuell
vorhandene Sonderrechte zurücksetzt. Natürlich kann der Befehl chmod
auch mit dem Parameter -R für den rekursiven Aufruf genutzt werden,
allerdings ist hierbei zu beachten, dass für Verzeichnisse die
Ausführbrechtigung (x) gesetzt sein muss, um in das Verzeichnis zu
wechseln. Es haben sich schon viele Administratoren durch einen
unüberlegten Aufruf des Befehls chmod die Zugriffsrechte kompletter
Verzeichnisstrukturen zerstört.

Die Angabe der Rechte in Oktalschreibweise hat den entscheidenden
Nachteil, dass sie immer nur einen fixen Wert vorgibt. Es ist mit ihr
nicht möglich, auf der Grundlage bestehender Rechte einzelne weitere
zu gewähren.

Daher gibt es eine zweite Möglichkeit, die Rechte anzugeben.

Hierbei steht zunächst der Bereich für das Recht:

  • u = Benutzer
  • g = Gruppe
  • o = Andere
  • a = alle (Benutzer, Gruppe und andere)

Danach folgt ein Modifikator:

  • + = hinzufügen
  • – = entfernen
  • = = den angegeben Wert setzen

Und zuletzt die eigentlichen Rechte

  • r = Leseberechtigung
  • w = Schreibberechtigung
  • x = Ausführberechtigung
  • X = Ausführberechtigung, wenn die Datei ein Verzeichnis ist oder bereits
    Benutzer, Gruppe oder andere eine Ausführberechtigung haben
  • u = die Rechte, die aktuell dem Benutzer zugeordnet sind
  • g = die Rechte, die aktuell der Gruppe zugeordnet sind
  • o = die Rechte, die aktuell den Anderen zugeordnet sind
  • s = SetUID oder SetGID – Sonderrechte
  • t = StickyBit, eingeschränktes Löschen

Direkt ein Beispiel, um einer Datei die gleichen Rechte wie im letzten
Beispiel (640) zu geben:

root@linux ~# chmod u=rw,g=r kapitel.txt
root@linux ~# ls -l kapitel.txt
-rw-r----- 1 user gruppe 3592 26. Mär 11:21 kapitel.txt

Die verschiedenen Kombinationen lassen sich, durch Kommata getrennt,
nacheinander angeben. Im nächsten Beispiel erhält die Gruppe
zusätzlich die Schreibberechtigung, die anderen Leserechte:

root@linux ~# chmod g+w,o=r kapitel.txt
root@linux ~# ls -l kapitel.txt
-rw-rw-r-- 1 user gruppe 3592 26. Mär 11:21 kapitel.txt

Es ist sinnvoll, die verschiedenen Möglichkeiten dieses Befehls
auszuprobieren. Im Zweifelsfall hilft auch die Manualpage (man chmod)
des Befehls chmod mit vielen nützlichen Zusatzinformationen.

Dies waren die Informationen zum Setzen und Verändern der Besitz- und
Zugriffsrechte. Der nächste Artikel dieser Reihe enthält Informationen
zu den erweiterten Besitz- und Zugriffsrechten (ACLs).


Dieser Text ist im Rahmen des Tipp des Monats von Michael Gisbers und Christian Hesse auf der Website des LPI Central Europe unterstützt von der Open Source Press veröffentlicht worden.