Antworten:
Überprüfen Sie die Berechtigungen von ./directory
: Wenn Sie Leseberechtigungen haben, aber keine Berechtigungen für dieses Verzeichnis ausführen, haben Sie genügend Rechte, um die Liste der Dateien in diesem Verzeichnis zu lesen, aber Sie können diese Dateien nicht verwenden oder Informationen darüber abrufen.
Beispielsitzung:
$ 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
$
Einige ls
Versionen zeigen Fehlermeldungen an, wenn sie keine Informationen zu Dateien anzeigen können.
man readdir
für mehr Details auf niedriger Ebene. Beachten Sie, dass dieses Verhalten von POSIX nicht angegeben wird.
test
ob sich die Datei im Verzeichnis befindet oder nicht (überprüfen Sie d char auf '.' Und '..')?