orm@doc-tcpip.org

Erstellt: Mai 1999 - Letzte Modifikation: Juni 2005

[ Main | Local ]


Permissions und das Sticky Bit.


Permissions

Die Permission Bits sind wohl jedem bekannt:
Owner group other
rwx: rwx: rwx
000 000 000

Das ganze geht oktal, also so: 4 2 1. Ein Beipiel:

rwxr-x--x
111101001
421 ist der Multiplikator
111 ist 7 (4 + 2 + 1)
101 ist 5 (4 + 1)
001 ist 1

Also ist der entsprechende Kode 751 und kann so mit den chmod-Kommando eingesetzt werden. Das Sticky Bit wird dem Kode vorgestellt, sodaß der Wert dann 4-Stellig ist.

Tabelle mit dem numerischen Werten

Die oktale Notation ergibt sich aus der Summe eines oder mehrerer der folgenden Werte:

Sticky Bit und Freunde: 4000 Setzt User ID bei der Ausführung. 2000 Setzt Gruppen ID bei der Ausführung. 1000 Erlaubt das Linken auf ein Directory oder setzt das save-text Attribute für Files. Rechte für den Besitzer: 0400 Lesen. 0200 Schreiben. 0100 Ausführen und Durchsuchen. Rechte für die Gruppe: 0040 Lesen. 0020 Schreiben. 0010 Ausführen und Durchsuchen. Rechte für alle anderen: 0004 Lesen. 0002 Schreiben. 0001 Ausführen und Durchsuchen. So sieht es dann aus: drws--S--T ==> 7700 d--S--S--T ==> 7000 drwsrwsrwt ==> 7777 (Also Großbuchstabe, wenn nur Sticky-bit und Freunde gesetzt sind, aber nicht die Permission, die dort normalerweise steht. Und Kleinbuchstaben, wenn sowohl Stick-bit etc. gesetzt sind sowie die "normale" Permission.)

Das Sticky Bit

Früher wurde das sticky bit gesetzt, um anzuzeigen, daß ein Executable im Speicher bleiben soll - dann geht es beim nächsten Aufruf schneller. Das Executable wird also "klebrig" gemacht und läßt sich nicht mehr aus dem Speicher vertreiben. Das ganze macht nur Sinn bei wenig Speicher und langsamen Platten; hier kann es dazu kommen, das ein Programm in den Speicher geladen wird und sich dann quasi selbst mit den Ergebnissen der eigenen Arbeit überschreibt - was die Performance in den Keller bringt, muß doch das Programm dauernd neu eingeladen werden. Diese Funktionalität ist heute tot, denn es gibt demand paging etc.

Das erklärt den heute verwirrenden Namen. Jetzt zeigt diese Bit das SUID (Switch UID) und SGID (Switch GID) Flag an. Man bekommt also bei Ausführung eines Executable, was so geflaggt ist, die effektive UID (GID) des Besitzers bzw. Gruppe. Das ist natürlich mit Vorsicht zu geniesen, schließlich soll nicht jeder wegen einer Kleinigkeit alle möglichen Rechte bekommen - das Programm könnte einen ausnutzbaren Fehler haben (Buffer Overflows oder einen anderen exploit). Es ist daher immer besser, im Programm anhand der Routine oder Funktion zu entscheiden und dann die effektive UID/GID auf dieser Ebene zu switchen.

Was sich sonst noch so finden läßt (Ausgabe von ls)

- Regular files d Directory b Block special files c Character special files p Pipe special files l Symbolic links s Sockets

[ Main | Local ]

[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | SMTP | Tracing | GPS ]

Copyright 2001-2014 by Orm Hager - Es gilt die GPL
Feedback bitte an: Orm Hager (orm@doc-tcpip.org )