UNIX: Dateieigenschaften |
Der Begriff Datei ist unter UNIX sehr allgemein. Eigentlich ist fast alles als Datei ansprechbar. Seien es Gerätedateien (special files), die den Kontakt zur Peripherie herstellen oder Verzeichnisse, die auch nur eine Sonderform von Dateien sind. Alle haben jedenfalls Eigentümer, Rechte und andere Eigenschaften.
chown Benutzer Dateien |
chgrp Gruppe Dateien |
Man kann auch Benutzer und Gruppe bei einigen Varianten von chmod mit einem Befehl setzen.
chown Benutzer:Gruppe Dateien |
| Besitzer | Gruppe | Rest |
|---|---|---|
| r w x | r w x | r w x |
Die Bedeutung der Buchstaben bedeutet bei Dateien:
| Recht | Bedeutung für Dateien |
|---|---|
| x | Die Datei ist ausführbar, also ein Programm oder ein Skript |
| r | Die Datei darf gelesen werden |
| w | Die Datei darf geschrieben werden |
Die Ausgabe eines ls -l zeigt die Rechte ab dem zweiten Zeichen in der oben genannten Reihenfolge für Benutzer, die Gruppe und den Rest der Welt.
-rwxr----- 1 arnold users 13654 Jan 17 04:41 a.out drwxr-x--- 2 arnold users 4096 Mär 6 23:35 awk -rwxr-xr-x 1 arnold users 13856 Feb 8 10:48 copy -rw-r--r-- 1 arnold users 175 Feb 8 10:48 copy.c drwxr-xr-x 2 arnold users 4096 Jan 13 12:37 dir -rw-rw-r-- 1 arnold users 98 Apr 13 13:55 doppel.c -rwxr-xr-x 1 arnold users 13516 Feb 8 21:25 env -rw-r--r-- 1 arnold users 165 Feb 8 21:25 env.c drwx------ 2 arnold users 4096 Feb 21 14:13 ipc drwxr-xr-x 2 arnold users 4096 Feb 13 13:51 make -rwxr-xr-x 1 arnold users 13489 Apr 11 21:34 moin -rw-r--r-- 1 arnold users 60 Apr 13 13:55 moin.c |
Ein paar Dateien sollen herausgegriffen werden. Die Datei a.out erlaubt dem Besitzer, aber sonst niemandem, zu schreiben, zu lesen und auszuführen. Dagegen darf die Datei copy zusätzlich sowohl von der Gruppe users als auch vom Rest der Welt gelesen und gestartet werden, aber nicht geschrieben. Die Datei copy.c dagegen ist ein Quelltext mit ganz typischen Rechten für Datendateien. Der Besitzer darf sie lesen und schreiben, alle anderen nur lesen. Die Rechte werden als Oktalzahlen dargestellt. Oktalzahlen sind eine Sonderform der dualen Zahlendarstellung, in der 3 Bit eine Ziffer ergeben. Mit 3 Bit lassen sich die Zahlen von 0 bis 7 darstellen. Das heißt, dass jeweils eine rwx Gruppe zu einer Zahl umgebildet wird. So ergibt sich:
| r | w | x | Kennzahl | Bedeutung |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | keine Rechte |
| 0 | 0 | 1 | 1 | Ausführung, aber weder Lesen noch Schreiben |
| 0 | 1 | 0 | 2 | Nur Schreibrecht |
| 0 | 1 | 1 | 3 | Schreib- und Ausführungsrecht, nicht Lesen |
| 1 | 0 | 0 | 4 | Nur Leserecht |
| 1 | 0 | 1 | 5 | Lese- und Auführungsrecht |
| 1 | 1 | 0 | 6 | Lese- und Schreibrecht, kein Ausführungsrecht |
| 1 | 1 | 1 | 7 | Lese-, Schreib- und Ausführungsrecht |
Eine Besonderheit ergibt sich für Verzeichnisse. Hier bedeutet das Fehlen(!) einer Berechtigung:
| Recht | Bedeutung für Verzeichnisse |
|---|---|
| x | In dieses Verzeichnis darf nicht gewechselt werden |
| r | Die Dateinamen des Verzeichnisses können nicht gelesen werden |
| w | Es darf weder eine Datei gelöscht noch umbenannt oder hinzugefügt werden |
Auf den ersten Blick erscheinen die Unterschiede zwischen den Datei- und den Verzeichnisrechten kompliziert. Wenn man sich ein Verzeichnis aber als eine Datei vorstellt, in der die Dateinamen abgestellt sind, ist der Zusammenhang mit den Schreib- und Leserechten logisch. Wenn man das Verzeichnis nicht lesen kann, kann man auch die Dateinamen nicht anzeigen. Darf das Verzeichnis nicht geschrieben werden, kann man auch keine Einträge hinzufügen oder löschen oder umbenennen. Die Rechte von Dateien oder Verzeichnissen kann man mit dem Kommando chmod (change mode) verändert werden. Beispiel:
chmod 754 meinskript |
Mit diesem Befehl erhält die Datei meinskript die Rechte
rwxr-xr--. Das bedeutet, dass der Eigentümer die Datei lesen,
schreiben und ausführen darf. Die Mitglieder der besitzenden Gruppe dürfen
die Datei einsehen und starten, der Rest der Welt darf die Datei nur lesen.
Auftritt unter fremder Lizenz: User-ID Bit
Bei Programmen kann beim chmod vor die drei Ziffern eine 4 gestellt
werden. Das bewirkt, dass das Programm unter der Benutzerkennung des
Eigentümers ausgeführt wird, egal, wer das Programm gestartet hat.
Man spricht vom Set-User-ID-Bit oder vom SUID.
Dies wird verwendet, wenn man auf bestimmte Daten nur mit dem entsprechenden
Programm zugegriffen werden soll. Die Daten können auf 600 gesetzt werden,
sodass sie nur der Eigner verändern darf. Ein Programm, dass das User-ID-Bit
gesetzt hat, darf niemals für jemand Fremdes beschreibbar sein.
(Der Grund ist eine Übungsaufgabe für den interessierten Leser.)
Beispiel für das Setzen des User-ID Bits:
chmod 4755 myprog |
Die Datei myprog würde beim ls -l folgende Rechte haben:
-rwsr-xr-x 1 arnold users 0 Dez 7 00:10 myprog |
Statt dem x steht also ein s bei den Benutzerrechten.
Buchstaben statt Zahlen
Wem das Rechnen in Dualzahlen gar nicht liegt, der hat auch die Möglichkeit,
chmod mit Buchstaben zu steuern. In Form einer Zuweisung wird auf
der linken Seite des Operators die Zielgruppe genannt. Auf der
rechten Seite stehen die Rechte. Als Zielgruppe gibt es den Eigentümer
(u für user), die Gruppe (g) und alle übrigen (o für others). Mit einem a (a
für alle) oder
durch Weglassen der Zielgruppe kann man alle Zielgruppen auf einmal ansprechen.
| Ziel | Operator | Recht |
| u | = | r |
| g | + | w |
| o | - | x |
| a | s |
Das Verändern eines Rechtes wird durch einen Ausdruck herbeigeführt, der sich aus den in der Grafik gezeigten drei Balken zusammensetzt. Das Gleichheitszeichen bewirkt ein Setzen, das Minuszeichen ein Entziehen und das Pluszeichen das Hinzufügen eines Rechtes. Die Rechte sind mit r, w, und x wenig überraschend. Das s ist das User-ID Bit. Beispiele für die Ausdrücke, die statt der Oktalzahl beim chmod verwendet werden können:
| Term | Bedeutung |
|---|---|
| a=r | setzt für alle Gruppen nur lesen |
| u+w | Der Besitzer erhält zusätzlich Schreibrecht |
| o-r | Der >>Welt<< wird das Leserecht entzogen |
| go=rx | Der Gruppe und der >>Welt<< wird Lese- und Ausführungsrecht erteilt |
Der Nachteil der Buchstabenschreibweise ist, dass manche Kombination mit
zwei Befehlen gegeben werden muss. Soll eine Datei so gesetzt werden, dass der
Besitzer lesen und schreiben, alle anderen aber nur lesen sollen, dann ist 644
natürlich kürzer als a=r und im zweiten Schritt u+w. Dafür ist es mit Ziffern
recht umständlich, alle Ausführungsrechte der Dateien im aktuellen Verzeichnis
zu entziehen und dabei die anderen Rechte nicht zu verändern.
Maske für die Rechte neuer Dateien: umask
Mit dem Befehl umask wird festgelegt, welche Rechte beim Anlegen von
Dateien standardmäßig nicht gesetzt werden sollen.
Im Allgemeinen ist dieser Wert 022 und braucht nur in den seltensten Fällen
geändert werden. Der Wert 022 bedeutet, dass beim Erstellen von Dateien für
die Gruppe und für den Rest das Recht des Schreibens nicht angelegt wird.
Der Befehl umask ohne Parameter zeigt den geltenden Wert. Wird ein
Parameter angegeben, wird die Maske entsprechend geändert.
umask 002 |
Mit diesem Befehl wird verhindert, dass neu erzeugte Dateien vom Rest der
Benutzer verändert werden. Der Besitzer und die Gruppe erhält dadurch
Schreibrecht.
Neuer Zeitstempel: touch
Der Befehl touch (engl. berühren) aktualisiert die Zugriffszeit einer
Datei auf den jetztigen Zeitpunkt.
Wenn die Datei bereits existierte, ist der Effekt derselbe, als wäre sie
neu, aber unverändert geschrieben worden.
gaston> ls -l moin.c -rw-r--r-- 1 arnold users 60 Apr 13 13:55 moin.c gaston> touch moin.c gaston> ls -l moin.c -rw-r--r-- 1 arnold users 60 Jun 29 10:13 moin.c gaston> date Sam Jun 29 10:13:17 CEST 2002 gaston> |
|
Diese Seite basiert auf Inhalten aus dem Buch
Arnold Willemer: Wie werde ich UNIX-Guru Verlagsrechte bei galileo computing |
| Homepage |
(C) Copyright 2002 Arnold Willemer
|