Como definir permissões de arquivo com o comando touch

15

Parece que sempre que eu crio um arquivo com touch , as permissões são definidas como: -rw-r - r - .

Existe alguma forma de configurar as permissões com touch ou isso tem que ser feito depois com um comando diferente?

    
por chackerian 27.07.2016 / 03:08

2 respostas

26

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 :

  1. 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, and S_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).

    
por 27.07.2016 / 03:10
2

Você pode manipular o umask . Geralmente é definido como 022 , o que significa que quando um usuário cria um arquivo, ele obtém permissão de 0644 , você pode manipular umask de acordo com suas necessidades.

    
por 27.07.2016 / 05:00