chmod
是Linux修改文件权限的命令
$chmod [-R] 权限 文件或目录
这里的 -R
为递归操作,即同时修改子目录下所有文件。
权限
由 数字 或 字符 进行表示
1、数字
Linux中文件所属的角色有3个:owner、group、other,它们又各自拥有自己的read、write、execute权限,即共9个基本权限。read、write、execute分别用 r、w、x 来表示,其对应的数字为
r = 4
w = 2
x = 1
将数字进行累加,得到的值就代表了相应的权限
以owner角色为例,假设有文件 test.sh ,owner对文件同时拥有r、w、x3个权限,那么它的权限为 r+w+x => 4+2+1 = 7,这里的 7 就是owner这个角色对文件所拥有的的权限值
同理,假设group角色对文件仅拥有r、w权限,那么它的权限值为r+w => 4+2 = 6;other仅拥有w权限,它的权限值为 x => 1
此时,拼接3个角色所计算出来的权限值,就是文件的权限了。即[owner][group][other] => [7][6][1] = 761,更改文件权限chmod
的语法为
$chmod 761 test.sh
如果某角色对文件没有任何权限,那么其对应的权限值为 0 。以上面例子为基础,我们希望将文件的other角色的权限去除,即不给other角色任何权限。
other角色所拥有的权限值为 0 ,那么更改文件权限的 chmod
语法为
$chmod 760 test.sh
2、字符
以u、g、o分别代表角色owner、group、other,同时以 a 代表all(即同时代表3个角色)。reead、write、execute依然以 r、w、x 代表,此时 chmod
语法为
$chmod u=rwx,g=rwx,o=rwx test.sh
等价于
$chmod a=rwx test.sh
假设owner用户对文件 test.sh 拥有r、w、x权限,group角色拥有r、w权限,other角色拥有r权限,此时 chmod
语法为
$chmod u=rwx,g=rw,o=r test.sh
若此时希望将other角色权限去除,即不给于other角色任何权限,那么命令就变成了
$chmod u=rwx,g=rw test.sh
为了方便单独设置某个角色的某个权限,可以使用 +
、 -
进行操作。 +
为添加权限, -
为去除权限
假设我们需要给group角色去除 w 权限, chmod
的语法为
$chmod g-w test.sh
为other用户添加 r 权限
$chmod o+r test.sh
值得注意的是,a 代表了所有角色,而角色符缺省时,默认为 a ,即
$chmod a+x test.sh
等价于
$chmod +x test.sh