在 Linux 系统中,输入 ll 或者 ls -a 命令,会列出全部文件以及各个文件所对应的权限。

该处列出的权限由 10 个字符组成,第一位为 d 表示该项是一个文件,为 - 表示是文件夹

后面的 9 个字符,每 3 个为一组,分别表示文件所有者(user)****用户组(group)其他用户(other)。每一组第一个字符是 r 或 -,用来表示对应用户是否有读权限;第二个字符是 w 或者 -,用来表示对应用户的写入权限;最后一个是执行权限,x 或者 -。

每个权限不仅可以用 rwx 表示,还可以使用一位八进制数或者三位二进制数表示,在使用 二进制表示时,最左边的一位,表示读(r)权限,中间表示写(w)权限,最后表示执行(x)权限。表示权限时,用 1 表示具有该权限,0 表示无对应权限

权限表

由于三位二进制数表示一位八进制数,所以每个 拥有者、用户组、其他用户的权限也就能用 0~7 的八进制数来表示,对应的八进制数,就是二进制数表示的值

例如

1
2
3
$ chmod 664 myfile
$ ls -l myfile
-rw-rw-r--  1   57 Jul  3 10:13  myfile

chmod

chmod的意思时 change mode, 用来改变对应文件的权限,即更改上面的 3 位八进制数字。

用法1

chmod 数字 文件名

例如

1
chmod 664 myfile

这种方法直接给对应文件赋予相应的权限

用法2

chmod 用户 +/-/= 权限名 文件名

这里的用户由u g o a三种选择,分别对应所有者、用户组、其他用户、全部三者。+ - = 分别表示赋予、减少和设定

可以同时选择多个用户,如果要同时对所有者和用户组增加执行权限可以使用ug + r。而 a 就相当于 ugo,也可以省略

如果对不同用户组给予不同权限,可以用逗号隔开,比如 chmod u+r,go-r docs 就是对 u 和 g、o 分别处理权限

举例

1
2
3
chmod a+r file
chmod +rwx file
chmod u=rw,go= file

用法3

参数 -R 放在 chmod 之后,表示对目录的子目录子文件进行相同操作

chown

chown 是 change owner 的缩写,用来修改文件的所有者或所有用户组,只能以 root 身份运行

1
chown [参数] [user][:group] 文件

其中参数,user,group都是可选变量

参数中 -R 表示递归所有子目录子文件