Calocybe: / (UNIX) chmod Problem beim erstellen von Verzeichnissen

Beitrag lesen

Hallo!

Ich nehme mal an, Du redest von Perl, es sieht jedenfalls so aus. Aber in anderen Sprachen ist das Prinzip dasselbe, da es eigentlich gar nicht Sache der Sprache ist, sondern des OS (Unix).

mkdir("/home/.usw... /xyz",0777);

Dann gebe ich den chmod von 777 an. (Es soll beschreibbar bleiben)
Dummerweise bekommt das Verzeichnis einen chmod 755 (?) verpasst.
Ich versteh das ganze nun nich, was mach ich daran nur falsch?

Es gibt in Unixen das Konzept der "umask". Dies ist eine Bitmaske, die jeder User fuer sich einstellen kann und beim Erstellen von Dateien und Verzeichnissen von den dabei angegebenen Rechten abgezogen wird. Sehen wir uns das fuer Dein Beispiel an:

Deine eingestellte umask ist offensichtlich 0022 (ein sehr verbreiteter Wert; meist auch Voreinstellung). Du gibst 0777 fuer die Rechte an, davon wird 0022 "abgezogen" (genaugenommen wird die Bit-Inversion ver-and-et), es bleibt 0755 uebrig, und diese Rechte werden dann gesetzt.

Somit kann also eine Standardeinstellung fuer die maximal zu vergebenden Rechte vorgenommen werden. Die umask sollte daher sorgfaeltig ausgewaehlt sein; und ein Programm sollte auch nicht ohne triftigen Grund eine andere Einstellung erzwingen. Ist dies doch mal noetig, muss man eben vorher mit dem umask-Befehl eine andere Maske setzen, oder eben hinterher nochmal chmod benutzen.

Gewoehnlich gibt man beim Erzeugen von Dateien die Maske 0777 an, fuer Verzeichnisse aber 0666. Nach Abzug der umask bleibt dann 0755 bzw. 0644 uebrig.

Dasselbe nochmal etwas besser beschrieben findet sich in der perlfunc manpage bei chmod und umask.

HTH, Calocybe