Da Sie es bei der täglichen Arbeit häufig mit Zugriffsrechten zu tun haben werden, sollten Sie diesen Abschnitt besonders aufmerksam lesen.
Zugriffsrechte legen fest, wer auf eine Datei oder ein Verzeichnis zugreifen darf und welche Zugriffsarten gestattet sind.
Es gibt drei Arten von Zugriffsrechten:
r - Leseberechtigung. Damit Sie eine Datei öffnen oder kopieren bzw. den Inhalt eines Verzeichnisses anzeigen können, müssen Sie für die Datei oder das Verzeichnis leseberechtigt sein.
w - Schreibberechtigung. Damit Sie eine Datei ändern, löschen oder umbenennen bzw. den Inhalt eines Verzeichnisses durch Hinzufügen oder Löschen von Dateien ändern können, müssen Sie für die Datei oder das Verzeichnis schreibberechtigt sein.
x - Ausführberechtigung. Damit Sie auf eine ausführbare Datei bzw. die Unterverzeichnisse eines Verzeichnisses zugreifen können, müssen Sie für die Datei oder das Verzeichnis ausführberechtigt sein.
Zugriffsrechte können an drei Arten von Benutzern vergeben werden:
Gruppe - Alle Benutzer, die der gleichen Benutzergruppe angehören wie der Eigentümer. Benutzergruppen werden vom Systemverwalter eingerichtet und verwaltet.
Daß Sie mit dem Befehl ls Dateinamen auflisten können, wissen Sie bereits. Wenn Sie den Befehl mit der Option -l eingeben, werden außer den Dateinamen eine Reihe weiterer Dateiattribute angezeigt. Abbildung 3-2 zeigt ein Beispiel für die Ausgabe des Befehls ls -l:
Das erste Zeichen gibt den Dateityp an: Ein Bindestrich (-) steht für eine Textdatei und ein d für ein Verzeichnis. Darüber hinaus gibt es weitere Dateitypen, die hier jedoch nicht behandelt werden.
Die folgenden neun Zeichen geben an, welche Zugriffsrechte für die Datei oder das Verzeichnis gelten. Diese Zeichen sind in drei Blöcke zu je drei Zeichen gegliedert, wobei der erste Block für den Eigentümer, der zweite für die Gruppe und der dritte für alle anderen Benutzer gilt. Für die Datei leerdatei gelten beispielsweise die Berechtigungen rw-r--r--, d. h. der Eigentümer der Datei verfügt über Lese- und Schreibberechtigung, während alle anderen Benutzer sie nur lesen, aber nicht verändern dürfen. Der Inhalt des Verzeichnisses obst2 darf nur vom Eigentümer geändert werden, da alle anderen Benutzer lediglich über Lese- und Ausführberechtigung verfügen.
Außer den Zugriffsrechten werden folgende Informationen angezeigt:
Anzahl der Verweise (Links) auf die Datei oder das Verzeichnis
Name des Eigentümers (in diesem Fall user2)
Datum und Zeitpunkt der letzten Änderung
Datei- oder Verzeichnisname
Wechseln Sie mit cd in Ihr Home-Verzeichnis, und probieren Sie den Befehl ls -l aus. Auf Ihrem System werden natürlich andere Daten angezeigt als in unserem Beispiel.
Geben Sie den Befehl danach in folgendem Format ein:
$ ls -l verzeichnisname |
Ersetzen Sie verzeichnisname dabei durch den Namen eines Verzeichnisses in Ihrem Dateisystem. Der Befehl ls -l zeigt daraufhin die Attribute aller Dateien und (falls vorhanden) Unterverzeichnisse in diesem Verzeichnis an.
Versteckte Dateien können mit dem Befehl ls ohne Optionen nicht angezeigt werden. Diese Dateien heißen auch Punktdateien, weil der Dateiname mit einem Punkt beginnt. Beispiele für Punktdateien sind .cshrc, .login und .profile. Um neben den normalen Dateien auch eventuell vorhandene Punktdateien mit aufzulisten, geben Sie ls mit der Option -a ein:
$ ls -a . .. .cshrc .login .profile leerdatei |
Die Punktdateien stehen vor den normalen Dateien. Die Dateien . und .. repräsentieren das aktuelle Verzeichnis und das übergeordnete Verzeichnis.
Punktdateien werden im allgemeinen nur vom System verwendet und vom Benutzer nicht verändert. Es gibt jedoch Ausnahmen, von denen einige in späteren Kapiteln behandelt werden.
Mit dem Befehl chmod ändern Sie die Zugriffsrechte für eine Datei oder ein Verzeichnis. Dies ist allerdings nur möglich, wenn Sie Eigentümer der Datei sind oder sich als Superuser angemeldet haben. Der Befehl chmod wird in folgendem Format eingegeben:
chmod berechtigungen name |
Dabei steht berechtigungen für die geänderten Zugriffsrechte und name für den Namen der Datei oder des Verzeichnisses.
Zugriffsrechte können auf unterschiedliche Weise definiert werden. Am einfachsten geht es in folgender Form:
Verwenden Sie einen oder mehrere der folgenden Buchstaben, um anzugeben, für welche Benutzer die Zugriffsrechte gelten sollen:
u (für den Eigentümer)
g (für die Gruppe)
o (für alle anderen Benutzer)
a (für alle drei oben genannten Kategorien)
Geben Sie an, ob Berechtigungen hinzugefügt (+) oder entfernt (-) werden.
Verwenden Sie einen oder mehrere der folgenden Buchstaben, um die neuen Zugriffsrechte festzulegen:
r (für Leseberechtigung)
w (für Schreibberechtigung)
Im folgenden Beispiel erteilt der Eigentümer des Verzeichnisses mango allen Mitgliedern seiner Benutzergruppe Schreibberechtigung für das Verzeichnis (berechtigungen wird also durch g+w und name durch mango ersetzt):
$ ls -l mango drwxr-xr-x 3 user2 1024 Feb 10 11:15 mango $ chmod g+w mango $ ls -l mango drwxrwxr-x 3 user2 1024 Feb 10 11:15 mango $ |
Statt des Bindestrichs, der für keine Schreibberechtigung" steht, erscheint in den Zugriffsrechten für die Gruppe nun ein w.
Um Lese- und Ausführzugriffe auf das Verzeichnis von Benutzern außerhalb der Gruppe auszuschließen, würden Sie folgendes eingeben:
$ ls -l mango drwxrwxr-x 3 user2 1024 Feb 10 11:15 mango $ chmod o-rx mango $ ls -l mango drwxrwx--- 3 user2 1024 Feb 10 11:15 mango $ |
In den Zugriffsrechten für andere Benutzer werden nun statt dem r (für Leseberechtigung) und dem x (für Ausführberechtigung) zwei Bindestriche angezeigt.
Wenn Sie eine neue Datei oder ein neues Verzeichnis anlegen, vergibt das System automatisch Zugriffsrechte.
Für neue Dateien gelten normalerweise folgende Zugriffsrechte:
-rw-r--r--
Bei neuen Verzeichnissen werden folgende Zugriffsrechte vergeben:
drwxr-xr-x
Damit eine neue Datei namens pfirsich von ihrem Eigentümer (user2) ausgeführt werden kann, müßte dieser (oder der Superuser) also zunächst folgendes eingeben:
$ ls -l pfirsich -rw-r--r-- 3 user2 1024 Feb 10 12:27 pfirsich $ chmod u+x pfirsich $ ls -l pfirsich -rwxr--r-- 3 user2 1024 Feb 10 12:27 pfirsich $ |
Mit der Option a können Sie Zugriffsrechte gleichzeitig an alle drei Benutzerkategorien vergeben. Um allen Benutzern Ausführberechtigung für eine neue Datei namens orange zu erteilen, würden Sie also folgendes eingeben:
$ ls -l orange -rw-r--r-- 3 user2 1024 Feb 10 11:31 orange $ chmod a+x orange $ ls -l orange -rwxr-xr-x 3 user2 1024 Feb 10 11:31 orange $ |
Nach Ausführung des Befehls chmod erscheint in allen drei Blöcken das Zeichen x.
Zugriffsrechte können mit Hilfe des Metazeichens * auch für mehrere Dateien oder Verzeichnisse gleichzeitig vergeben werden. Im folgenden Beispiel werden die Zugriffsrechte für die Dateien im Verzeichnis obst so geändert, daß nur noch der Eigentümer des Verzeichnisses über Schreibberechtigung verfügt:
Da der Befehl chmod in der oben gezeigten Form immer auf die Dateien im aktuellen Verzeichnis angewendet wird, sollten Sie vorher mit pwd prüfen, ob Sie sich im richtigen Verzeichnis befinden.
In den bisherigen Beispielen wurden Zugriffsrechte relativ zu den aktuell geltenden Einstellungen geändert. Sie können Zugriffsrechte mit chmod jedoch auch ändern, ohne die aktuellen Einstellungen zu kennen. Bei der Vergabe solcher absoluter Zugriffsrechte werden Benutzerkategorie und Zugriffsberechtigung nicht durch Buchstabenkürzel, sondern durch einen Zahlencode angegeben.
Die Befehlssyntax lautet in diesem Fall:
chmod numcode name
numcode steht für den Berechtigungscode und name für den Namen der Datei oder des Verzeichnisses, deren/dessen Zugriffsrechte geändert werden sollen.
Der Berechtigungscode besteht aus je einer Zahl für die drei Benutzerkategorien. Mit dem folgenden Befehl erhalten der Eigentümer des Verzeichnisses orange und seine Gruppe Lese-, Schreib- und Ausführberechtigung, alle anderen Benutzer dagegen nur Ausführberechtigung:
$ chmod 771 orange |
Tabelle 3-1 zeigt, aus welchen Elementen sich der Berechtigungscode 771 zusammensetzt.
Tabelle 3-1 Zugriffsrechte für orange
Berechtigung |
Eigentümer |
Gruppe |
Andere |
---|---|---|---|
Lesen |
4 |
4 |
0 |
Schreiben |
2 |
2 |
0 |
Ausführen |
1 |
1 |
1 |
Gesamt |
7 |
7 |
1 |
Jede Spalte in Tabelle 3-1repräsentiert eine Benutzerkategorie. Jeder Berechtigungsart ist ein bestimmter Wert zugeordnet: 4 für Leseberechtigung, 2 für Schreibberechtigung und 1 für Ausführberechtigung. Die Summe der ersten, zweiten und dritten Spalte entspricht der ersten, zweiten und dritten Ziffer des Berechtigungscodes.
Hier ein weiteres Beispiel für die Vergabe von absoluten Zugriffsrechten, bei dem die Ergebnisse mit dem Befehl ls -l geprüft werden:
$ ls -l zitrone -rw-r--r-- 3 user2 1024 Feb 10 11:46 zitrone $ chmod 755 zitrone $ ls -l zitrone -rwxr-xr-x 3 user2 1024 Feb 10 11:48 zitrone $ |
Für die Datei zitrone gelten also folgende Zugriffsrechte: der Eigentümer kann sie lesen, schreiben und ausführen, während die Gruppe und alle anderen Benutzer nur Lese- und Ausführberechtigung haben. Tabelle 3-2 zeigt, wie der Berechtigungscode ermittelt wird.
Tabelle 3-2 Zugriffsrechte für zitrone
Berechtigung |
Eigentümer |
Gruppe |
Andere |
---|---|---|---|
Lesen |
4 |
4 |
4 |
Schreiben |
2 |
0 |
0 |
Ausführen |
1 |
1 |
1 |
Gesamt |
7 |
5 |
5 |
Um als Eigentümer der Datei kirsche sich selbst, der Gruppe und allen anderen Benutzern Lese-, Schreib- und Ausführberechtigung zu erteilen, würden Sie also folgendes eingeben:
$ ls -l kirsche -rw-r--r-- 3 user2 1024 Feb 10 11:51 kirsche $ chmod 777 kirsche $ ls -l kirsche -rwxrwxrwx 3 user2 1024 Feb 10 11:53 kirsche $ |
Tabelle 3-3 zeigt, wie dieser Code zustandekommt:
Tabelle 3-3 Zugriffsrechte für kirsche
Berechtigung |
Eigentümer |
Gruppe |
Andere |
---|---|---|---|
Lesen |
4 |
4 |
4 |
Schreiben |
2 |
2 |
2 |
Ausführen |
1 |
1 |
1 |
Gesamt |
7 |
7 |
7 |
Der Code 777 entspricht also der maximalen Anzahl Berechtigungen, die Sie für eine Datei oder ein Verzeichnis vergeben können.
Auch bei dieser Methode können Sie mit dem Metazeichen * Zugriffsrechte für alle Dateien des aktuellen Verzeichnisses definieren. Im folgenden Beispiel vergibt der Eigentümer des Verzeichnisses obst an sich selbst Lese-, Schreib- und Ausführberechtigung für alle darin enthaltenen Dateien, seine Gruppe erhält Lese- und Ausführberechtigung und alle anderen Benutzer lediglich Ausführberechtigung:
Mit dem Befehl pwd wird zu Beginn geprüft, ob obst tatsächlich aktuelles Verzeichnis ist. Der Befehl ls -l wird hier, wie auch in den vorhergehenden Beispielen, nur verwendet, um das Ergebnis der Änderung zu verdeutlichen.
Weitere Informationen zu chmod(1) siehe man Pages(1): User Commands.