访问子目录时父目录的权限是否重要?

Ken*_* Li 198 permissions directory

如果我有一个具有某些限制权限的根文件夹,比如说 600,如果子文件夹/文件有 777 权限,即使根文件夹有 600,每个人都可以读/写/执行子文件吗?

Gil*_*il' 221

确切的规则是:当且仅当您具有执行权限时,您才能遍历目录。

因此,例如访问dir/subdir/file,您需要对dir和的执行权限dir/subdir,以及file您想要的访问类型的权限。进入极端情况,我不确定您是否需要对当前目录的执行权限才能通过相对路径访问文件(您在 Linux 上这样做)是否普遍。

您访问文件的方式很重要。例如,如果您对 具有执行权限,/foo/bar但没有对/foo,但您的当前目录是/foo/bar,则您可以/foo/bar通过相对路径访问文件,但不能通过绝对路径访问。/foo/bar在这种情况下,您不能更改为;一个更特权的过程大概cd /foo/bar在去特权之前已经完成了。如果一个文件有多个硬链接,您用来访问它的路径决定了您的访问限制。

符号链接没有任何改变。内核使用调用进程的访问权限来遍历它们。例如,如果sym是指向目录的符号链接,则dir需要执行权限dir才能访问sym/foo。符号链接本身的权限可能重要也可能无关紧要,具体取决于操作系统和文件系统(有些尊重它们,有些忽略它们)。

从根目录中删除执行权限有效地将用户限制到目录树的一部分(更高特权的进程必须更改为该部分)。这需要访问控制列表才能使用。例如,如果//home被禁止访问joe( setfacl -m user:joe:0 / /home) 并且/home/joejoe的主目录,那么joe将无法访问系统的其余部分(包括使用/bin/sh需要访问的或动态链接的二进制文件运行 shell 脚本/lib,因此您d 需要更深入的实际使用,例如setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib)。

对目录的读取权限赋予枚举条目的权限。授予执行权限而不授予读取权限有时很有用:条目的名称用作访问它们的密码。我想不出在没有执行权限的情况下为目录授予读或写权限有什么用处。


小智 38

否。根文件夹权限限制子文件权限。你可以试试看。

$ mkdir rootdir
$ touch ./rootdir/childfile
$ chmod 777 ./rootdir/childfile
$ chmod 600 rootdir
$ cat ./rootdir/childfile
Run Code Online (Sandbox Code Playgroud)

我明白了:

$ cat: ./rootfolder/childfile: permission denied
Run Code Online (Sandbox Code Playgroud)


Kem*_*hou 6

即使父目录不是,您也可以使子目录可写。我为团体这样做。

例如:父目录归组编码器所有

drwxr-sr-x
Run Code Online (Sandbox Code Playgroud)

子目录

drwxrwsr-x
Run Code Online (Sandbox Code Playgroud)

您(编码组的任何成员)仍然可以写入子目录,但不能写入父目录。