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