Linux: ls -l solo imprime signos de interrogación:

11

Tengo un problema con la lista de algún directorio con ls -l:

$ ls -l ./directory
-????????? ? ? ? ?            ? file001.txt
-????????? ? ? ? ?            ? file002.txt

y solo ls funciona bien:

$ ls ./directory
file001.txt file002.txt

¿Qué está mal?

osgx
fuente

Respuestas:

14

Verifique los permisos de ./directory: si tiene permisos de lectura pero no ejecuta permisos en este directorio, entonces tiene suficientes derechos para leer la lista de archivos en ese directorio, pero en realidad no puede usar estos archivos u obtener información sobre ellos.

sesión de ejemplo:

$ cd /tmp/
$ mkdir /tmp/test
$ touch /tmp/test/file
$ ls -la test/
total 44
drwxr-xr-x  2 myself myself  4096 janv.  5 11:01 .
drwxrwxrwt 42 root   root   54242 janv.  5 11:01 ..
-rw-r--r--  1 myself myself     0 janv.  5 11:01 file
$ chmod a-x /tmp/test # remove execute permission for all
$ ls -la test/
total 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? file
$ ls -ld test/
drw-r--r-- 2 myself myself 4096 Jan  5 11:01 test/
$ cat test/file 
cat: test/file: Permission denied
$ chmod a+x /tmp/test # readd execute permission for all
$ ls -la test/
total 44
drwxr-xr-x  2 myself myself  4096 janv.  5 11:01 .
drwxrwxrwt 42 root   root   54242 janv.  5 11:01 ..
-rw-r--r--  1 myself myself     0 janv.  5 11:01 file
$ ls -ld test/
drwxr-xr-x 2 myself myself 4096 Jan  5 11:01 test/
$ cat test/file
$

Algunas lsversiones muestran mensajes de error cuando no pueden mostrar información sobre los archivos.

BatchyX
fuente
Pero, ¿cómo puedo saber si el archivo está dentro del test directorio o no (marque d char para '.' Y '..')?
osgx
1
@osgx: Esto es parte de la lista de archivos, con el nombre del archivo y el número de inodo. man readdirpara más detalles de bajo nivel. Tenga en cuenta que POSIX no especifica este comportamiento.
BatchyX