Câu trả lời:
Kiểm tra các quyền của ./directory
: nếu bạn có quyền đọc nhưng không thực thi quyền trên thư mục này, thì bạn có đủ quyền để đọc danh sách các tệp trong thư mục đó, nhưng bạn thực sự không thể sử dụng các tệp này hoặc nhận thông tin về chúng.
phiên ví dụ:
$ 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
$
Một số ls
phiên bản hiển thị thông báo lỗi khi chúng không thể hiển thị thông tin về tệp.
man readdir
để biết thêm chi tiết cấp thấp. Lưu ý rằng hành vi này không được chỉ định bởi POSIX.
test
thư mục hay không (kiểm tra d char cho '.' Và '..')?