Sou dono de uma pasta mas não consigo acessá-la

4

Eu tenho uma pasta com minhas anotações sobre o sistema interno.

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 executei chmod -R 666 masternotes na pasta.

Eu executei chown para root e chgrp para root e de volta para user1.

root pode descer e entrar na pasta e abrir o arquivo.

user1 não pode.

Alguma pista sobre o que está acontecendo aqui?

    
por msmith 27.03.2013 / 05:13

1 resposta

5

Este é um problema permissões , não um problema de propriedade.

Executar permissões (abreviado x e aparecendo onde o - está em rw- ) estão conspicuamente ausentes das permissões que você nos mostrou.

As permissões de execução funcionam de maneira muito diferente para diretórios do que para arquivos regulares. Para diretórios, as permissões de execução permitem entrar no diretório (isto é, cd , ou abri-lo em um gerenciador de arquivos). Eles também dão a capacidade de tentar acessar arquivos no diretório (embora o sucesso tenha ou não também outras permissões, às vezes incluindo as permissões dos arquivos que estão sendo acessados).

root é capaz de entrar no diretório porque não está realmente vinculado às permissões da maneira usual. De muitas maneiras, os comandos e aplicativos que são executados como root tentam respeitar as permissões para cumprir os desejos do usuário. Mas root tem o poder de realizar qualquer operação (que o sistema operacional é capaz de executar) em qualquer arquivo ou diretório. Em um root shell, cd ing em um diretório que não tenha nenhuma permissão de execução será bem-sucedido.

A solução para o problema é executar:

chmod u+x masternotes

Isso dá ( + ) o proprietário das permissões executáveis masternotes ( u ) ( x ) no diretório.

Em seguida, você poderá entrar no diretório e tentar acessar os arquivos como um usuário normal.

Se você quiser que os membros do proprietário de seu grupo também façam isso, você pode executar isso:

chmod ug+x masternotes

Mas você é provavelmente o único membro do grupo específico do usuário (que possui a pasta).

O comando chmod aqui não precisa ser executado como root - é deliberado que eu não inclua sudo em qualquer comando. Você possui a pasta, então você mesmo pode alterar suas permissões - você não precisa de root para fazer isso por você.

Caso esteja interessado em definir numericamente as permissões de execução , lembre-se de que para cada dígito que você adicionar (começando com zero):

  • 4 para leitura.
  • 2 para escrever.
  • 1 para executar.

Por exemplo , se você quiser que todos possam ler e executar some-file , mas somente o proprietário possa escrever, você usaria:

chmod 755 some-file

Eu recomendo FilePermissions na documentação da comunidade , para ler mais sobre as permissões de arquivo no Ubuntu, incluindo o bit executável e sua significado especial para pastas.

    
por Eliah Kagan 27.03.2013 / 05:36