Achim Mueller wrote:
Am Montag, 26. November 2001 20:55 schrieb Michael Hoeller
vielen Dank für die Tipps wie ich die umask setzen habe. Leider kommt nur nicht das raus was ich moechte. Im meiner .bashrc hatte ich 022 und es wurde - rw- r-- r-- angelegt (ich hätte 755 erwartet). Nun habe ich die umask auf 077 geändert um 700 zu erhalten und bekommt mit touch tst.txt eine Datei mit -rw- --- ---. Habe ich da einen Knoten in meiner Leitung oder was stimmt da nicht?
Eine Datei wird immer mit 666, ein Verzeichnis immer mit 777 angelegt.
Nicht immer, sondern abhängig von den Wünschen, die das anlegende Programm bei den Systemaufrufen open() oder creat() (für Dateien) bzw. mkdir() (für Verzeichnisse) angibt. Meistens wird dieser Wunsch tatsächlich den von Dir genannten Werten entsprechen, aber es gibt Ausnahmen. Ein Linker, der ein ausführbares Programm erzeugt, wird z.B. die Rechte 777 für die erzeugte Programmdatei anfordern, beim Anlegen von Dateien oder Verzeichnissen mit sicherheitsrelevantem Inhalt wird ein Programm (hoffentlich) gleich geringere Zugriffsrechte vorgeben etc.
Die Umask ist eine "XOR"-Verknüpfung hierzu.
Nicht ganz -- bei einer XOR-Verknüpfung würde im Ergebnis jedes Bit gesetzt, daß in genau einem der beiden Werte gesetzt ist. D.h., wenn beim Anlegen einer Datei die Rechte 666 gewünscht werden und die umask den Wert 027 hat, käme dabei z.B. 641 heraus... Tatsächlich wird die Anforderung bitweise dem Komplement der umask und-verknüpft. Oder, wie es `man 2 open` in Anlehnung an die C-Notation ausdrückt: int open(const char *pathname, int flags, mode_t mode); [...] the permissions of the created file are (mode & ~umask). Das hat dann auch den Effekt, daß alle in der umask nicht gesetzten Bits aus der Anforderung gelöscht werden. Eilert -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik eilert@informatik.uni-bremen.de - eilert@tzi.org http://www.informatik.uni-bremen.de/~eilert/