As permissões de criação de arquivo são modificadas pelo valor umask
.
Então, por exemplo:
$ umask
0022
$ touch xyz
$ ls -l xyz
-rw-r--r-- 1 sweh sweh 0 Sep 22 08:37 xyz
O valor de umask corresponde ao padrão padrão rwx e, portanto, um valor de 0022
remove ----w--w-
permissões do arquivo recém-criado.
Podemos mudar isso:
$ umask 002
$ touch abc
$ ls -l abc
-rw-rw-r-- 1 sweh sweh 0 Sep 22 08:38 abc
Agora a máscara 002 remove apenas -------w-
Para criar arquivos sem mascaramento
$ umask 0
$ touch def
$ ls -l def
-rw-rw-rw- 1 sweh sweh 0 Sep 22 08:40 def
Se você quiser que seu programa ignore o valor umask
, você deve chamar explicitamente a função umask(2)
antes de chamar open(2)
Observe que ao usar open(2)
com o O_CREAT
flag, você também deve passar uma permissão mode .
eg
open("myfile",O_CREAT|O_RDWR,0666);
Nesse caso, o campo de modo também é modificado por meio do valor umask
, de modo que o modo real da criação é (mode & ~umask)
.