Product SiteDocumentation Site

9.3. 管理权限

Linux 是一个典型的多用户系统,这就有必要提供许可制度来控制对文件和目录的操作,其中包含了所有的系统资源和设备(在Unix 系统中,任何设备都由文件或目录来表示)。这一原则对所有Unix 系统通用,这里再提醒一下,特别是对一些有趣的相对高级应用。
每个文件和文件夹有三种用户许可类型:
有三种可以相互结合的权限类型:
In the case of a file, these rights are easily understood: read access allows reading the content (including copying), write access allows changing it, and execute access allows you to run it (which will only work if it is a program).
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 位权限。
Note that the use of octal notation only allows to set all the rights at once on a file; you cannot use it to simply add a new right, such as read access for the group owner, since you must take into account the existing rights and compute the new corresponding numerical value.