![如何允许用户遍历目录但阻止他们确认任何其他文件/目录的存在](https://linux22.com/image/92115/%E5%A6%82%E4%BD%95%E5%85%81%E8%AE%B8%E7%94%A8%E6%88%B7%E9%81%8D%E5%8E%86%E7%9B%AE%E5%BD%95%E4%BD%86%E9%98%BB%E6%AD%A2%E4%BB%96%E4%BB%AC%E7%A1%AE%E8%AE%A4%E4%BB%BB%E4%BD%95%E5%85%B6%E4%BB%96%E6%96%87%E4%BB%B6%2F%E7%9B%AE%E5%BD%95%E7%9A%84%E5%AD%98%E5%9C%A8.png)
我正在尝试设置一个目录,用户可以在其中遍历目录,但不能证明目录中存在任何内容。我尝试设置权限,使用户具有执行权限,但没有读取权限。不幸的是,返回的错误(“没有这样的文件或目录”或“权限被拒绝”)将确认目录中是否存在给定的项目。
例如,这是我目前看到的:
$ 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
我希望最后一行中的错误消息相同。
如果相关的话,我正在尝试在 MapRFS 上进行设置。它广泛兼容 POSIX。
我已阅读答案如何创建一个看不见的目录,只能通过其绝对路径名访问?,但没有找到解决我的问题的方法。
答案1
如果用户可以列出文件,则不可能隐藏该文件的存在:
$ ls -l permTest/insidedir/doesexist
-rw-r--r-- 1 root root 0 Aug 10 01:55 permTest/insidedir/doesexist
即使两个目录(permTest 和 insidedir)均由 root 拥有并且仅具有以下x
权限:
$ 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