Linux: ls -l affiche uniquement les points d'interrogation:


11

J'ai un problème avec la liste de certains répertoires avec ls -l:

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

et juste ls fonctionne bien:

$ ls ./directory
file001.txt file002.txt

Qu'est-ce qui ne va pas?

Réponses:


14

Vérifiez les autorisations de ./directory: si vous disposez d'autorisations de lecture mais n'exécutez pas d'autorisations sur ce répertoire, vous disposez alors de droits suffisants pour lire la liste des fichiers de ce répertoire, mais vous ne pouvez pas réellement utiliser ces fichiers ou obtenir des informations à leur sujet.

exemple de session:

$ 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
$

Certaines lsversions affichent des messages d'erreur lorsqu'elles ne peuvent pas afficher d'informations sur les fichiers.


Mais comment ls peut savoir, le fichier est-il dans le test répertoire ou non (vérifiez d char pour '.' Et '..')?
osgx

1
@osgx: Cela fait partie de la liste des fichiers, avec le nom du fichier et le numéro d'inode. man readdirpour plus de détails de bas niveau. Notez que ce comportement n'est pas spécifié par POSIX.
BatchyX
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.