x bit cho thư mục cũng được gọi là bit tìm kiếm. Trên thực tế, nó cho phép bạn truy cập vào các nút của các tệp được liệt kê trong thư mục. Vì vậy, nếu bạn muốn truy cập /home/user/foo/bar.txt thì bạn phải có quyền truy cập tìm kiếm trên mọi tổ tiên của bar.txt
Trích dẫn từ trang
Vì các thư mục không được sử dụng giống như các tệp thông thường, các quyền hoạt động hơi (nhưng chỉ một chút) khác nhau. Một nỗ lực để liệt kê các tệp trong một thư mục yêu cầu quyền đọc cho thư mục, nhưng không phải trên các tệp trong đó. Một nỗ lực để thêm một tập tin vào một thư mục, xóa một tập tin từ một thư mục hoặc để đổi tên một tập tin, tất cả đều yêu cầu quyền ghi cho thư mục, nhưng (có lẽ đáng ngạc nhiên) không cho các tập tin trong. Thực thi quyền không áp dụng cho các thư mục (một thư mục cũng không thể là một chương trình). Nhưng bit quyền đó được sử dụng lại cho các thư mục cho các mục đích khác.
Thực thi quyền là cần thiết trên một thư mục để có thể cd vào nó (nghĩa là để làm cho một số thư mục thư mục làm việc hiện tại của bạn).
Thực thi là cần thiết trên một thư mục để truy cập thông tin inode của các tập tin trong. Bạn cần điều này để tìm kiếm một thư mục để đọc các nút của các tệp trong đó. Vì lý do này, quyền thực thi trên một thư mục thường được gọi là quyền tìm kiếm thay thế.
Sự cho phép tìm kiếm là cần thiết trong nhiều tình huống phổ biến. Hãy xem xét lệnh cat / home / user / foo. Lệnh này rõ ràng yêu cầu quyền đọc cho tệp foo. Nhưng trừ khi bạn có quyền tìm kiếm trên các thư mục /, / home và / home / user, mèo không thể xác định vị trí inode của foo và do đó không thể đọc được! Bạn cần có quyền tìm kiếm trên mọi thư mục tổ tiên để truy cập vào nút của bất kỳ tệp (hoặc thư mục) nào và bạn không thể đọc tệp trừ khi bạn có thể truy cập vào nút của nó.
Xin vui lòng đọc thêm tại phần thư mục quyền.
Cập nhật: Leo đưa ra một câu hỏi rất hay. Nếu chúng ta biết inode thì chúng ta có thể truy cập một tệp từ một thư mục có x bit không được đặt không? Tôi tin rằng, chúng ta không thể làm như vậy. Tôi đã không kiểm tra nó bằng chương trình c mà chỉ sử dụng một số lệnh bash tiện dụng để xác nhận nó.
user@user-desktop:~/test$ ls -lart
total 12
drwxr-xr-x 49 user user 4096 2011-11-30 22:37 ..
drwxr-xr-x 3 user user 4096 2011-11-30 22:37 .
drwxr-xr-x 2 user user 4096 2011-11-30 22:38 level1
user@user-desktop:~/test$ ls -lart level1/
total 12
drwxr-xr-x 3 user user 4096 2011-11-30 22:37 ..
drwxr-xr-x 2 user user 4096 2011-11-30 22:38 .
-rw-r--r-- 1 user user 8 2011-11-30 22:38 file1
user@user-desktop:~/test$ stat level1
File: `level1'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 808h/2056d Inode: 95494 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2011-11-30 22:46:16.576702105 +0530
Modify: 2011-11-30 22:38:12.386701913 +0530
Change: 2011-11-30 22:46:08.876702102 +0530
user@user-desktop:~/test$ stat level1/file1
File: `level1/file1'
Size: 8 Blocks: 8 IO Block: 4096 regular file
Device: 808h/2056d Inode: 60775 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2011-11-30 22:38:19.846701917 +0530
Modify: 2011-11-30 22:38:16.366701915 +0530
Change: 2011-11-30 22:38:16.366701915 +0530
user@user-desktop:~/test$ chmod -x level1
user@user-desktop:~/test$ stat level1/file1
stat: cannot stat `level1/file1': Permission denied
user@user-desktop:~/test$ ls -lart level1/
ls: cannot access level1/..: Permission denied
ls: cannot access level1/.: Permission denied
ls: cannot access level1/file1: Permission denied
total 0
-????????? ? ? ? ? ? file1
d????????? ? ? ? ? ? ..
d????????? ? ? ? ? ? .
user@user-desktop:~/test$ cat level1/file1
cat: level1/file1: Permission denied
user@user-desktop:~/test$ find . -inum 95494
./level1
user@user-desktop:~/test$ find . -inum 60775
user@user-desktop:~/test$ find ./level -inum 60775
find: `./level': No such file or directory
user@user-desktop:~/test$ find ./level1 -inum 60775