Ответы:
Проверьте разрешения ./directory
: если у вас есть разрешения на чтение, но вы не имеете прав на выполнение этого каталога, то у вас достаточно прав для чтения списка файлов в этом каталоге, но вы не можете использовать эти файлы или получить информацию о них.
пример сеанса:
$ 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
$
Некоторые ls
версии показывают сообщения об ошибках, когда они не могут отобразить информацию о файлах.
man readdir
для более низкого уровня детализации. Обратите внимание, что это поведение не указано в POSIX.
test
каталоге или нет (проверьте d char для '.' И '..')?