O bit x do diretório também é chamado de bit de pesquisa. Na verdade, ele permite acessar os inodes dos arquivos listados dentro da pasta. Portanto, se você deseja acessar /home/user/foo/bar.txt, deve ter acesso de pesquisa em todos os ancestrais de bar.txt
Citando a partir da página
Como os diretórios não são usados da mesma maneira que os arquivos comuns, as permissões funcionam de maneira um pouco (mas apenas um pouco) diferente. Uma tentativa de listar os arquivos em um diretório requer permissão de leitura para o diretório, mas não nos arquivos. Uma tentativa de adicionar um arquivo a um diretório, excluir um arquivo de um diretório ou renomear um arquivo exige uma permissão de gravação para o diretório, mas (talvez surpreendentemente) não para os arquivos contidos nele. A permissão de execução não se aplica aos diretórios (um diretório também não pode ser um programa). Mas esse bit de permissão é reutilizado para diretórios para outros fins.
A permissão de execução é necessária em um diretório para poder entrar nele (ou seja, tornar algum diretório seu diretório de trabalho atual).
A execução é necessária em um diretório para acessar as informações do inode dos arquivos contidos. Você precisa disso para procurar um diretório para ler os inodes dos arquivos. Por esse motivo, a permissão de execução em um diretório geralmente é chamada de permissão de pesquisa.
A permissão de pesquisa é necessária em muitas situações comuns. Considere o comando cat / home / user / foo. Este comando claramente requer permissão de leitura para o arquivo foo. Mas, a menos que você tenha permissão de pesquisa nos diretórios /, / home e / home / user, o gato não pode localizar o inode do foo e, portanto, não pode lê-lo! Você precisa de permissão de pesquisa em cada diretório ancestral para acessar o inode de qualquer arquivo (ou diretório) e não pode ler um arquivo a menos que possa acessá-lo.
Leia mais na seção do diretório de permissão de arquivo.
Atualização: Leo levantou uma pergunta muito boa. Se conhecemos o inode, podemos acessar um arquivo a partir de um diretório com o bit x desabilitado? Eu acredito que não devemos ser capazes de fazê-lo. Eu não o testei pelo programa c, mas usei alguns comandos úteis do bash para confirmá-lo.
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