Se um usuário não puder acessar /a/b, ele não poderá acessar nenhum arquivo abaixo /a/b/c. As permissões /a/b/cativadas são irrelevantes, pois o percurso do diretório para em /a/b.
Se tudo o que você deseja é impedir que o diretório /a/bseja listado, mas você pode acessar os arquivos /a/bse eles adivinharem um nome de arquivo, você pode tornar o arquivo /a/bexecutável, mas não legível. Em um diretório, a permissão de leitura controla apenas a listagem do conteúdo do diretório, enquanto a permissão de execução controla o acesso às entradas desse diretório.
# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# echo 'hello' >/a/b/existingfile
# su bob -c 'ls -l /a/b'
ls: /a/b: Permission denied
# su bob -c 'cat /a/b/nosuchfile'
cat: /a/b/nosuchfile: No such file or directory
# su bob -c 'cat /a/b/existingfile'
hello
# su bob -c 'ls -l /a/b/c'
… contents of /a/b/c …
Se você não quiser que outros usuários possam acessar arquivos, /a/bexceto /a/b/c, poderá expor /a/b/cpor outra visualização, por meio de uma montagem de ligação .
# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# mkdir /c
# mount --bind /a/b/c /c
# su bob -c 'ls /a/b/c'
ls: /a/b/c: Permission denied
# su bob -c 'ls -l /c'
… contents of /a/b/c …
chmod +x /a/b