¿No puedo cd en mi propio directorio?

10

En una instancia EC2, he cambiado la ubicación del registro de Apache a un directorio diferente al predeterminado. Esto es para que pueda mantener los registros en un EBS (que no sea de arranque, solo de datos).

Sin embargo, no puedo cdingresar al directorio de registros. Pertenece a mi usuario y tiene permisos de lectura para todos. No puedo tampoco catlos registros (aunque con sudo funciona y puedo ver que Apache está registrando muy bien).

$ 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

Esto no tiene ningún sentido para mi. ¿Ayuda?

Editar: el sistema de archivos es ext4.

Felix
fuente

Respuestas:

13

Necesita el bit de ejecución establecido en los directorios si desea poder cambiar a eso. (El tipo de sistema de archivos realmente no importa).

chmod u+x ./apache
Estera
fuente
7

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

TABLA 1. Permisos del directorio UNIX

QUIEN PERMITE LOS PERMISOS
USUARIO Leer (r) El propietario de la cuenta puede enumerar los archivos en el directorio.
       Escribir (w) El propietario de la cuenta puede crear o eliminar archivos en el 
                        directorio.
       Ejecute (x) los archivos de acceso en ese directorio por nombre (como Web 
                        archivos de página).

GRUPO Lectura (r) Todos los miembros del grupo designado pueden enumerar los archivos en 
                        El directorio.
       Escribir (w) Todos los miembros del grupo pueden crear o eliminar archivos en el 
                        directorio.
       Ejecutar (x) Todos en el grupo pueden cambiar (cd) a 
                        directorio y archivos de acceso en ese directorio por nombre 
                        (como archivos de página web).

OTROS Leer (r) Cualquiera puede listar los archivos en el directorio.
       Escribir (w) Cualquiera puede crear o eliminar archivos en el directorio.
       Ejecutar (x) Cualquiera puede cambiar (cd) en el directorio y acceder 
                        archivos en ese directorio por nombre 
                        (como archivos de página web).

El artículo de Wikipedia es vale la pena leer y dice

El efecto de establecer los permisos en un directorio (en lugar de un archivo) es "uno de los problemas de permisos de archivos más incomprendidos con mayor frecuencia" (Hatch 2003).

RedGrittyBrick
fuente
¿Entonces tienes que tener executepermisos para cd en un directorio? @RedGrittyBrick
AJP
Sí, necesita ejecutar permiso en un directorio para "recorrerlo", es decir, hacer cualquier cosa con su contenido. Si no tiene permiso de ejecución, aún puede ver el directorio, y puede stathacerlo, pero no puede lsacceder ni acceder a su contenido.
Blacklight Shining