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

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

如果我有一个具有某些限制性权限的根文件夹,比如说 600,如果子文件夹/文件具有 777 权限,那么即使根文件夹具有 600 权限,每个人都能够读取/写入/执行子文件吗?

答案1

确切的规则是:当且仅当您拥有一个目录的执行权限时,您才可以遍历该目录。

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

访问文件的方式很重要。例如,如果您有 执行权限,/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/joeisjoe的主目录,则将joe无法访问系统的其余部分(包括运行/bin/sh需要访问 的 shell 脚本或动态链接的二进制文件/lib,因此您' d 需要更深入地进行实际使用,例如setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib)。

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

答案2

不可以。根文件夹权限限制子文件权限。你可以尝试一下。

$ mkdir rootdir
$ touch ./rootdir/childfile
$ chmod 777 ./rootdir/childfile
$ chmod 600 rootdir
$ cat ./rootdir/childfile

我明白了:

$ cat: ./rootfolder/childfile: permission denied

答案3

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

例如:父目录由组编码器拥有

drwxr-sr-x

子目录

drwxrwsr-x

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

答案4

即使您没有父目录的执行权限,也可以创建硬链接来访问该文件。但这里的问题是你必须在失去父目录的执行权限之前创建硬链接

$ ln foo/bar/test_privs privs_test_checking

相关内容