Hallo Liste, 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? Michael
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 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. Die Umask ist eine "XOR"-Verknüpfung hierzu. Ciao Achim -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE8AqlXpjyfTl3zpyIRAp5bAKC+tdhou1Fl/TjKlKPGwZBhhHR4dgCgurY+ 5NaLw/NjGbOuO++B4Iwypso= =LmCR -----END PGP SIGNATURE-----
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/
On Tue, 27 Nov 2001, Eilert Brinkmann wrote:
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.
*bzzt* ;) Andersrum. Es werden eben gerade alle Bits geloescht, die in der umaks gesetzt sind, die, bei denen die umask-bits nicht gesetzt sind werden "in Ruhe gelassen". Anforderung umask okt. = bin. & ~ bin. okt. 0666 = 110110110 & ~ 000010010 = 022 110110110 & 111101101 ^ ^ 110110110 & 111101101 ----------- = 110100100 = 0644 ^ ^ bin. okt. Alle Klarheiten beseitigt? -dnh --
So etwas habe Ich mir schon gedacht. aber da das zuendeführen dieses Gedanken mir zu anstrengend war, habe Ich an dieser Stelle aufgehöhrt zu denken. kannst Du Dich noch erinnern, wann etwa das war? Das Jahr würde schon reichen. [Woko° und Cheatah in dag°]
David Haller wrote:
On Tue, 27 Nov 2001, Eilert Brinkmann wrote:
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.
*bzzt* ;) Andersrum. Es werden eben gerade alle Bits geloescht, die in der umaks gesetzt sind, die, bei denen die umask-bits nicht gesetzt sind werden "in Ruhe gelassen".
Mein ich doch ;-) Manchmal vermisse ich doch ein WWIM-Programm[1]... Eilert Footnotes: [1] WWIM = write what I mean -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik eilert@informatik.uni-bremen.de - eilert@tzi.org http://www.informatik.uni-bremen.de/~eilert/
* Michael Hoeller schrieb am 26.Nov.2001:
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?
Wenn Du eine normale Datei anlegst, hat sie nie Ausführungsrechte. Wenn Du ein Programm übersetzt, dann wird das übersetzte Programm auch entsprechedne Ausführrechte haben, und ein Verzeichniß auch. Bernd -- Hast Du bei Problemen schon in der SuSE-Support-Datenbank (SDB) nachgesehen? Auf Deinem Rechner: http://localhost/doc/sdb/de/html/index.html | mit Apache: http://localhost/doc/sdb/de/html/key_form.html | Zufalls- Tagesaktuell bei SuSE: http://sdb.suse.de/sdb/de/html/index.html | signatur 2
participants (5)
-
AchimMuellerRheine@t-online.de
-
B.Brodesser@t-online.de
-
David Haller
-
Eilert Brinkmann
-
MichaelHoeller@t-online.de