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 auf Ihrem Debian GNU/Linux-System hat zwei Eigentümer: einen User und
eine Gruppe. Das oben angeführte Beispiel ist da etwas verwirrend, es gibt sowohl
einen User als auch eine Gruppe root
. Gruppen sind, wie auch im echten Leben,
Ansammlungen von Personen, sprich: Benutzern auf einem System. Diese Mitglieder einer
Gruppe können gemeinsamen Zugriff auf bestimmte Dateien haben, beispielsweise auf
alle Dateien unterhalb von /var/www/projekte/debian/
, wenn sie gemeinsam an den
Webseiten zu einem Debian-Projekt arbeiten sollen. Sie können auch beispielsweise
bestimmte Benutzer der Gruppe dialout
(bedeutet so viel wie
„rauswählen“) zuordnen, damit diese per Modem eine Verbindung ins Netz
herstellen können.
Das Kommando
groups
zeigt Ihnen an, zu welchen Gruppen Sie
gehören. Dies ist abhängig von dem Benutzernamen, mit dem Sie sich am System
angemeldet haben.
Sehen Sie sich nun die Datei /etc/group
an; benutzen Sie hierzu beispielsweise das
Kommando
more
(more /etc/group
). Beachten Sie die Gruppe root
(in dieser sollte als einziger der Benutzer root
eingetragen sein) sowie Ihre eigene Gruppe (auch
hier sollten nur Sie eingetragen sein). Es gibt einige weitere Gruppen in dieser
Datei, beispielsweise dialout
(siehe oben), floppy
(diese Benutzer können auf das
Diskettenlaufwerk zugreifen) und andere. Nach der Installation sind keine weiteren
Benutzer in den verschiedenen Gruppen aufgeführt; diese hinzuzufügen ist die Aufgabe
des Systemverwalters, also Ihre ;-)
. Hier sehen Sie ein Beispiel für eine veränderte
Datei /etc/group
aus einem laufenden
System:
root:x:0: daemon:x:1:fr bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7:lp mail:x:8:fr,mw news:x:9: uucp:x:10: proxy:x:13: kmem:x:15: dialout:x:20:fr fax:x:21:fr voice:x:22:fr cdrom:x:24:fr floppy:x:25:fr tape:x:26:fr sudo:x:27:fr audio:x:29:fr dip:x:30: majordom:x:31:majordom postgres:x:32: www-data:x:33:fr backup:x:34:fr msql:x:36:fr operator:x:37:fr list:x:38:fr irc:x:39:fr src:x:40:fr gnats:x:41: shadow:x:42: utmp:x:43:telnetd video:*:44: staff:x:50:fr games:x:60:fr qmail:x:70: users:x:100:fr telnetd:x:101: fr:x:1000: mw:x:1001: fr2:x:1003: nogroup:x:65534: mysql:x:102:
Weitere Informationen zu dieser Datei bekommen Sie mit dem Kommando man group
.
Mit dem Kommando ls -l /home
können Sie sich einen Überblick über die
Stammverzeichnisse aller Benutzer auf dem System verschaffen. Jedes Verzeichnis
sollte auch dem dazugehörigen Benutzer gehören. Wenn Sie das System neu installiert
haben, werden Sie der einzige Benutzer sein. Deshalb auch hier ein Beispiel aus der
Praxis mit wenigen
Benutzern:
bash-2.03$ ls -l /home/ total 8 drwxr-sr-x 65 fr fr 5120 Jan 1 02:48 fr drwxr-sr-x 5 mw mw 1024 Jan 4 08:27 mw
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 - 2024 | Das Debian GNU/Linux Anwenderhandbuch von Frank Ronneburg steht unter einer Creative Commons Namensnennung-Nicht Kommerziell-Keine Bearbeitung 3.0 Deutschland Lizenz.