假设我有一个目录,除了 root 之外,其他人都无权访问。我能保证除了 root 之外,其他人都无权访问目录中的所有内容吗?换句话说,文件权限是否是分层的,这样如果用户无法访问某个目录,他们就无法访问其中的任何内容,即使他们有权访问目录中的某些内容?
答案1
答案主要是“是的”,在特殊情况下可以“不”。
因为 unix 文件不能保证具有唯一路径。所以如果你有
$ ls -l
drwx------- 1 root root [...] root_only
和
$ ls -l root_only
-rw-rw-rw-- 2 root root [...] hopefully_private_file
并且hopefully_private_file
与其他地方有硬链接可能具有普遍可读性。
你怎么知道?再看看那个ls -l
:
$ ls -l root_only
-rw-rw-rw-- 2 root root [...] hopefully_private_file
^
|
箭头上方的数字是链接数(对于文件,它对于目录有不同的含义)。如果链接数为 1,则表示安全;如果是其他数字,则可能有问题。
答案2
要显示目录中的某些内容,dir/
您需要获得+x
能够定位文件 inode 的权限。因此,如果您没有 +x,即使文件是 ,您也无法读取它777
。
答案3
没错,删除父目录的权限会影响该目录内任何内容的操作能力。
如果用户没有目录的执行权限,他们将无法查看目录中的任何文件。
您可能还想删除该目录的读取权限,这样他们就无法看到该目录的内容(文件名)。