Tipp: Dateirechte unter Linux - Besitz und Zugriffsrechte
Dateirechte setzen und verändern
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 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).