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)的成员才可能有权限,视他们原来被设定的权限而定。