Відповіді:
Перевірте дозволи ./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 для '.' Та '..')?