Réponses:
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 ls
versions affichent des messages d'erreur lorsqu'elles ne peuvent pas afficher d'informations sur les fichiers.
man readdir
pour plus de détails de bas niveau. Notez que ce comportement n'est pas spécifié par POSIX.
test
répertoire ou non (vérifiez d char pour '.' Et '..')?