Если для файлов права на чтение и исполнение понятны всем, то директории (каталоги) обычно вызывают больше проблем: что такое запись в каталог — примерно ясно, а вот чтение и исполнение — с этим трудности.
Надо сказать, что в UN*X директории устроены достаточно просто: это файл, в котором содержится список объектов файловой системы и номера их i-узлов (inode). В принципе, каталогу быть именно файлом необязательно, но семантика от этого меняться не должна. Еще хочется добавить, что среди полей структуры, описывающей элемент каталога, могут быть и другие поля (а не только имя и номер i-узла), но они нас сейчас не интересуют.
С директорией связаны две операции:
Мораль такова, если на директории стоит только бит исполнения, то это означает всего лишь невозможность узнать список имен файлов. Но если имя файла, находящегося внутри каталога, известно, то получить доступ к номеру i-узла (а, стало быть, и к информации о файле) — возможно. А если у этого файла выставлены права на чтение, то его можно и прочитать. Поэтому защита, основанная на выставлении только бита исполнения на директории верхнего уровня — глупа. Достаточно часто найдутся обходные пути для узнавания имен некоторых объектов, содержащихся в данной директории.
С другой стороны, если выставлен только бит чтения, то список файлов посмотреть можно, а вот сами файлы (и информацию о них) — нельзя.
Естественно, почти все из сказанного написано в руководствах и учебниках.