Product SiteDocumentation Site

9.3. 管理权限

Linux 是一个典型的多用户系统,这就有必要提供许可制度来控制对文件和目录的操作,其中包含了所有的系统资源和设备(在Unix 系统中,任何设备都由文件或目录来表示)。这一原则对所有Unix 系统通用,这里再提醒一下,特别是对一些有趣的相对高级应用。
每个文件和文件夹有三种用户许可类型:
有三种可以相互结合的权限类型:
对于文件操作,很容易理解这些权限:读允许读取内容(包括复制),写允许改变,执行允许运行它(只对程序文件有用)。
A directory is handled differently. Read access gives the right to consult the list of its entries (files and directories), write access allows creating or deleting files, and execute access allows crossing through it (especially to go there with the cd command). Being able to cross through a directory without being able to read it gives permission to access the entries therein that are known by name, but not to find them if you do not know their existence or their exact name.
有三个控制文件许可权限的命令:
有两种方法表示权限。其中,符号表示是最易于理解和记忆的。它使用前述的符号链接。可以通过显示的设置(u/g/o),通过加(+),或者减(-)定义每种用户的权限类型。一个 u=rwx,g+rw,o-r 格式的命令会赋予所有者读,写和执行权限,给所有组添加读写权限,移除其他用户的读权限。其他命令中未通过加或者减列出的权限保持不变。字母 a是指“所有”,涵盖三种类型的用户,因此 a=rx 命令会赋予三种用户相同的权限(读和执行,没有写)。
与权限相关的(八进制)数字表示:4是读,2是写,1是执行。各种权限组合通过代表的数字求和得到。通过把每个值置于端到端序列不同位置关联不同的用户类型(所有者,所有组,其他用户)。
比如, chmod 754 file 会设置如下的权限:所有者读,写和执行(由于7 = 4 + 2 + 1);所有组读和执行(由于 5 = 4 + 1);其他用户只读。 0 意味着没有任何权限;因此 chmod 600 file 允许所有者读写,而其他人没有任何权限。对可执行文件和目录,最常用的权限组合是 755 ,对数据文件是 644
要表示特殊权限,可以根据同样的原则在数字上加入第四个前缀位,位 setuidsetgidsticky 分别对应4,2,和1。chmod 4754 会设置前面描述的 setuid 位权限。
注意使用八进制记法更改权限要求一次更改所有权限;不能用来仅增加新权限,例如给所有组添加读权限,因此必须考虑已有权限再计算对应新的数值。