如何允许用户遍历目录但阻止他们确认任何其他文件/目录的存在

如何允许用户遍历目录但阻止他们确认任何其他文件/目录的存在

我正在尝试设置一个目录,用户可以在其中遍历目录,但不能证明目录中存在任何内容。我尝试设置权限,使用户具有执行权限,但没有读取权限。不幸的是,返回的错误(“没有这样的文件或目录”或“权限被拒绝”)将确认目录中是否存在给定的项目。

例如,这是我目前看到的:

$ 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

相关内容