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_IWOTHis 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).