x біт для каталогу також називається бітом пошуку. Насправді це дозволяє вам отримати доступ до вкладок файлів, перелічених всередині папки. Тож якщо ви хочете отримати доступ до /home/user/foo/bar.txt, ви повинні мати доступ до пошуку для кожного предка bar.txt
Цитування зі сторінки
Оскільки каталоги не використовуються так само, як звичайні файли, дозволи працюють незначно (але лише трохи) по-різному. Для спроби перерахування файлів у каталозі потрібен дозвіл на читання для каталогу, але не для файлів всередині. Спроба додати файл до каталогу, видалити файл із каталогу або перейменувати файл, усі вимагають дозволу на запис для каталогу, але (можливо, на диво) не для файлів всередині. Дозвіл на виконання не поширюється на каталоги (каталог також не може бути програмою). Але цей біт дозволу повторно використовується для каталогів для інших цілей.
Дозвіл на виконання потрібен для каталогу, щоб мати змогу входити в нього (тобто зробити деякий каталог вашою поточною робочою каталогом).
Виконати потрібно в каталозі для доступу до інформації про вкладення файлів всередині. Це потрібно для пошуку в каталозі, щоб прочитати вставки файлів всередині. З цієї причини дозвіл на виконання в каталозі часто називається дозволом пошуку.
Дозвіл на пошук потрібен у багатьох поширених ситуаціях. Розглянемо команду cat / home / user / foo. Ця команда чітко вимагає дозволу читання для файлу foo. Але якщо у вас немає дозволу на пошук у каталогах /, / home та / home / user, кішка не може знайти вкладку foo і, отже, не може її прочитати! Вам потрібен дозвіл на пошук у кожному каталозі предків для доступу до inode будь-якого файлу (або каталогу), і ви не можете прочитати файл, якщо не зможете потрапити до його inode.
Прочитайте докладніше в розділі каталогу дозволів файлів.
Оновлення: Лев поставив дуже гарне запитання. Якщо ми знаємо inode, чи можемо ми отримати доступ до файлу з каталогу, в якому його біт не встановлено? Я вважаю, що ми не повинні цього робити. Я не перевіряв це програмою c, а скористався зручними командами bash, щоб підтвердити це.
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