Если пользователь не может получить доступ /a/b, он не может получить доступ к любому файлу в /a/b/c. Права доступа не /a/b/cимеют значения, поскольку обратный путь в каталогах останавливается на /a/b.
Если все, что вам нужно, это запретить указание каталога в /a/bсписке, но у вас все в порядке с доступом к файлам, /a/bесли они угадывают имя файла, тогда вы можете сделать /a/bисполняемый файл, но не читаемый. В каталоге разрешение на чтение контролирует только список содержимого каталога, а разрешение на выполнение контролирует доступ к записям этого каталога.
# 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 …
Если вы не хотите, чтобы другие пользователи могли получать доступ к файлам, /a/bкроме /a/b/c, вы можете открыть доступ /a/b/cчерез другое представление, через bind mount .
# 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