¿'Permiso denegado' a un archivo que tengo?

13

Mi usuario, Bob, no puede acceder a los archivos que posee (teóricamente posee). Estoy ejecutando Fedora Core 8. Probablemente sea más fácil de mostrar que decir:

> 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

El se ls -aldestaca como muy extraño. ¿Enumerará los archivos que no tengo permisos para ver, pero no me mostrará los permisos?

Entonces las preguntas son, ¿qué causaría esto? ¿Y qué puedo hacer para repararlo?

Gordon Wilson
fuente

Respuestas:

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

No parece que Bob tenga permisos de ejecución para ./log, por lo que no puede cdhacerlo.

Pero

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

muestra que lo hace. Pero no parece que estén apuntando al mismo archivo (diferentes permisos, diferentes modtime).

Pruebe sudo ls -ail ./logy ls -ailvea si el inodo es el mismo.

CoverosGene
fuente
10

Las cosas son más simples que la corrupción del sistema de archivos o selinux. Como puede ver, le falta el permiso x (ejecutable) en el directorio de registro. En realidad, para los directorios x significa que alguien puede cambiar a ese directorio. Simplemente haga un "registro chmod + x" para arreglar esa permanente y debería poder acceder a ella.


fuente
> En realidad, para los directorios x significa que alguien puede cambiar a ese directorio Wow. Sigo olvidando eso; Gracias.
yPhil
6

He visto cosas así cuando el sistema de archivos se ha dañado o si tiene una unidad defectuosa. La solución generalmente es ejecutar fsck contra el sistema de archivos y dejar que corrija los errores que haya encontrado.

Zoredache
fuente
Lo hice hace aproximadamente una hora en uno de mis servidores de archivos. +1
Thomas Denton
2

Además, verifique la configuración de SE / Linux. A veces, los permisos en el archivo no tienen nada que ver con si puedes acceder o no.

David Mackintosh
fuente
1
Estoy de acuerdo con @David Mackintosh. Si SELinux está habilitado y si los archivos / directorios fueron creados por otra persona y luego cambiaron la propiedad a bob, es probable que esto suceda. ya que el contexto de los archivos permanece con el autor original y no será accesible hasta que el contexto también se cambie al usuario Bob.
Viky
2

Los archivos pueden tener el conjunto inmutable o agregar solo atributos extendidos. He tenido esto antes y ni siquiera root pudo eliminar el archivo.

Los atributos extendidos pueden ser vistas a través de "lsattr" y alteradas a través de "chattr"

Haakon
fuente
1
> sudo ls -al ./log
drw-rw-r-- 3 bob bob 4096 2 de junio 04:11.

No estoy seguro de por qué, pero el "." la entrada en ./log/ no tiene permisos de ejecución. Los permisos deben ser idénticos a los de ./log.

¿Puedes probar chmod 755 ./log y chmod 755 ./log/. y ver si algún comando corrige el acceso?

Aparte de eso, le aconsejaría que ejecute un fsck en el sistema de archivos porque parece que no está sincronizado.

Russell Heilling
fuente
1

¿Has intentado cambiar la propiedad del directorio a otra persona y luego volver a Bob? Sin embargo, el consejo de Zoredache es mejor: ¡solo jódelo!

RainyRat
fuente
2
Este tipo de problema siempre termina siendo permisos de directorio.
doublejosh
1

Una respuesta más concisa de la OMI.

Su directorio no tiene permisos ejecutables, que son requeridos por cd .

Reparar:

$ sudo chmod +x ./log

Recursivamente:

$ sudo chmod -R +x ./log

+ x está agregando el atributo ejecutable. Siempre puede eliminar el atributo haciendo -x

Justin Fortier
fuente