x бит для каталога также называется поисковым битом. На самом деле, он позволяет вам получить доступ к индексам файлов, перечисленных внутри папки. Так что если вы хотите получить доступ к /home/user/foo/bar.txt, то у вас должен быть доступ к поиску для каждого предка bar.txt
Цитирование со страницы
Поскольку каталоги не используются так же, как обычные файлы, разрешения работают немного (но только немного) по-разному. Попытка перечислить файлы в каталоге требует разрешения на чтение для каталога, но не для файлов внутри. Попытка добавить файл в каталог, удалить файл из каталога или переименовать файл - все требует разрешения на запись для каталога, но (что может быть удивительно) не для файлов внутри. Разрешение на выполнение не распространяется на каталоги (каталог также не может быть программой). Но этот бит разрешения повторно используется для каталогов для других целей.
Разрешение на выполнение требуется для каталога, чтобы иметь возможность CD в него (то есть, чтобы сделать некоторый каталог вашим текущим рабочим каталогом).
Выполнение необходимо в каталоге для доступа к информации об индексах файлов внутри. Это необходимо для поиска в каталоге для чтения инодов файлов внутри. По этой причине разрешение на выполнение в каталоге часто называется разрешением поиска.
Разрешение на поиск требуется во многих распространенных ситуациях. Рассмотрим команду cat / home / user / foo. Эта команда явно требует разрешения на чтение для файла foo. Но если у вас нет разрешения на поиск в каталогах /, / home и / home / user, cat не может найти индекс foo и, следовательно, не может его прочитать! Чтобы получить доступ к индексу любого файла (или каталога), вам необходимо разрешение на поиск в каждом каталоге предков, и вы не сможете прочитать файл, если не сможете добраться до его инода.
Пожалуйста, прочитайте больше в разделе каталога прав доступа к файлам.
Обновление: Лео поднял очень хороший вопрос. Если мы знаем индекс, то сможем ли мы получить доступ к файлу из каталога, если его бит x не установлен? Я считаю, что мы не должны быть в состоянии сделать это. Я не тестировал его с помощью программы, а использовал несколько удобных команд 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