Frage zu umask()
-
Hallo,
Die Funktion umask() setzt Defaultberechtigungen eines Prozesses für das Erzeugen neuer Dateien und Verzeichnisse. Aber man kann die Berechtigungen sowieso bei open() oder creat() setztn, oder? Wozu braucht man denn umask()?
Danke
-
aus man 2 umask:
The umask is used by open(2) to set initial file permissions on a newly-created file. Specifically, per missions in the umask are turned off from the mode argument to open(2) (so, for example, the common umask default value of 022 results in new files being created with permissions 0666 & ~022 = 0644 = rw-r--r-- in the usual case where the mode is specified as 0666).
Sprich: die umask filtert die modi aus open raus, auch wenn sie dort gesetzt sind. So kann man sein programm so schreiben, dass es z.B. mit 0666-modus die Dateien erzeugt und der User dann per umask selbst bestimmen kann, was nun wirklich wird. So setze ich z.B. auf Rechnern mit mehreren Leuten die umask auf 077, dass Dateien erstmal nur für mich sind, während ich z.B. auf dem Heimrechner mit 022 auskommen kann. Das Programm braucht dabei nicht verändert werden.
-
Hi,
Heißt es, daß umask() immer nach open() aufgerufen wird?
Gruss
-
open führt umask nicht aus, sondern verwendet den wert, der mit umask gesetzt wurde.
björn