Mr.*_*ama 5 permissions chmod files
我知道对于 Unix 文件权限,有“用户”、“组”和“世界”八位字节。为便于讨论,我们假设 setuid/sticky 位不存在。
考虑以下示例:
$ echo "Hello World" > strange
$ chmod 604 strange
$ ls -l strange
-rw----r-- 1 mrllama foo 12 Apr 13 15:59 strange
Run Code Online (Sandbox Code Playgroud)
假设有另一个用户john
,他是我组的成员foo
。
foo
组中,因此使用“组”八位字节的权限)?奖金问题:
642
?约翰只能读,只能写,还是两者兼而有之? 604
?在使用 Unix 风格的权限确定访问权限时,将当前用户与文件的所有者、组进行比较,应用的权限是第一个匹配的组件的权限。因此文件的所有者拥有所有者的权限(并且只有这些),文件组的成员拥有组的权限(并且只有那些),其他所有人都拥有“其他用户”的权限。
因此:
642
,约翰就可以读取文件。604
:这允许排除该组,这在某些情况下可能很方便 - 我在带有students
组的学术系统中看到过它,在那里工作人员可以创建除学生以外的任何人都可以访问的文件。root
无论文件上定义的权限如何,都可以访问所有内容。
对于更复杂的访问控制,您应该查看SELinux和POSIX ACL。(特别是 SELinux 甚至可以限制可以root
访问的内容。)