JürgenSchilling

  EDV-Service | Fotografie | Fotoarbeiten   

 


 Home

 Black&White
 Fotogramme
 Infrarot
 Kategorien
 Lightbox
 Lochkamera
 Portrait
 

Advanced ___________

 Service:
 EDV-Manuals

 Belichtungszeitentabelle
 Schrauben u. Gewinde
 

 Einführung in die:
 Beurteilung v. Negativen
 Farbmischung
 Filmentwicklung
 Infrarotfotografie
 Blitzlichtfotographie
 
 Entwicklungszeiten:
 Agfa Rodinal
 Kodak D76

 Tiefenschärferechner:
 Komplex  Einfach


 Fotolabor


 Kontakt / Impressum

 
______

 Zähler:
 Bilder pro Gast
 Zugriffszähler

 myPHPadmin
 
B4YCounter

 Login  Logout
 
Files

 Alle Bilder als Link

          UNIX: Filerechte


  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.

Eigentümer wechseln: chown und chgrp

Jede Datei hat in seinem Dateieintrag die Information, welchem Benutzer und welcher Gruppe sie gehört. Um genau zu sein, speichert die Datei die User-ID und die Group-ID des Benutzers, wie sie in der /etc/passwd des lokalen Rechners hinterlegt sind. Damit in einem lokalen Netzwerk die Eigentümerbezeichnungen konsistent sind, ist es wichtig, daß Benutzer auf jeder Maschine auf der sie angemeldet sind, die gleiche User-ID haben. Gleiches gilt für die Group-ID. Eigentümer und Gruppe werden in den Eigenschaften einer Datei gespeichert, weil man für den Eigentümer und die Gruppe einer Datei unterschiedliche Berechtigungen einstellen kann als für den Rest der Welt. Eine neue Datei erhält immer die User-ID und die Standard-Group-ID des Anwenders, der sie erzeugt. Dies gilt beispielsweise auch, wenn eine Datei kopiert wird. Aus Sicht des Systems wird beim Kopieren eine neue Datei angelegt, die den Inhalt der alten Datei hat. Bei mv liegt der Fall anders, weil hier nur der Verzeichniseintrag an eine andere Stelle bewegt wird.

chown
Um einer Datei oder einem Verzeichnis einen neuen Besitzer zuzuordnen, gibt es den Befehl chown (change owner). Der erste Parameter ist der neue Benutzername. Es folgen die Dateien, die dem Benutzer zugeordnet werden sollen. Zur Änderung des Eigentümers ist nur der bisherige Eigentümer und der Systemadministrator root berechtigt.

chown Benutzer  Dateien


chgrp
Analoges gilt für chgrp (change group). Eine Datei gehört nicht nur einem Benutzer, sondern auch einer Gruppe. Auf diese Weise kann einer beschränkten Gruppe von Personen ein Recht auf die Datei zugewiesen werden, die die anderen Benutzer nicht haben. Die Group-ID, die die Datei hält, kann mit dem Befehl chgrp geändert werden. Berechtigt ist ein Mitglied der Gruppe oder root.

chgrp Gruppe  Dateien 

Man kann auch Benutzer und Gruppe bei einigen Varianten von chmod mit einem Befehl setzen:

chown Benutzer:Gruppe  Dateien


Berechtigungen: chmod
Jede Datei hat Informationen darüber, ob sie gelesen, geschrieben oder ausgeführt werden kann. Diese Rechte existieren jeweils für Eigentümer, Gruppe und alle restlichen Benutzer. Durch den Befehl ls -l kann man die Rechte von Dateien als eine Gruppe von 9 Buchstaben oder Minuszeichen sehen.  

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, daß 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   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.
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, daß manche Kombination mit zwei Befehlen gegeben werden muß. Soll eine Datei so gesetzt werden, daß 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

umask dient zum Einschränken der Benutzerrechte. Defaultmäßig würde Linux Dateien mit den Rechten rw-rw-rw, bzw. Verzeichnisse mit den rechten rwxrwxrwx, erstellen. Also mit den Oktal-Werten 666 für Dateien bzw. 777 für Verzeichnisse. Der Wert der umask schränkt diese Rechte ein, indem dieser Wert beim Erstellen der Datei bzw. des Verzeichnisses vom Defaultwert abgezogen wird.
 

Wobei man beachten muß, daß keine Ziffer in der umask die 7 überschreiten darf. Zudem subtrahiert man immer nur die Werte des zugehörigen Satzes. Also bei einer umask von 27
• subtrahiert man die 7 von den Rechten von dem Rest der Welt und
• die 2 von den Rechten der Besitzergruppe

Es kann immer nur abgezogen werden. Ein erhöhen der Rechte ist mit umask nicht möglich.
Die Defaultrechte für Dateien sind 666, für Verzeichnisse 777.



Selbst wenn die Rechte, z.B. von dem Rest der Welt kleiner 7 sind, macht man keinen Übertrag zur Besitzergruppe.

Beispiel: umask 27, Rechte für eine Datei

Datei, Defaultrechte 666
umask - 27
Ergebnis! 640



Beispiel: umask 22, Erstellen eines Verzeichnisses:

Verzeichnis Defaultrechte 777
umask 22
effektive Rechte 755


d.h. der Benutzergruppe und dem Rest der Welt wurden die Schreibrechte entzogen.


Beispiel 2: umask 27, Erstellen einer Datei:
Hier schlage ich einen anderen Werte der Berechnung ein. Der Defaultwert von 666 heißt nichts anderes, als daß das Recht zum Ausführen der Datei nicht vergeben wird. Dies entspricht einem oktalen Wert von 111. Diesen Wert ziehe ich später ab, jedoch nur, wenn bei dem entsprechenden Satz noch etwas abzuziehen ist. Weniger als 0 geht eben nicht.

Defaultrechte (für Verzeichnis) rwxrwxrwx 777
umask (Default in /etc/login.dfs) ----w-rwx 022
Ergebnis rwxr-x--- 755
abzüglich (Default für Dateien) --x--x--x 111
effektive Rechte rw-r----- 644


Der durch umask eingestellte neue Wert gilt nur für die Dauer einer Sitzung.
Eine permanente Änderung erreichen Sie, wenn Sie den Befehl umask in die Konfigurationsskripte .profile oder .bashrc eintragen.
 

11.09.2009 J.Schilling