Datei-Zugriffsrechte
CIP Index Up Left Right

Datei-Zugriffsrechte

Unter UNIX ist es möglich für jede Datei anzugeben, wer sie lesen (read), beschreiben (write) oder ausführen (execute) darf. Man kann dies für drei Gruppen von usern festlegen: für sich selbst (user), für alle die in der Gruppe sind, der die Datei gehört (group) oder für alle anderen (others).

Das soll nun anhand des ls - Kommandos erklärt werden. Dazu gibt man einfach mal ls -l bzw. unter BSD-UNIX (Sun-Maschinen) ls -lg ein. Dann werden in der 1. Spalte die Zugriffsrechte ausgegeben: Das erste Zeichen gibt über den Typ der Datei Auskunft und kann hier ignoriert werden. Die Zeichen 2 bis 4 sind die Zugriffsrechte für den Besitzer der Datei (das ist der, dessen Benutzername in der 3. Spalte ausgegeben steht), Zeichen 5 bis 7 die der Gruppe (das ist die Gruppe deren Name in der 4. Spalte steht) und in Zeichen 8 bis 10 die Zugriffsrechte für alle anderen. Die Bedeutung der Zeichen r,w und x ist die, wie sie im obigen Abschnitt erklärt wurde.

   -rwxr-x--x  1 tnzoerne www         12183 Feb 26 01:58 example
Diese Datei wäre also ausführbar für alle, zusätzlich lesbar für Mitglieder der Gruppe www und schreibbar nur für den Eigentümer tnzoerne.

Ob eine Datei lesbar ist, hängt zusätzlich davon ab, ob das Verzeichnis, das sie enthält, und alle darüberliegenden lesbar sind. Möchte man alle Dateien eines Verzeichnisses lese-schützen braucht man also nur chmod go-rx path einzugeben. Siehe auch beim Kommando cd.

Anmerkung: Die Gruppeneinschränkung ist für den normalen CIP-Benutzer nicht sinnvoll, da er nur in der Gruppe ciplogin ist und dieses Privileg mit allen anderen teilt, d.h. Leserechte für ciplogin sind so gut wie Leserechte für alle.

Die Zugriffsrechte ändert man mit dem Kommando chmod mode filename. Dieses Programm arbeitet mit unterschiedlichen Parametermodi: man kann die neuen Zugriffsrechte entweder direkt als Octal-Zahl angeben, oder als mnemonic d.h. in der Form G+R bzw. G-R wobei "G" eines oder mehrere aus der Menge {u,g,o} und "R" eines oder mehrere aus der Menge {r,w,x} ist. Das Kommando bietet noch mehr Optionen die - genauso wie eine genaue Beschreibung der eben nur angedeuteten Parametermodi - in der manpage erklärt werden. Beispiele:

   chmod go-w file
   chmod 755 file

Standardmäßig werden alle Dateien mit den Rechten -rw-r--r-- bzw. -rwx-r-x-r-x angelegt. Man kann dies jedoch mit dem Shell-Kommando umask verstellen.

Set- und Sticky-Bits

Das Sticky-Bit (gibt es nicht auf HP) bewirkt, daß in Verzeichnissen wo alle Benutzer Schreibrecht haben diese trotzdem nur ihre eigenen Dateien löschen können. Dies ist z.B. in /tmp gesetzt. Auf HPs kann jeder Benutzer die Dateien der anderen in /tmp löschen (also dort nichts wichtiges ablegen!). Setzen mit chmod o+t.

Eine spezielle Bedeutung haben S- und T-Bits. Bei Ausführung einer Datei mit gesetztem S-Bit wird für den gestarteten Prozeß die Gruppen- oder uid-Zugehörigkeit der Datei übernommen, je nachdem wo das S-Bit gesetzt wurde (chmod g+s oder u+s). Ein solches Programm ist zum Beispiel xterm, das wegen bestimmter Operationen kurzzeitig Superuser-Privilegien (d.h. uid 0) braucht.

Anmerkung für Fortgeschrittene: Das S-Bit sollte man niemals auf Shell-Scripten setzen, da es diverse Tricks gibt dann unter der angenommenen uid beliebige Kommandos (also auch eine Shell oder rm -rf) auszuführen. Auch bei normalen Executables muß man extrem vorsichtig sein; es empfiehlt sich den entsprechenden Abschnitt im perl-Manual zu lesen. Aus diesem Grund ist das Ausführen von set-uid Programmen in User-Homes nicht erlaubt (Automounter mit Option "nosuid").