Como posso permitir que um usuário atravesse um diretório, mas os impeça de confirmar a existência de outros arquivos / diretórios?

2

Eu estou tentando configurar um diretório onde um usuário pode atravessar um diretório, mas não provar a existência de qualquer coisa no diretório. Eu tentei definir permissões de modo que o usuário tenha permissões de execução, mas não de leitura. Infelizmente, o erro retornado ("Nenhum arquivo ou diretório" ou "Permissão negada") confirmará se um determinado item existe no diretório.

Por exemplo, aqui está o que vejo atualmente:

$ sudo ls -l permTest/
total 4
drwxr-x--- 2 root root 4096 Aug 10 12:35 exists
$ ls -ld permTest
drwxr-x--x 3 root root 4096 Aug 10 12:35 permTest/
$ ls permTest
ls: cannot open directory 'permTest': Permission denied
$ ls permTest/doesnotexist
ls: cannot access 'permTest/doesnotexist': No such file or directory
$ ls permTest/exists
ls: cannot open directory 'permTest/exists': Permission denied

Gostaria que as mensagens de erro na linha final fossem idênticas.

Estou tentando configurar isso no MapRFS, se isso for relevante. É amplamente compatível com POSIX.

Li as respostas em Como alguém cria um diretório que não pode ser visto e só pode ser acessado através do seu nome de caminho absoluto? , mas não encontrou uma solução para o meu problema.

    
por Matthew Sharp 10.08.2016 / 04:48

1 resposta

2

Não é possível ocultar a existência de um arquivo se o usuário puder listá-lo:

$ ls -l permTest/insidedir/doesexist
-rw-r--r-- 1 root root 0 Aug 10 01:55 permTest/insidedir/doesexist

mesmo que os dois diretórios (permTest e insidedir) sejam de propriedade root e tenham apenas x de permissões:

$ sudo ls -la permTest/insidedir/
total 8
d--x--x--x 2 root root 4096 Aug 10 01:55 .
d--x--x--x 3 root root 4096 Aug 10 01:54 ..
-rw-r--r-- 1 root root    0 Aug 10 01:55 doesexist


$ ls -la permTest/
ls: cannot open directory permTest/: Permission denied

$ ls -la permTest/insidedir/
ls: cannot open directory permTest/insidedir/: Permission denied
    
por 10.08.2016 / 08:04