如果我 chmod 700 用户的主目录(在 Linux 上),这是否可以保证其他非特权用户无法访问该主目录下的任何子目录或文件?还是有偷偷摸摸的例外情况?
具体来说,如果我有一个目录 /home/foo,其值为 700,并且它有一个子目录“bar”,其值为 777,那么系统上的任何其他用户都可以读取 bar 吗?还是说它肯定不可读?
答案1
是的。为了让其他用户遍历任何子目录,它需要读取基目录。如果它没有权限(即:700),它将无法读取其中的任何内容。还要确保基目录 (/home/foo) 归用户 foo 所有。用户 bar 不应能够访问它。
答案2
目录中拥有 700 个权限只是朝着正确方向迈出的第一步。
如果 /home/foo 是 700 而 /home/foo/bar 是 777,任何人只要知道 bar 在那里,仍然可以写入 bar,因为他们没有浏览 /home/foo 的权限。这就是为什么有时您可能需要执行 chmod -R o-rwx /home/foo。此外,为了防止将来出现问题,请根据需要将 umask 设置为更严格的值,例如 077 或 027。
此外,您必须确保 /home/foo/ 中的所有文件都归您想要的用户所有(在本例中可能是名为 foo 的用户)。如果其中的文件归其他人所有,则 700 将保护该文件所有者对该文件的访问权限,而不是保护其所在目录的所有者对该文件的访问权限。