A regra precisa é: você pode percorrer um diretório se e somente se tiver permissão de execução.
Por exemplo, para acessar dir/subdir/file , você precisa de permissão de execução em dir e dir/subdir , além das permissões em file para o tipo de acesso desejado. Entrando em casos de canto, não tenho certeza se é universal que você precise executar permissão no diretório atual para acessar um arquivo através de um caminho relativo (você faz no Linux).
A maneira como você acessa um arquivo é importante. Por exemplo, se você tiver permissões de execução em /foo/bar , mas não em /foo , mas seu diretório atual for /foo/bar , será possível acessar arquivos em /foo/bar por meio de um caminho relativo, mas não por um caminho absoluto. Você não pode mudar para /foo/bar neste cenário; um processo mais privilegiado, presumivelmente, fez cd /foo/bar antes de ficar sem privilégios. Se um arquivo tiver vários links físicos, o caminho usado para acessá-lo determinará suas restrições de acesso.
Links simbólicos não mudam nada. O kernel usa os direitos de acesso do processo de chamada para percorrê-los. Por exemplo, se sym for um link simbólico para o diretório dir , você precisará de permissão de execução em dir para acessar sym/foo . As permissões no symlink em si podem ou não importar, dependendo do SO e do sistema de arquivos (alguns os respeitam, alguns os ignoram).
A remoção da permissão de execução do diretório raiz restringe efetivamente um usuário a uma parte da árvore de diretórios (na qual um processo mais privilegiado deve ser alterado). Isso requer listas de controle de acesso para qualquer uso. Por exemplo, se / e /home estiverem fora dos limites para joe ( setfacl -m user:joe:0 / /home ) e /home/joe for joe , o joe não conseguirá acessar o restante do sistema (incluindo a execução de scripts de shell com /bin/sh ou binários vinculados dinamicamente que precisam acessar /lib , então você precisa ir mais fundo para uso prático, por exemplo, setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib ).
A permissão de leitura em um diretório dá o direito de enumerar as entradas. Dar permissão de execução sem permissão de leitura é útil ocasionalmente: os nomes das entradas servem como senhas para acessá-los. Eu não consigo pensar em qualquer uso em dar permissão de leitura ou gravação para um diretório sem permissão de execução.