13.14. Berechtigungen und Dateibesitzer

An früherer Stelle in diesem Kapitel hatten wir versucht, in das Anmeldeverzeichnis des root zu gelangen, und erhielten folgende Meldung:

cd /root
bash: /root: Permission denied

Dies war eine gute Demonstration der Sicherheitsfunktionen von Linux. Linux ist genau wie UNIX ein Multiuser-System. Die Vergabe von Zugriffsrechten auf Dateien ist dabei nur eine der Methoden, die das System für den Schutz vor jeglichen unberechtigten Dateizugriffen zur Verfügung hat.

Wie wir Ihnen bereits an anderer Stelle erklärt haben, können Sie auf eine Datei, deren Zugriff Ihnen verweigert wurde, trotzdem zugreifen, wenn Sie sich mit su als root anmelden. Denn nur wer das root-Passwort kennt, hat Zugriff auf alle Bereiche des Systems.

Die Anmeldung am System als Superuser ist jedoch nicht immer die geeignetste oder empfehlenswerteste Methode, da Sie auf diese Weise mitunter Fehler machen können, die eventuell wichtige Konfigurationsdateien verändern.

Alle Dateien und Verzeichnisse "gehören" demjenigen, der diese erstellt hat. Da Sie die Datei sneakers.txt (siehe Abschnitt 13.9.1) in Ihrem Log-In-Verzeichnis erstellt haben, gehört sneakers.txt folglich Ihnen.

Dies bedeutet, dass Sie bestimmten können, wer die Datei lesen, umschreiben oder, im Falle einer Applikation, diese ausführen darf.

Lesen, Schreiben und Ausführen sind jeweils die drei wichtigsten Einstellungen bei den Berechtigungen. Da Anwender beim Erstellen der Accounts Gruppen zugeordnet werden, können Sie auch bestimmten Gruppen Lese-, Schreib- und Ausführrechte zuweisen.

Schauen Sie sich nun sneakers.txt mit Hilfe des ls -Befehls genauer an, indem Sie die Option -l verwenden (siehe Abbildung 13-11).

Es werden hier viele Details angegeben. Sie können sehen, wer Leserechte (r) oder Schreibrechte (w) für die Datei besitzt, wer die Datei erstellt hat (sam) und zu welcher Gruppe dieser gehört (sam). Denken Sie daran, dass Ihr Gruppename Ihrem Login-Namen entspricht.

Abbildung 13-11. Berechtigungen für sneakers.txt

Zu den weiteren Informationen rechts neben dem Gruppennamen gehören der Dateiname, die Dateigröße sowie das Datum, an dem sie erstellt wurde.

In der ersten Spalte werden die aktuellen Berechtigungen angezeigt. Diese Spalte hat 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.

Beispiel:

-rw-rw-r--

Bei diesen drei Kategorien handelt es sich um: den Besitzer der Datei, die Gruppe, zu der die Datei gehört und "weitere", also noch nicht näher festgelegte Benutzer und Gruppen.

-    (rw-)   (rw-)   (r--) 1 sam sam 
|      |       |       | 
type  owner  group   others
      

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 bestimmte Zugriffsrechte nicht erteilt wurden. Schauen Sie sich die erste Spalte von sneakers.txt an und finden Sie heraus, welche Zugriffsberechtigungen es für diese Datei gibt.

ls -l sneakers.txt
-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

Der Besitzer dieser Datei (in diesem Fall sam) hat sowohl Lese- als auch Schreibzugriff auf die Datei. Die Gruppe - sam - hat ebenfalls Lese- und Schreibzugriff auf sneakers.txt. Da es kein Programm ist, existiert weder für den Besitzer noch für die Gruppe ein Recht, diese Datei auszuführen.

13.14.1. Der Befehl chmod

Mit Hilfe des Befehls chmod können Sie Zugriffsrechte ändern. In diesem Beispiel zeigen wir Ihnen, wie Sie die Zugriffsberechtigungen auf sneakers.txt mit dem Befehl chmod ändern können.

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

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

Als Besitzer der Datei - oder als root - haben Sie die Möglichkeit, die Zugriffrechte sowohl für den Besitzer als auch die Gruppe oder weitere Benutzer zu ändern.

Zum jetzigen Zeitpunkt haben der Besitzer und die Gruppe Lese- und Schreibzugriff auf die Datei. Alle Benutzer außerhalb dieser Gruppe haben lediglich Lesezugriff (r--).

AchtungAchtung
 

Bitte bedenken Sie, dass die Zugriffsrechte auf Dateien zu Ihren Sicherheitsfeatures gehören. Sobald Sie jemandem Lese- oder Schreibzugriff gewähren oder das Recht, eine Datei auszuführen, erhöht sich das Risiko unbefugter Zugriffe und das Ändern und Löschen von Dateien. Daher sollten Sie generell nur Lese- und Schreibzugriffsrechte vergeben, wenn dies unbedingt erforderlich ist.

Im folgenden Beispiel wollen Sie allen Benutzern Schreibzugriff erteilen, so dass diese in der Datei schreiben, sie lesen, Anmerkungen darin schreiben und sie speichern können. Das bedeutet, dass Sie die "weitere"-Spalte im Hinblick auf die Dateizugriffsrechte ändern müssen.

Sehen Sie sich die Datei erst einmal genauer an. Geben Sie am Shell-Prompt Folgendes ein:

ls -l sneakers.txt

Mit dem vorigen Befehl erhalten Sie folgende Datei-Information:

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

Geben Sie nun Folgendes ein:

chmod o+w sneakers.txt

Mit dem Befehl o+w teilen Sie dem System mit, dass Sie weiteren Benutzern Schreibzugriff für die Datei sneakers.txt erlauben. Um die Ergebnisse zu überprüfen, listen Sie erneut die Details zu der Datei auf. Die Datei sollte nun folgendermaßen aussehen:

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

Jetzt hat jeder Lese- und Schreibzugriff auf diese Datei.

Um die Lese- und Schreibrechte für sneakers.txt zu entfernen, verwenden Sie den Befehl chmod, um beide Zugriffsrechte zu löschen.

chmod go-rw sneakers.txt

In dem Sie go-rw eingeben, teilen Sie dem System mit, die Lese- und Schreibrechte für die Gruppe und andere für die Datei sneakers.txt zurückzuziehen.

Das Ergebnis sieht wie folgt aus:

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

Diese Einstellungen stellen eine Art von vereinfachter Schreibweise dar, wenn Sie mit dem chmod-Befehl Zugriffsrechte ändern wollen, denn Sie müssen sich lediglich an ein paar Symbole und Buchstaben erinnern, um den chmod-Befehl verwenden zu können.

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

Identitäten

u — der Benutzer, in dessen Besitz die Datei ist (also der Besitzer)

g — die Gruppe, zu der der Benutzer gehört

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

a — jeder oder alle (u, g und o)

Zugriffsberechtigungen

r — Lesezugriff

w — Schreibzugriff

x — Rechte für das Ausführen

Aktionen

+ — fügt die Berechtigung hinzu

- — hebt die Berechtigung auf

= — macht es zur einzigen Berechtigung

Möchten Sie die Befehle gleich einmal ausprobieren? Heben Sie doch einfach einmal alle Zugriffsrechte für sneakers.txt auf — für alle Benutzer.

chmod a-rwx sneakers.txt

Jetzt versuchen Sie einmal, ob Sie die Datei noch lesen können. Verwenden Sie hierzu den Befehl cat sneakers.txt, der Folgendes ausgeben sollte:

cat: sneakers.txt: Permission denied

Mit der Aufhebung aller Zugriffsrechte, einschließlich Ihrer eigenen, machen Sie den Zugriff auf diese Datei völlig unmöglich. Da Sie aber der Besitzer dieser Datei sind, können Sie deren Zugriffsberechtigungen auch wieder ändern:

chmod u+rw sneakers.txt

Verwenden Sie den Befehl cat sneakers.txt, um sich zu vergewissern, dass Sie als Besitzer der Datei diese Datei wieder lesen können.

Nachfolgend ein paar typische Beispiele für die Einstellungen, die man mit chmod vornehmen kann:

Durch Hinzufügen der Option -R können Sie die Zugriffsrechte ganzer Verzeichnisbäume ändern.

Da Sie ein Verzeichnis nicht im eigentlichen Sinne wie eine Applikation ausführen können, bedeutet das Hinzufügen oder Entfernen von Zugriffsrechten auf ein Verzeichnis in Wirklichkeit nur die Erlaubnis zum Durchsuchen dieses Verzeichnisses.

Wenn Sie anderen Benutzern nicht das Recht zum Ausführen von tigger erteilen wollen, kommt es nicht darauf an, wer Lese- oder Schreibzugriff hat. Niemand kann auf dieses Verzeichnis ohne Kenntnis des genauen Dateinamens zugreifen.

Geben Sie z.B. Folgendes ein:

chmod a-x tigger

um für alle Benutzer die Berechtigung zum Ausführen dieser Datei aufzuheben.

Wenn Sie nun versuchen, mit cd zu tigger wechseln:

bash: tigger: Permission denied

Stellen Sie also jetzt Ihren eigenen Zugriff und den der Gruppe wieder her.

chmod ug+x tigger

Wenn Sie jetzt Ihre Eingaben mit ls -l überprüfen, werden Sie feststellen, dass nur die anderen Benutzer weiterhin keinen Zugriff auf das tigger-Verzeichnis haben.

13.14.2. Zugriffsrechte mit numerischen Rechten ändern

Erinnern Sie sich noch daran, dass wir Ihnen eine vereinfachte Schreibweise für chmod vorgestellt hatten? Hier stellen wir Ihnen nun eine weitere Methode vor, mit der Sie Zugriffsrechte ändern können, obwohl diese Methode auf den ersten Blick etwas kompliziert erscheinen mag.

Kehren Sie zurück zu den ursprünglichen Zugriffsrechten für sneakers.txt:

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

Jede Einstellung für Zugriffsberechtigungen kann mit einem numerischen Wert dargestellt werden:

Nach der Addition dieser Werte ergibt sich ein Gesamtwert, der für die Festlegung bestimmter Zugriffsrechte verwendet wird. Wenn Sie z.B. Lese- und Schreibzugriff möchten, hätten Sie einen Gesamtwert von 6; 4 (Lesezugriff) + 2 (Schreibzugriff) = 6.

Die numerischen Zugriffseinstellungen für sneakers.txt lauten wie folgt:

 -  (rw-)   (rw-)  (r--)
      |       |      |
    4+2+0   4+2+0  4+0+0

Die Gesamtsumme für den Benutzer ist 6, für die Gruppe ebenfalls 6 und für die weiteren Benutzer 4. Die Einstellung für die Zugriffsberechtigungen kann also als 664 eingegeben werden..

Wenn Sie sneakers.txt so ändern wollen, dass die anderen Mitglieder in Ihrer Gruppe keinen Schreibzugriff erhalten, jedoch den Lesezugriff behalten, heben Sie die Zugriffsberechtigung auf, indem Sie zwei (2) von der Einstellung der Gruppe subtrahieren.

Die numerischen Werte wären dann sechs, vier und vier (644).

Damit diese Werte übernommen werden, geben Sie Folgendes ein:

chmod 644 sneakers.txt

Überprüfen Sie die Änderungen, indem Sie die Datei auflisten. Geben Sie Folgendes ein:

ls -l sneakers.txt

Sie sollten folgende Ausgabe erhalten:

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

Nun verfügen weder die Mitglieder der Gruppe noch die anderen Benutzer über Schreibzugriff auf sneakers.txt. Um den Schreibzugriff auf diese Datei für die Gruppe wiederherzustellen, addieren Sie einfach in der zweiten Kategorie der Zugriffsrechte eine zwei w (2) hinzu.

chmod 664 sneakers.txt

WarnungWarnung
 

Die Vergabe der Zugriffsrechte 666 erteilt allen Benutzern Lese- und Schreibzugriff auf eine Datei oder ein Verzeichnis. Die Vergabe der Zugriffsrechte 777 erteilt allen Benutzern Lese- und Schreibzugriff sowie die Berechtigung zur Ausführung einer Datei. Mit diesen Berechtigungen kann es zu unbefugtem Zugriff auf wichtige Dateien kommen und es empfiehlt sich daher insgesamt nicht, diese Einstellungen zu verwenden.

Nachfolgend ein kurzer Überblick über die gängigsten numerischen Einstellungen und ihre jeweilige Bedeutung:

Nachfolgend einige gängige Einstellungen für Verzeichnisse: