我可以在私有目录下创建公共目录吗?

ddz*_*wmm 21 linux shell permissions directory

我在服务器上有一个权限为 700 的个人文件夹 /a/b。我不希望其他人列出 /a/b 中的内容。/a 的所有者是 root。

现在我需要向所有用户打开目录 /a/b/c 的完整权限。

我把/a/b/c的权限改成了777,但是其他人还是无法访问。

ste*_*ieb 37

你可以。您只需要在/a/b目录上设置可执行位。这将阻止能够看到任何内容b,但如果您直接转到a/b/c.

% mkdir -p a/b/c
% chmod 711 a/b
% sudo chown root a/b
% ll a/b
  ls: cannot open directory a/b: Permission denied
% touch a/b/c/this.txt
% ls a/b/c
  this.txt
Run Code Online (Sandbox Code Playgroud)

请注意,虽然其他人无法列出 的内容/a/b,但如果他们猜到了文件名,他们就可以访问该目录中的文件。

% echo hello | sudo tee a/b/f
% cat a/b/f
hello
% cat a/b/doesntexist
cat: a/b/doesntexist: No such file or directory
Run Code Online (Sandbox Code Playgroud)

因此,请确保对目录中的所有其他文件/目录保持适当的权限(无组/世界)b,因为这将避免此警告。

  • 请注意,对此有一些重要的警告。如果“a/b”中的任何文件具有非零组/其他权限,并且攻击者知道或可以猜出它们的名称,则该攻击者可以与这些文件进行交互。 (3认同)
  • @MobyDisk 您不能硬链接到目录。 (2认同)

Joh*_*ohn 9

有了这些权限,您就无法实现目标。为了到达目录c,您必须允许所有其他用户遍历目录b,这是通过授予该目录的执行权限来完成的。随着/a/b设置为模式711,就可以实现你想要的,因为你要授予目录遍历,但是拒绝读取和写入。但请记住,虽然其他用户无法在 中列出文件/a/b,但如果他们猜测名称并且文件具有足够的打开权限,则他们可能会访问文件。