Como definir permissões de arquivo com o comando touch

16

Parece que sempre que eu crio um arquivo com touchas permissões definidas para: -rw-r - r-- .

Existe alguma maneira de configurar as permissões touchou isso precisa ser feito depois com um comando diferente?

chackeriano
fonte

Respostas:

27

Você pode modificar seu umaskpara permitir (para a maioria das implementações) mais privilégios de leitura / gravação, mas não executáveis, pois geralmente as permissões solicitadas são 0666.

Se você umaské 022, você verá touchcriar um 0644arquivo.

Curiosamente, o POSIX descreve esse comportamento em termos de creat:

  1. Se o arquivo não existir:

    A função creat () é chamada com os seguintes argumentos:

    • O operando do arquivo é usado como argumento do caminho.

    • O valor do bit a bit-inclusive OR de S_IRUSR, S_IWUSR, S_IRGRP, S_IWGRP, S_IROTH, e S_IWOTHé usado como o argumento modo.

e é apenas seguindo os links para creat, depois openobservando a menção umaske o rastreamento para open(e creat) para verificar se isso umaskdeve afetar touch.

Para umaskafetar apenas o touchcomando, 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 existia anteriormente, touchnão alterará suas permissões, apenas atualize seus carimbos de data e hora).

Thomas Dickey
fonte
2

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

TarunSinghal
fonte