Eu, como usuário normal (não root), estou tentando criar um arquivo em um diretório conforme abaixo:
touch a/b/c/d/test.log
No entanto, recebo um erro: permissão negada.
Eu sei que deveria chmod
para o diretório, mas não sei o que é uma permissão adequada porque não quero torná-lo 777.
Além disso, devo chmod
para cada diretório como este:
sudo chmod ??? a
cd a
sudo chmod ??? b
cd b
sudo chmod ??? c
...
Ou eu deveria simplesmente fazer:
sudo chmod ??? a/b/c/d
Se eu precisar ler e escrever test.log
depois de criar, o que devo usar para substituir ???
acima?
Você precisa de um mínimo de permissões de 'execução' nos diretórios
a/
,a/b/
ea/b/c/
, com permissão de 'gravação' no diretórioa/b/c/d/
. A permissão de execução permite que você percorra o diretório para chegar ao próximo, você não precisa de permissões de gravação reais nos diretórios intermediários. Você pode usar a opção recursiva para chmod para conceder permissões de execução:Tenha em mente que este comando afetará todos os arquivos e todos os diretórios dentro do
a/
, não apenas os diretórios que você mencionou.exemplo, suponha que o usuário p1 queira criar um arquivo em /a/b/c/d/
Somente proprietário e grupo têm permissão de leitura, gravação e execução, mas o usuário p1 não está na lista de grupo e proprietário.
Nesse momento, você tem 2 opções para alterar a permissão de outras pessoas, como abaixo
chmod o+rwx /path_whereyou_want_to_create_file/ significa que todos os usuários terão permissão rwx para que possam criar um arquivo.
Mas, para um lado mais seguro, você pode ativar a permissão como abaixo, para que ele forneça permissão de leitura, gravação e execução apenas para um usuário e caminho específicos
setfacl -mu:p1:rwx /path_whereyou_want_to_create_file/