Você pode modificar seu umask
para permitir (para a maioria das implementações) mais privilégios de leitura / gravação, mas não executável, já que geralmente as permissões solicitadas são 0666
.
Se o seu umask
for 022
, você verá touch
criar um arquivo 0644
.
Curiosamente, o POSIX descreve esse comportamento em termos de creat
:
If file does not exist:
The creat() function is called with the following arguments:
The file operand is used as the path argument.
The value of the bitwise-inclusive OR of
S_IRUSR
,S_IWUSR
,S_IRGRP
,S_IWGRP
,S_IROTH
, andS_IWOTH
is used as the mode argument.
e é somente seguindo os links para creat
, em seguida para open
, notando a menção de umask
e back-tracking para open
(e creat
) para verificar se umask
é deveria afetar touch
.
Para umask
afetar somente o comando touch
, use um subshell:
(umask 066; touch private-file)
(umask 0; touch world-writable-file)
touch file-as-per-current-umask
(observe que, em qualquer caso, se o arquivo já existia anteriormente, touch
não alterará suas permissões, apenas atualizará seus timestamps).