Não consigo encontrar uma referência, mas tenho quase certeza de que você não pode definir x
como uma permissão padrão em um arquivo.
Isso está em uma máquina de teste, não em produção. Eu incluí o seguinte no .bashrc de um usuário:
umask 000
Eu entrei de novo. Quando vou criar um arquivo no meu diretório pessoal, digamos, usando o vi test.txt, o arquivo obtém a permissão rw-rw-rw.
Eu também tentei definir umask manualmente:
umask a=rwx
O que estou fazendo de errado, já que preciso do equivalente a CHMOD 0777 ou 0755 em arquivos e diretórios? Novamente, esta é uma situação de teste, então a segurança não é de nenhuma preocupação no momento.
Edit: Venha para pensar sobre isso, isso é impossível? Como umask para arquivos é subtraída para 666, umask menor é 000, portanto, CHMOD de 666 é o maior que um arquivo pode obter? Não tem como dar arquivos CHMOD de 755 ou 777 usando umask?
umask
não define as permissões padrão, ele é usado para modificar o modo padrão de certas chamadas do sistema, como open(2)
e mkdir(2)
.
No seu caso, vim
está criando o arquivo com um modo 0666
, que seria modificado ainda mais pelo umask. O padrão de 0022, então criaria um arquivo com um modo de 0644. O umask não pode adicionar bits, ele só pode mascarar eles (daí o nome).
Como exemplo, executando
$ touch testfile
$ ls -l testfile
-rw-r--r-- 1 bob bob 0 2011-06-27 16:36 testfile
ainda fez a seguinte chamada de sistema (observe o 0666 no campo mode_t)
open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
Tags permissions umask linux ubuntu