Linux chmod
(英文全拼:change mode) 命令是控制用户对文件的权限的命令。
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
在学习文件权限修改之前先补充两个知识点:
- 我们可以使用
whoami
命令查看当前登录用户:
- 可以使用
ls -l
命令查看文件的权限:
文件权限的修改主要使用 chmod
命令,并且分为文字设定法与数字设定法。
文字设定法
其语法规则如下:
chmod [who][+|-|=][mode]
这里的 who
有四个选项:
- 文件所有者:
u
- 文件所属组:
g
- 其他人:
o
- 所有人:
a
这里的 +|-|=
为如下的含义:
+
:添加权限-
:减少权限=
:覆盖原来的权限
这里的 mode
有如下的含义:
r
:读w
:写x
:执行
下面以几个例子进行说明:
1. 给hello.c的其他人增加写权限
2.让所有人对hello.c只有读权限
数字设定法
chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。
例如, 765
将这样解释:
- 所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如
rwx
,也就是 4+2+1 ,应该是 7。 - 用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如
rw-
,也就是 4+2+0 ,应该是 6。 - 其它用户的权限数字表达:其它用户权限位的数字相加的总和。如
r-x
,也就是 4+0+1 ,应该是 5。
下面以几个例子进行说明:
让hello.c文件的所有者拥有所有权限,用户组以及其他用户只有读和执行文件
让hello.c文件的其他用户失去执行权限
这里需要注意的是目录需要有执行权限,如果没有执行权限则无法进入目录。