Unix-Betriebssysteme und damit auch Debian GNU/Linux sind dafür ausgelegt, dass mehrere Benutzer zur gleichen Zeit am System arbeiten können. Dabei müssen bestimmte private Dateien vor anderen Benutzern geschützt werden, aber auch Systemdateien müssen vor den Benutzern geschützt werden. Sie können dies sehr leicht selbst überprüfen:
Melden Sie sich mit Ihrem Benutzernamen am System an (benutzen Sie nicht den Zugang
des Administrator (root)!) und geben Sie das Kommando rm /etc/resolv.conf
ein:
bash-2.03$ rm /etc/resolv.conf rm: remove write-protected file `/etc/resolv.conf'? y rm: cannot unlink `/etc/resolv.conf': Permission denied
Das System schützt diese Datei vor Veränderungen durch andere Benutzer als dem Administrator. Wenn jeder Benutzer Veränderungen an wichtigen Systemdateien vornehmen dürfte, würde dies schnell zu Problemen führen. Sehen wir uns die Datei einmal etwas näher an:
Geben Sie nun das Kommando ls -l /etc/resolv.conf ein. Sie bekommen diese
Ausgabe:
-rw-r--r-- 1 root root 119 Nov 02 1999 /etc/resolv.conf
Die Option -l des Kommandos ls gibt den Dateinamen sowie viele weitere Informationen
zu der Datei aus. Diese Informationen sind ziemlich einfach zu verstehen: Die Größe der
Datei ist 119 Byte, die Datei wurde zuletzt am 02. November 1999 geändert, und der
Dateiname ist /etc/resolv.conf. Weiter links wird die Sache etwas
komplizierter...
Kurz und knapp: -rw-r--r-- steht für die eigentlichen Zugriffsrechte der
Datei, die 1 steht für die Anzahl der (hard-)Links auf diese Datei
(oder die Anzahl der Dateien in einem Verzeichnis), und root root bezeichnet den Besitzer sowie die Gruppe, zu
der die Datei gehört.
Doch nun etwas ausführlicher...
Jede Datei besitzt einen Eigentümer und eine zugeordnete Gruppe. Gruppen ermöglichen es, Zugriffsrechte mehreren Benutzern zuzuweisen, ohne jedem Benutzer einzeln Rechte an jeder Datei einzuräumen.
Die Befehle id und groups zeigen die aktuelle Identität und die Gruppenmitgliedschaften eines Benutzers. Gruppeninformationen können mit getent group abgefragt werden; die Daten müssen nicht ausschliesslich aus einer lokal bearbeiteten Datei stammen, da auch zentrale Benutzerverzeichnisse verwendet werden können.
id getent group sudo getent group www-data sudo usermod -aG GRUPPE BENUTZER
Der letzte Befehl fügt einen Benutzer zu einer zusätzlichen Gruppe hinzu; das Argument -a ist zusammen mit -G wichtig, damit bereits bestehende zusätzliche Gruppenmitgliedschaften nicht ersetzt werden. Die neue Mitgliedschaft gilt normalerweise nach einer neuen Anmeldung. Prüfen Sie vorher, ob die Gruppenmitgliedschaft wirklich benötigt wird.
![]() | Keine Beispieldateien übernehmen |
|---|---|
Die Einträge unter |
Neben dem Besitzer und der Gruppe, zu denen eine Datei gehört, verfügt jede Datei auch über Zugriffsrechte, über die festgelegt wird, wer diese Datei lesen, schreiben oder ausführen darf. Es gibt noch weitere Details, die wir aber übergehen wollen.
Wie Sie schon vorher gesehen haben, werden die Zugriffsrechte bei dem Kommando ls -l ganz links an den ersten zehn Stellen
angezeigt. Die erste Stelle hat nicht direkt etwas mit den Zugriffsrechten zu tun,
sie zeigt vielmehr den Dateityp an. Ein „
-
“ steht für eine normale Datei, ein d kennzeichnet ein Verzeichnis, und ein l steht für einen Link.
Die weiteren neun Stellen lassen sich in drei Gruppen teilen. Dies sind von links
nach rechts: der Besitzer der Datei (owner), die Gruppe (group) und schließlich die Allgemeinheit (world). Jeder dieser drei
Gruppen gehören drei dieser neun Stellen. Jede dieser drei Stellen steht für r lesen (Read), w schreiben (Write) und x ausführen (eXecute).
Im Detail bedeuten die drei Buchstaben r, w und x Folgendes:
r - lesen: Bei Dateien kann der Inhalt der Datei gelesen werden. Bei Verzeichnissen kann man den Inhalt des Verzeichnisses auflisten lassen.
w - schreiben: Bei Dateien kann diese Datei verändert und gespeichert werden. Bei Verzeichnissen können neue Dateien angelegt und bereits bestehende Dateien gelöscht werden.
x - ausführen: Dateien können als Kommando ausgeführt werden.
Dies macht nur Sinn, wenn diese Datei wirklich ein Kommando darstellt. Sie können
eine Grafik ausführbar machen, es ergibt aber keinen Sinn. Da Verzeichnisse nicht
ausgeführt werden können, bedeutet hier ein gesetztes x, dass Sie in dieses Verzeichnis wechseln können. Um
also in einem Verzeichnis mit Dateien arbeiten zu können, benötigen Sie die
Kombination x und r sowie gegebenenfalls auch w.
Für Verzeichnisse ist dies alles ein wenig verwirrend, daher hier einige Beispiele:
r-- Eigentümer, Gruppe oder andere können den Inhalt
dieses Verzeichnisses auflisten. Die Dateien selbst können in dem Verzeichnis
gelesen, gelöscht oder verändert werden, abhängig von den eigenen Zugriffsrechten.
r-x Dieser Modus erlaubt das Auflisten der Dateien in
dem Verzeichnis und gibt den Zugriff auf die Dateien frei. Sie können allerdings
keine neuen Dateien anlegen oder bestehende Dateien löschen. Das Ansehen und
Verändern von Dateien ist erlaubt; Programme können ausgeführt werden, wenn dies von
den Rechten der Dateien selbst her erlaubt ist.
--x Sie können auf die Dateien in dem Verzeichnis
zugreifen, diese aber nicht auflisten. Sie müssen also wissen, welche Dateien sich
in dem Verzeichnis befinden, um auf diese zugreifen zu können. Wenn es sich um ein
Verzeichnis handelt, so kann in dieses gewechselt werden.
rwx Sie können alles mit den Dateien anstellen,
solange die Rechte der Dateien selbst dies zulassen.
Daraus folgen einige interessante Tatsachen, die Sie beachten sollten:
Schreibrechte auf einem Verzeichnis entscheiden darüber, ob Sie eine Datei in einem Verzeichnis löschen dürfen. Eine Datei, deren Rechte auf Nur-lesen gesetzt sind, kann gelöscht werden, wenn Sie die nötigen Rechte haben, um in diesem Verzeichnis zu schreiben! Weiterhin können Sie eine Datei in einem Nur-lesen-Verzeichnis nicht löschen, auch wenn Sie die nötigen Zugriffsrechte auf die Datei selbst haben.
Dies bedeutet auch, dass Sie, wenn Sie der Besitzer eines Verzeichnisses sind, auch die Dateien darin löschen können, sogar wenn diese dem Administrator (root) gehören.
Zugriffsrechte auf ein Verzeichnis haben also auch direkten Einfluss auf die Dateien in diesem Verzeichnis. An dieser Stelle kommen die Zugriffsrechte auf Dateien ins Spiel. Wenn Sie keinen Zugriff auf das Verzeichnis haben, spielen auch die Rechte an den Dateien für Sie keine Rolle, Sie kommen ja ohnehin nicht an die Dateien...
Um die Zugriffsrechte von Dateien und Verzeichnissen zu verändern, steht
unter Debian GNU/Linux das Kommando
chmod zur Verfügung. Spielen wir einmal ein wenig
damit herum:
Erzeugen Sie zunächst eine neue Datei, beispielsweise mit dem Kommando touch testdatei. Das Kommando
touch wird normalerweise dazu benutzt, die Datei mit
einem aktuellen „Zeitstempel“ zu versehen. Wenn Sie jedoch einen
Dateinamen angeben, der noch nicht existiert, so wird eine Datei mit diesem
Namen neu angelegt Sie hat dann eine Größe von 0 Byte. Überprüfen Sie dies mit
dem Kommando ls -l und werfen Sie einen Blick auf die
Zugriffsrechte:
bash-2.03$ touch testdatei bash-2.03$ ls -l testdatei -rw-r--r-- 1 fr fr 0 Jan 19 18:15 testdatei
Bei Ihrem Versuch wird die Datei natürlich einen anderen Zeitstempel haben, und
Benutzer- und Gruppenzugehörigkeit entsprechen Ihrem Loginnamen. Die
Zugriffsrechte (-rw-r--r--) werden von Debian GNU/Linux
automatisch für neue Dateien auf die gezeigten Werte gesetzt. Sie können diese
Vorgabe mit dem Kommando umask ändern.
Sehen Sie sich zunächst die Manpage zu
chmod mit dem Kommando man chmod an. Wir werden hier nicht auf jedes
Detail eingehen, sondern an einigen Beispielen zeigen, wie sich chmod mit verschiedenen Parametern auswirkt.
Führen Sie das Kommando chmod u+x testdatei aus. Sehen Sie sich die
Veränderung mit ls -l testdatei an. Es wurden Rechte zum
Ausführen (x - execute) der Datei für den Besitzer (u - User) hinzugefügt (+ -
Pluszeichen).
bash-2.03$ chmod u+x testdatei bash-2.03$ ls -l testdatei -rwxr--r-- 1 fr fr 0 Jan 19 18:15 testdatei
Ein solches Kommando können Sie beispielsweise auf ein selbst geschriebenes Shellskript oder Perl-Programm anwenden, damit es auch ausführbar ist.
Wenn Sie nun noch möchten, dass niemand außer Ihnen einen Blick in Ihre Arbeit
werfen kann, so müssen Sie die Rechte zum Lesen der Datei für die Gruppe (g - Group) sowie alle anderen Benutzer (o - Other) entfernen (- - Minuszeichen). Sie können dies mit dem
Kommando chmod go-r testdatei
erreichen:
bash-2.03$ chmod go-r testdatei bash-2.03$ ls -l testdatei -rwx------ 1 fr fr 0 Jan 19 18:15 testdatei
Wie Sie gesehen haben, können Sie mit den Zeichen + (Plus) oder - (Minus) Rechte hinzufügen oder entfernen.
Manchmal ist es damit etwas verwirrend, einen gewünschten Zustand herzustellen.
Daher bietet chmod noch die Option = (Gleichheitszeichen), welche genau die
angegebenen Rechte setzt und alle anderen löscht. Auch hier können Sie wieder
die Buchstaben ugo (User, Group, Other)
benutzen:
bash-2.03$ chmod ugo=rx testdatei bash-2.03$ ls -l testdatei -r-xr-xr-x 1 fr fr 0 Jan 19 18:15 testdatei
Die Datei ist nun für jeden Benutzer lesbar und kann auch von jedem ausgeführt werden. Weiterhin kann keiner der Benutzer diese Datei schreiben.
Entfernen Sie nun die Rechte zum Ausführen der Datei für alle Benutzer (chmod a-x testdatei), bei einer Testdatei
brauchen wir diese nicht.
Versuchen Sie einmal, die Datei zu löschen. Zur Erinnerung: Sie hatten vor
kurzem die Datei mit dem Kommando chmod ugo=rx testdatei behandelt. Löschen Sie
also die Datei mit dem Kommando rm
testdatei:
bash-2.03$ rm testdatei rm: schreibgeschützte Datei "testdatei" entfernen?
Wenn Sie die Umgebungsvariablen nicht passend gesetzt haben, wird Ihnen die Fehlermeldung in englischer Sprache präsentiert.
Da Sie (und auch alle anderen) keine Rechte haben, die Datei zu schreiben,
fragt das Kommando rm, ob Sie diese Aktion wirklich durchführen
wollen. Dies ist eine spezielle Funktion von rm und hat eigentlich wenig mit den
Zugriffsrechten zu tun. Wenn Sie die Datei wirklich löschen möchten, können Sie
die Frage bestätigen. Stören Sie sich nicht an der Ausgabe der Rechte an
Zahlenform des Kommandos rm; Sie können die Bedeutung in der Manpage
nachlesen.
©
1999 - 2026 | Das Debian GNU/Linux Anwenderhandbuch von Frank Ronneburg steht unter der Creative Commons Namensnennung-Nicht kommerziell-Keine Bearbeitungen 4.0 International Lizenz (CC BY-NC-ND 4.0).