Isso não é possível. umask
apenas impede permissões, mas nunca as adiciona. Assim, você só terá permissão de execução se a criação de open()
syscall os contiver. Este é o caso se um compilador criar um arquivo executável.
Como os arquivos criados por padrão com permissão 666 e umask
(em forma de bits de permissão) subtraem bit a bit dessa permissão, podemos fazer algo para conceder a permissão execute
sem usar o caractere de permissão (r, w, x )?
Estou me referindo ao uso de máscara bit-wise, por exemplo
umask 002
não define caracteres de permissão, como
umask u+x
umask u=rwx
A permissão de um novo arquivo é calculada a partir da permissão usada com a chamada creat()
.
Você umask
resulta em:
$ umask 002
$ umask -S
u=rwx,g=rwx,o=rx
Portanto, se você usar creat()
com uma permissão de arquivo de 0777
, receberá um novo arquivo com rwxrwxrx
. No entanto, os programas usuais usam 0666
como argumento de permissão de arquivo para creat()
.
Tags permissions umask exec