Besitz und Berechtigungen

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

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

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.

[neuerbenutzer@localhost neuerbenutzer]$ su
Password: ihrrootpasswort
[root@localhost neuerbenutzer]# 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 wir die Datei sneakers.txt in unserem Anmeldeverzeichnis erstellt, und somit "gehört" uns sneakers.txt.

Dies bedeutet, dass wir festlegen können, wer die Datei lesen darf, 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 wir nun einen näheren Blick auf sneakers.txt. Hierzu verwenden wir den Befehl ls mit der Option -l (long) (siehe Abbildung 15-16).

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

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

TipIhre Standardgruppe
 

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

Abbildung 15-16 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.

Was bedeuten nun die ganzen Bindestriche und Buchstaben im Einzelnen? So kompliziert ist diese Meldung gar nicht zu verstehen. Schauen wir uns die Sache mal genauer an:

-rw-rw-r--
	  

In dieser Spalte gibt es insgesamt an 10 Stellen Platz für Angaben. 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 das Datei (neuerbenutzer) noch um die Mitglieder in dessen Gruppe (die ebenfalls die Bezeichnung neuerbenutzer trägt) handelt.

Hier sehen Sie diese Dateiangaben in einer etwas übersichtlicheren Form:

 -    (rw-)   (rw-)  (r--)    1 neuerbenutzer neuerbenutzer
 |      |       |      |
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 15-17.)

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

Abbildung 15-17 Ein näherer Blick auf die Zugriffsberechtigungen

Der Besitzer der Datei, neuerbenutzer, hat vollständigen Lese- und Schreibzugriff auf die Datei. Da es sich bei der Datei um keine Programmdatei handelt, verfügt neuerbenutzer nicht über die Berechtigung zum Ausführen der Datei. Die Gruppe neuerbenutzer verfügt ebenfalls über Lese- und Schreibzugriff auf die Datei sneakers.txt. Analog zum Benutzer neuerbenutzer verfügt auch die Gruppe neuerbenutzer 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 neuerbenutzer anmelden oder Mitglied der Gruppe neuerbenutzer 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 wir die Zugriffsberechtigungen für die Datei ändern.

Auch jetzt soll sneakers.txt für das Arbeiten mit dem Befehl chmod als Beispiel verwendet werden.

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

-rw-rw-r--    1 neuerbenutzer neuerbenutzer     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 neuerbenutzer) 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 wollen wir uns jedoch die Datei näher anschauen. Geben Sie am Shell Prompt folgenden Befehl ein:

ls -l sneakers.txt
	  

Dadurch erhalten wir die folgenden Informationen zu dieser Datei:

-rw-rw-r--    1 neuerbenutzer neuerbenutzer     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 wir jetzt wieder die detaillierten Informationen zur Datei anzeigen. Die Datei sieht nun wie folgt aus:

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

Wir haben also Folgendes erreicht: Jeder Benutzer hat jetzt Lese- und Schreibzugriff auf die Datei (Abbildung 15-18).

Abbildung 15-18 Ändern der Zugriffsrechte für sneakers.txt

Bei der Eingabe von o+w haben wir 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 (selbst wenn es sich bei dieser Datei lediglich um eine Einkaufsliste handelt), kann wiederum der Befehl chmod verwendet werden. Geben Sie Folgendes ein:

chmod go-rw sneakers.txt
	  

Daraufhin erhalten Sie folgendes Ergebnis:

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

Durch die Eingabe von go-rw haben wir 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

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

chmod a-rw sneakers.txt
	  

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

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

Es scheint also wirklich zu funktionieren - selbst Sie können die Datei nicht mehr öffnen. Da Sie jedoch der Besitzer der Datei sind, können Sie sich jederzeit selbst wieder durch Ändern der Berechtigungen Lese- und Schreibzugriff einräumen. (Siehe Abbildung 15-19).

[neuerbenutzer@localhost neuerbenutzer]$ chmod u+rw sneakers.txt
[neuerbenutzer@localhost neuerbenutzer]$ cat sneakers.txt
kaufen Sie Turnschuhe
gehen Sie dann in den Supermarkt
kaufen Sie dann eine Packung Kaffee
bringen Sie den Kaffee nach Hause
ziehen Sie die Schuhe aus
ziehen Sie die Turnschuhe an
machen Sie etwas Kaffee
ruhen Sie sich aus!
[neuerbenutzer@localhost neuerbenutzer]$
	  

Abbildung 15-19 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.

Allerdings mit der Einschränkung, dass es natürlich nicht möglich ist, ein Verzeichnis in der gleichen Weise wie eine Datei "auszuführen". Wenn wir die Berechtigungen für das Ausführen bei einem Verzeichnis hinzufügen oder entfernen, ändern wir eigentlich nur die Berechtigung zum Durchsuchen des Verzeichnisses.

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 wir 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 wir beispielsweise folgenden Befehl ein:

chmod a-x tigger
	  

Daraufhin wird die Berechtigung zum Ausführen global entfernt.

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

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

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

chmod ug+x tigger
	  

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