'Permissão negada' para um arquivo que possuo?

13

Meu usuário, bob, não pode acessar arquivos que ele (teoricamente possui). Estou executando o Fedora Core 8. Provavelmente é mais fácil mostrar do que dizer:

> ls -al .
total 32
drwxrwxr-x 7 bob bob 4096 May 18 14:33 .
drwxrwxr-x 4 bob bob 4096 May 12 15:44 ..
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

> cd ./log
-bash: cd: log/: Permission denied

> ls -al ./log
ls: cannot access log/..: Permission denied
ls: cannot access log/the.log: Permission denied
ls: cannot access log/.: Permission denied
total 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? the.log

> sudo ls -al ./log
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .
drwxrwxr-x 7 bob bob      4096 May 18 14:33 ..
-rw-rw-r-- 1 bob bob         0 Jun  1 04:12 the.log

O ls -al se destaca como muito estranho. Ele listará os arquivos que eu não tenho permissão para ver, mas não me mostrará as permissões?

Então as perguntas são, o que causaria isso? E o que posso fazer para repará-lo?

    
por Gordon Wilson 02.06.2009 / 21:45

8 respostas

17
> sudo ls -al ./log
...
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .

Não parece que Bob tenha permissões de execução para ./log, então ele não pode cd .

Mas

> ls -al .
...
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

mostra que ele faz. Mas não parece que eles estão apontando para o mesmo arquivo (permissões diferentes, modtime diferente).

Teste sudo ls -ail ./log e ls -ail para ver se o inode é o mesmo.

    
por 02.06.2009 / 21:51
9

As coisas são mais simples que a corrupção do sistema de arquivos ou o selinux. Como você pode ver, está faltando a permissão x (executável) no diretório de log. Na verdade, para diretórios, x significa que alguém pode mudar para esse diretório. Basta fazer um "chmod + x log" para corrigir esse perm e você deve ser capaz de acessá-lo.

    
por 02.06.2009 / 21:52
6

Eu vi coisas assim quando o sistema de arquivos foi corrompido ou se você tem uma unidade com falha. A correção geralmente é executar fsck no sistema de arquivos e deixar corrigir erros encontrados.

    
por 02.06.2009 / 21:48
2

Além disso, verifique as configurações do SE / Linux. Às vezes, as permissões no arquivo não têm nada a ver com o fato de você poder ou não acessá-lo.

    
por 02.06.2009 / 21:50
2

Os arquivos podem ter o conjunto de atributos estendidos imutáveis ou anexados somente. Eu tive isso acontecer antes e nem mesmo o root poderia excluir o arquivo.

Atributos estendidos podem ser visualizações via "lsattr" e alterados por meio de "chattr"

    
por 02.06.2009 / 23:40
1
> sudo ls -al ./log
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .

Não sei por que, mas o "." entrada em ./log/ não tem permissões de execução. As permissões devem ser idênticas às de ./log.

Você pode tentar chmod 755 ./log e chmod 755 ./log/. e ver se algum comando corrige o acesso?

Além disso, eu aconselho que você execute um fsck no sistema de arquivos porque parece estar fora de sincronia.

    
por 02.06.2009 / 21:51
1

Você já tentou mudar a propriedade do diretório para outra pessoa e depois voltar para o Bob? O conselho do Zoredache é melhor - apenas fsck!

    
por 02.06.2009 / 21:51
1

Uma resposta mais concisa da IMO.

Seu diretório não tem permissões executáveis, que são exigidas por cd .

Corrigir:

$ sudo chmod +x ./log

Recursivamente:

$ sudo chmod -R +x ./log

+ x está adicionando o atributo executável. Você sempre pode remover o atributo fazendo -x

    
por 25.05.2016 / 15:51