u, g, o, 和 a是用来设置或查看文件或目录权限在类Unix或Linux系统中的特殊字符,它们分别代表文件或目录的所有者(user)、所属组(group)、其他用户(others)和所有用户(all users)。
而权限方r和w是其中的两种,分别代表读权限(read)和写权限(write)。除此之外还有执行权限 x:
r(read): 读权限,允许读取文件内容或目录内容列表。读权限(r)的数字值是4 。w(write): 写权限,允许修改文件或目录内容。写权限(w)的数字值是2 。x(execute): 执行权限,允许执行文件或进入目录。执行权限(x)的数字值是1 。
下面是一些使用这些权限字符的命令示例:
给文件所有者增加执行权限:
bash
chmod u+x filename
所有者和所属组增加读和写权限:
bash
chmod ug+rw filename
撤销其他用户的所有权限:
bash
chmod o-rwx filename
给所有用户增加读权限:
bash
chmod a+r filename
给所属组设置读和执行权限(移除写权限):
bash
chmod g=rx filename
同时设置所有者和所属组的执行权限,其他用户无任何权限:
bash
chmod ug+x,o= filename
给所有用户设置所有权限(读、写、执行):
bash
chmod a+rwx filename
细讲:chmod ug+x,o= filename 这个 o= 是什么意思?
在chmod 命令中,o= 意味着为 其他用户(others) 设置的权限将被清空。也就是说,不会为其他用户(不是文件所有者,也不是文件所属组的成员的用户)授予任何权限。
chmod ug+x,o= filename 这个命令的含义是:
ug+x:对于文件(或目录)的 所有者(user) 和 所属组(group) 添加执行(x)权限。o=:移除其他用户(o,即除了所有者和所属组之外的用户)的所有权限,如果其他用户之前有任何读(r)、写(w)或执行(x)权限,这些都会被移除。
执行这个命令后,文件所有者和所属组成员将可以执行这个文件,而其他用户则没有任何权限(无法读取、写入或执行)。
细讲:chmod o-rwx filename 和 chmod o= filename 是否是一样的?
是的一样的,chmod o-rwx filename 和 chmod o= filename 都是用于移除对文件或目录的**其他用户(others)**的所有权限,即读(r)、写(w)和执行(x)权限。两者的效果是相同的:
chmod o-rwx filename:显式地移除其他用户的读(r)、写(w)和执行(x)权限。chmod o= filename:设置其他用户的权限为空,这意味着删除所有设置的权限,结果同样是没有任何读(r)、写(w)和执行(x)权限。
执行这两个命令之后,文件将不再对"其他用户"开放任何权限,只有文件所有者(u)和所属组(g)的成员才可能有权限,视他们原来被设定的权限而定。