Não é possível cd no meu próprio diretório?

10

Em uma instância do EC2, alterei o local do log do Apache para um diretório diferente do padrão. Isso é para que eu possa manter os logs em um EBS (sem inicialização, apenas dados).

No entanto, não consigo cdentrar no diretório logs. Pertence ao meu usuário e possui permissões de leitura para todos. Também não consigo catos logs (embora com o sudo funcione e posso ver que o Apache está fazendo logon muito bem).

$ ls -lh
total 4.0K
drw-rw-rw- 2 ubuntu ubuntu 4.0K 2011-05-15 14:52 apache
$ ls -lh apache/
ls: cannot access apache/error.log: Permission denied
ls: cannot access apache/access.log: Permission denied
total 0
-????????? ? ? ? ?                ? access.log
-????????? ? ? ? ?                ? error.log
$ cd apache
-bash: cd: apache: Permission denied
$ sudo ls -lh apache/
total 2.4M
-rw-r--r-- 1 ubuntu ubuntu 2.4M 2011-05-15 15:04 access.log
-rw-r--r-- 1 ubuntu ubuntu  27K 2011-05-15 15:00 error.log

Isso não faz sentido para mim. Socorro?

Edit: o sistema de arquivos é ext4.

Felix
fonte

Respostas:

13

Você precisa do bit de execução definido nos diretórios para poder mudar para isso. (O tipo de sistema de arquivos realmente não importa.)

chmod u+x ./apache
Esteira
fonte
7

http://www.albany.edu/faculty/gms/homepage101/unix_permissions.html diz

TABELA 1. Permissões do DIRETÓRIO UNIX

QUEM PERMITE AS PERMISSÕES
Leitura do USUÁRIO (r) O proprietário da conta pode listar os arquivos no diretório.
       Gravação (w) O proprietário da conta pode criar ou excluir arquivos no diretório 
                        diretório.
       Execute (x) arquivos de acesso nesse diretório por nome (como Web 
                        arquivos de paginação).

GRUPO Read (r) Todos no grupo designado podem listar os arquivos em 
                        o diretório.
       Gravação (w) Todos os membros do grupo podem criar ou excluir arquivos no diretório 
                        diretório.
       Executar (x) Todos no grupo podem alterar (cd) no diretório 
                        diretório e acessar arquivos nesse diretório por nome 
                        (como arquivos de páginas da Web).

OUTROS Read (r) Qualquer pessoa pode listar os arquivos no diretório.
       Gravação (w) Qualquer pessoa pode criar ou excluir arquivos no diretório.
       Executar (x) qualquer pessoa pode alterar (cd) no diretório e acessar 
                        arquivos nesse diretório por nome 
                        (como arquivos de páginas da Web).

O artigo da Wikipedia vale a pena ler e diz

O efeito de definir as permissões em um diretório (e não em um arquivo) é "um dos problemas de permissão de arquivo incompreendidos com mais frequência" (Hatch 2003).

RedGrittyBrick
fonte
Então você tem que ter executepermissões para cd em um diretório? @RedGrittyBrick
AJP
Sim, você precisa executar permissão em um diretório para "atravessá-lo", ou seja, para fazer qualquer coisa com seu conteúdo. Se você não tiver permissão de execução, ainda poderá ver o diretório, e poderá stat, mas não poderá lsou não poderá acessar seu conteúdo.
Blacklight Shining