Dateibesitzer und Berechtigungen

An früherer Stelle in diesem Kapitel, als Sie versucht hatten, mit cd in das Anmeldeverzeichnis von Root zu wechseln, erhielten Sie die folgende Meldung:

[newuser@localhost newuser]$ cd /root
bash: /root: Permission denied
[newuser@localhost newuser]$

Dies war eine gute Demonstration für die Sicherheitsfunktionen von Linux. Linux ist wie UNIX ein Multiuser-System für die gleichzeitige Verwendung durch mehrere Benutzer. Die Vergabe von Zugriffsrechten auf Dateien stellt eine der Methoden dar, die das System für den Schutz vor versehentlichen oder böswilligen Änderungen an wichtigen Dateien zur Verfügung stellt.

Um dennoch auf dieses Verzeichnis zugreifen zu können, müssen Sie zu Ihrem Root-Account wechseln. Hierzu müssen Sie lediglich su eingeben, wie Sie bereits zuvor gelernt haben. Der Grund hierfür liegt darin, dass jeder Benutzer, der das Root-Passwort kennt, auf alle Bereiche des Systems zugreifen kann.

[newuser@localhost newuser]$ su
Password: your root password
[root@localhost newuser]# cd /root
[root@localhost /root]#

Doch die Anmeldung am System als Superuser ist nicht immer die geeignete Methode - mitunter kann diese Methode sogar Schaden anrichten, da auf diese Weise die Gefahr besteht, versehentlich wichtige Konfigurationsdateien zu beschädigen.

Alle Dateien und Verzeichnisse befinden sich im "Besitz" des Benutzers, der diese erstellt hat. In einer früheren Übung haben Sie die Datei sneakers.txt in Ihrem Anmeldeverzeichnis erstellt, und somit "gehört" Ihnen sneakers.txt.

Dies bedeutet, dass Sie festlegen können, wer die Datei lesen darf und das Recht zum Schreiben in die Datei oder - im Falle von Programmdateien - Ausführen dieser Datei besitzt.

Lesen, Schreiben und Ausführen von Dateien sind zugleich die drei wichtigsten Einstellungen für Zugriffsberechtigungen.

Da jeder Benutzer im System beim Erstellen seines Benutzeraccounts Mitglied in einer Gruppe wird, können wir auch festlegen, ob bestimmte Gruppen unsere Datei lesen, ausführen oder in sie schreiben dürfen.

Werfen Sie nun einen näheren Blick auf sneakers.txt. Hierzu verwenden Sie den Befehl ls mit der Option -l (long) (siehe Abbildung 10-12).

[newuser@localhost newuser]$ ls -l sneakers.txt
-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

Hier werden nun viele Detailinformationen angezeigt. Sie können beispielsweise sehen, wer Lese- und Schreibrechte (r bzw. w) für diese Datei besitzt, wer die Datei erstellt hat (newuser) und zu welcher Gruppe der Besitzer gehört (newuser).

TipIhre Standardgruppe
 

Beachten Sie bitte, dass standardmäßig für die Gruppe der von Ihnen gewählte Anmeldename vergeben wurde.

Abbildung 10-12 Berechtigungen für sneakers.txt

Zu den weiteren Informationen rechts neben dem Gruppennamen zählt der Dateiname, die Dateigröße sowie die Angabe, wann die Datei erstellt wurde.

-rw-rw-r--

In der ersten Spalte (siehe oben) werden die aktuellen Berechtigungen angezeigt. Diese Spalte besitzt zehn Stellen. An der ersten Stelle wird der Dateityp angegeben. Bei den folgenden neun Stellen handelt es sich um drei jeweils zusammengehörige Angaben von Zugriffsberechtigungen für drei verschiedene Kategorien von Benutzern.

Bei diesen drei Kategorien handelt es sich um: den Besitzer der Datei, die Gruppe, zu der die Datei gehört, und "weitere", also Benutzer und Gruppen, bei denen es sich weder um den Besitzer der Datei (newuser) noch um die Mitglieder in dessen Gruppe (die ebenfalls die Bezeichnung newuser trägt) handelt.

-    (rw-)   (rw-)  (r--)    1 newuser newuser
|      |       |      |
Typ  Besitzer Gruppe weitere

Der erste Eintrag, in dem der Dateityp angegeben wird, kann einen der folgenden Werte annehmen:

Hinter dieser ersten Angabe kann in jeder der folgenden drei Gruppen eine dieser Angaben verwendet werden:

Wenn bei einer dieser drei Gruppen (Besitzer, Gruppe oder weitere) ein Strich eingetragen ist, bedeutet dies, dass keine bestimmten Zugriffsrechte vergeben wurden.

Nun sollen die Berechtigungen in der ersten Spalte von sneakers.txt näher untersucht werden: (siehe Abbildung 10-13.)

[newuser@localhost newuser]$ ls -l sneakers.txt
-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt
[newuser@localhost newuser]$

Abbildung 10-13 Ein näherer Blick auf die Zugriffsberechtigungen

Der Besitzer der Datei, newuser, hat vollständigen Lese- und Schreibzugriff auf die Datei. Da es sich bei der Datei um keine Programmdatei handelt, verfügt newuser nicht über die Berechtigung zum Ausführen der Datei. Die Gruppe newuser verfügt ebenfalls über Lese- und Schreibzugriff auf die Datei sneakers.txt. Analog zum Benutzer newuser verfügt auch die Gruppe newuser nicht über die Berechtigung zum Ausführen der Datei.

Aus der letzten Gruppe von Zugriffsberechtigungen ist ersichtlich, dass alle weiteren Benutzer, also alle, die sich nicht als newuser anmelden oder Mitglied der Gruppe newuser sind, die Datei zwar lesen können, jedoch weder in sie schreiben noch die Datei ausführen können.

Mit Hilfe des Befehls chmod können Sie die Zugriffsberechtigungen für die Datei ändern.

Die ursprünglichen Zugriffsberechtigungen für die Datei sehen wie folgt aus:

-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

Als Besitzer der Datei - oder als Root - haben Sie die Möglichkeit, die Berechtigungen für den Besitzer, die Gruppe und alle weiteren Benutzer beliebig festzulegen.

Zum jetzigen Zeitpunkt haben der Besitzer (also Sie) und die zugehörige Gruppe (also newuser) Lese- und Schreibzugriff auf die Datei. Jeder Benutzer außerhalb der Gruppe kann die Datei lediglich lesen (r--).

AchtungBerechtigungen sind notwendig
 

Bitte beachten Sie in diesem Zusammenhang, dass Zugriffsrechte auf Dateien für die Sicherheit Ihres Systems von großer Bedeutung sind. Wenn Sie jedem Lese- und Schreibzugriff auf Dateien und das Recht zum Ausführen von Programmdateien einräumen, besteht die Gefahr von Schäden an Ihrem System durch die unsachgemäße Änderung von Dateien. Daher sollten Sie generell eher sparsam mit der Vergabe von Lese- und Schreibrechten umgehen.

In diesem Fall gehen wir jedoch davon aus, dass jeder Benutzer das Recht haben sollte, in diese Datei zu schreiben, die Datei zu lesen, Anmerkungen darin zu erstellen und die Datei zu speichern. Dies bedeutet, dass der Abschnitt für die weiteren Benutzer im Hinblick auf die Zugriffsrechte auf die Datei geändert werden muss.

Da Sie ja selbst der Besitzer der Datei sind, ist die Eingabe des Befehls su für die Anmeldung als Root nicht erforderlich. Zuerst sollten Sie uns jedoch die Datei näher anschauen. Geben Sie am Shell Prompt folgenden Befehl ein:

ls -l sneakers.txt

Dadurch erhalten Sie die folgenden Informationen zu dieser Datei:

-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

Geben Sie nun den folgenden Befehl ein:

chmod o+w sneakers.txt

Um das Ergebnis dieses Befehls zu überprüfen, können Sie jetzt wieder die detaillierten Informationen zur Datei anzeigen. Die Datei sieht nun wie folgt aus:

-rw-rw-rw-    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

Sie haben also Folgendes erreicht: Jeder Benutzer hat jetzt Lese- und Schreibzugriff auf die Datei (Abbildung 10-14).

Abbildung 10-14 Ändern der Zugriffsrechte für sneakers.txt

Bei der Eingabe von o+w haben Sie dem System gewissermaßen mitgeteilt, dass es künftig auch anderen Benutzern Schreibrechte für die Datei sneakers.txt einräumen soll.

Um die Zugriffsrechte auf die Datei sneakers.txt aufzuheben, kann wiederum der Befehl chmod verwendet werden. Geben Sie Folgendes ein:

chmod go-rw sneakers.txt

Daraufhin erhalten Sie folgendes Ergebnis:

-rw-------    1 newuser newuser    150 Mar 19 08:08 sneakers.txt

Durch die Eingabe von go-rw haben Sie dem System mitgeteilt, dass für die Gruppe und alle weiteren Benutzer der Lese- und Schreibzugriff auf die Datei sneakers.txt aufgehoben werden soll.

Diese Optionen stellen eine Art von vereinfachter Schreibweise für das Ändern von Zugriffsrechten mit chmod dar, da Sie sich nur einige Symbole und Buchstaben für die Verwendung mit dem Befehl chmod einprägen müssen.

In der folgenden Liste erhalten Sie einen Überblick über diese Optionen:

Identitäten

u — der Benutzer, der Besitzrechte an der Datei hat (also der Besitzer)

g — die Gruppe, der der Benutzer angehört

o — weitere (nicht der Besitzer oder die Gruppe des Besitzers)

a — alle (u, g und o)

Zugriffsberechtigungen

r — Lesezugriff

w — Schreibzugriff

x — Rechte für das Ausführen von Dateien

Aktionen

+ — fügt die Berechtigung hinzu

- — entfernt die Berechtigung

= — macht es zur einzigen Berechtigung

AnmerkungEine zusätzliche Zugriffsberechtigung
 

Eine weitere Option ist t, die sog. "sticky bit". Wird einer Datei ein sticky bit zugewiesen, dann muss der Benutzer, der diese Datei entfernen oder umbenennen möchte, der Besitzer der Datei oder der Besitzer des Verzeichnisses sein, den Schreibzugriff besitzen oder der Rootbenutzer sein (siehe Abschnitt namens Dateieigenschaften in Kapitel 11).

Möchten Sie die Befehle gleich ausprobieren? Entfernen Sie doch einfach mal alle Zugriffsrechte von sneakers.txt für alle Benutzer.

chmod a-rwx sneakers.txt

Jetzt versuchen Sie, ob Sie diese Datei noch lesen können:

[newuser@localhost newuser]$ cat sneakers.txt
cat: sneakers.txt: Permission denied
[newuser@localhost newuser]$

Es hat funktioniert. Da Sie der Besitzer sind, können Sie die Berechtigungen jedoch jederzeit wieder ändern (siehe Abbildung 10-15).

[newuser@localhost newuser]$ chmod u+rw sneakers.txt
[newuser@localhost newuser]$ cat sneakers.txt
buy some sneakers
then go to the coffee shop
then buy some coffee
bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!
[newuser@localhost newuser]$

Abbildung 10-15 Entfernen und späteres Wiederherstellen von Zugriffsberechtigungen

Hier erhalten Sie einige Beispiele für Einstellungen in Verbindung mit chmod:

Durch Hinzufügen der Option -R ist es möglich, die Berechtigungen für ganze Verzeichnisbäume zu ändern.

Wenn Sie die Berechtigungen für das Ausführen bei einem Verzeichnis hinzufügen oder entfernen, ändern Sie eigentlich nur die Berechtigung zum Durchsuchen des Verzeichnisses, da Sie ein Verzeichnis nicht wirklich "ausführen" können (wie zum Beispiel eine Anwendung).

Um jedem Benutzer Lese- und Schreibzugriff auf das Verzeichnis tigger in unserem Anmeldeverzeichnis einzuräumen, müssen Sie lediglich folgenden Befehl eingeben:

chmod -R a+rw tigger

Aber… wenn Sie anderen Benutzern keine Rechte zum Ausführen für tigger einräumen, spielt es keine Rolle, ob jemand über Lese- oder Schreibzugriff verfügt, da niemand auf dieses Verzeichnis zugreifen kann - es sei denn, er kennt den genauen Dateinamen der entsprechenden Datei.

Geben Sie beispielsweise folgenden Befehl ein:

chmod a-x tigger

Daraufhin wird die Berechtigung zum Ausführen global entfernt.

Wenn Sie nun versuchen, mit cd in das Verzeichnis tigger zu wechseln, passiert Folgendes:

[newuser@localhost newuser]$ cd tigger
bash: tigger: Permission denied
[newuser@localhost newuser]$

Nun können Sie wieder den Zugriff für uns und unsere Gruppe wiederherstellen.

chmod ug+x tigger

Wenn Sie jetzt unsere Eingabe mit ls -dl überprüfen, stellen Sie fest, dass nur die anderen Benutzer weiterhin keine Zugriffsrechte auf tigger besitzen.