Eu tenho uma pasta com minhas anotações sobre o sistema.
Estou logado como usuário1
cd masternotes
produz:
bash: cd: mastersnotes: permission denied
whoami
produz:user1
ls -l
produz:
drw-rw-rw-. 2 user1 user1 4096 Mar 26 20:47 masternotes
ls -l
dentro do diretório produz:
-rw-rw-rw-. 7 user1 user1 345 Oct 7 2006 crontab
-rw-rw-rw-. 7 user1 user1 348 Oct 7 2006 crontab~
-rw-rw-rw-. 7 user1 user1 3702 Oct 7 2006 grep_usage.txt
-rw-rw-rw-. 7 user1 user1 91868 Oct 7 2006 lvm-layout-10-14-03.tif
-rw-rw-rw-. 7 user1 user1 30 Oct 7 2006 mysql
-rw-rw-rw-. 7 user1 user1 35764 Oct 7 2006 notes
Eu corri chmod -R 666 masternotes
na pasta.
Eu corri chown
para root e chgrp
para root e voltei para user1.
root pode descer e entrar na pasta e abrir o arquivo.
usuário1 não pode.
Alguma pista sobre o que está acontecendo aqui?
Responder1
Isto é umpermissõesproblema, não um problema de propriedade.
As permissões de execução (abreviadas x
e exibidas onde -
está rw-
) estão visivelmente ausentes das permissões que você nos mostrou.
As permissões de execução funcionam de maneira muito diferente para diretórios e para arquivos normais. Para diretórios, as permissões de execução permitementre no diretório(isto é, para cd
acessá-lo ou abri-lo em um gerenciador de arquivos). Eles também permitem tentar acessar arquivos no diretório (embora o sucesso ou não também dependa de outras permissões, às vezes incluindo as permissões dos arquivos que estão sendo acessados).
root
é capaz de entrar no diretório porque ele não está realmente vinculado a permissões da maneira usual. De muitas maneiras, os comandos e aplicativos executados root
tentarão respeitar as permissões para atender aos desejos do usuário. Mas root
tem o poder de realizar qualquer operação (que o SO seja capaz de realizar) em qualquer arquivo ou diretório. Em um root
shell, cd
entrar em um diretório que não possui nenhuma permissão de execução será bem-sucedido.
A soluçãopara o problema é executar:
chmod u+x masternotes
Isso dá ( +
) ao proprietário de masternotes
( u
) permissões executáveis ( x
) no diretório.
Então você poderá entrar no diretório e tentar acessar os arquivos lá, como um usuário normal.
Se você quiser que os membros do proprietário do grupo também possam fazer isso, você pode executar o seguinte:
chmod ug+x masternotes
Mas você provavelmente é o único membro do seu grupo específico de usuário (que possui a pasta).
O chmod
comando aqui faznãoprecisa ser executado como root
- é deliberado que eu tenhanãoincluído sudo
em qualquer comando. Vocêtera pasta, para que você mesmo possa alterar suas permissões - você não precisa root
fazer isso por você.
Caso você esteja interessado emdefinindo permissões de execução numericamente, lembre-se de que para cada dígito adicionado (começando com zero):
- 4 para leitura.
- 2 para escrever.
- 1 para executar.
Por exemplo, se você quisesse que todos pudessem ler e executarsome-file
mas apenas o proprietário para poder escrever, você usaria:
chmod 755 some-file
Eu recomendoFilePermissions na documentação da comunidade, para leitura adicional sobre permissões de arquivo no Ubuntu, incluindo o bit executável e seu significado especial para pastas.