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/c
ativadas 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/b
seja listado, mas você pode acessar os arquivos /a/b
se eles adivinharem um nome de arquivo, você pode tornar o arquivo /a/b
executá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/b
exceto /a/b/c
, poderá expor /a/b/c
por 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