彻底搞懂Linux中10位含义的文件权限以及修改文件权限
- 1. 前言
- 1.1 创建用户及简单权限问题
- 1.2 抛出文件权限问题
- 2. 第二段(连接数)
- 3. 第三段(所属者) + 第四段(所属组)
- 3.1 介绍Linux中的三种角色
- 3.2 更改文件的 所属组 和 所有者
- 4. 第一段(文件类型位 + 9个权限位)
- 4.1 解释(文件类型位 + 9个权限位)
- 4.1.1 第一位(文件的类型)
- 4.1.2 第2-10位(9个权限位)
- 4.1.2.1 文件的三组权限
- 4.1.2.2 强调可执行权限(X)
- 4.1.2.2 总结文件的三种权限(字母权限与数字权限关系)
- 4.1.2.2.1 理解方式1
- 4.1.2.2.2 理解方式2
- 4.2 文件权限的更改方法
- 4.2.1 文件权限的字符修改方法
- 4.2.1.1 给所有角色修改权限
- 4.2.1.2 指定角色修改权限
- 4.2.1.2.1 用户身份缩写
- 4.2.1.2.2 指定角色修改权限(字符修改方法)
- 4.2.2 文件权限的数字修改方法
- 5. 总结
- 5.1 所属组 和 所有者命令
- 5.2 更改9位权限命令
1. 前言
1.1 创建用户及简单权限问题
- 之前简单提到过创建新用户的权限问题,简单操作可以看下面的文章
linux下新建用户并给用户授权以及解决sudo不能使用问题. - 上面只是简单操作,没有详细介绍权限问题,本次就针对文件权限详细的说一下,请继续……
1.2 抛出文件权限问题
- 如下图:每一段各代表什么意思?文件的读写等权限又是怎么控制的?怎么修改文件的权限?
- 根据上面的图应该猜到本文主要介绍前4段,因为后面几段一看就懂,文件大小了、修改日期了,文件名了等,简单不用解释。
好了,继续吧,先从简单的介绍起,请看……
2. 第二段(连接数)
- 对于文件而言,此时这一字段数字表示这个文件所具有的硬链接数,一般都是1。
- 而对于目录而言,此时这一字段数字表示的是该目录所含子目录的个数。
- 新建空目录,此时一般都是2,表示该目录下有两个子目录。
因为每一个目录都有一个指向它本身的子目录. 和指向它上级目录的子目录…,此默认子目录是隐藏的。如下:
- 新建空目录,此时一般都是2,表示该目录下有两个子目录。
3. 第三段(所属者) + 第四段(所属组)
3.1 介绍Linux中的三种角色
- 说第三段和第三段之前,先知道Linux中的三种角色,分别是:所有者(user)、所属组(group)、其他人(other),权限限制的不是用户,而是这个用户当前所处的角色。
3.2 更改文件的 所属组 和 所有者
- 更改文件所属者,命令如下:
chown -R susu ./aa # 更改所有者
- 更改文件所属组,命令如下:
chgrp -R susu ff.txt # 更改所属组
- 即更改所有者,又更改所属组
chown -R susu.susu bb # 即更改所有者,又更改所属组 或者 chown -R susu:susu bb
- 如下:
4. 第一段(文件类型位 + 9个权限位)
4.1 解释(文件类型位 + 9个权限位)
4.1.1 第一位(文件的类型)
- 第一位字母代表的意义是文件的类型。这里先介绍常用的3种
d:代表目录文件 -:代表普通文件 l:代表软链接文件
4.1.2 第2-10位(9个权限位)
4.1.2.1 文件的三组权限
- 后九位三三为一组,分别代表:所有者权限(u–>user)、所属组权限(g–>group)、其他用户的权限(o–>other)。
- 每组的第一位:
r
代表可读,-
代表不具备该权限; - 每组的第二位:
w
代表可写,-
代表不具备该权限; - 每组的第三位:
x
代表可执行,-
代表不具备该权限;
- 每组的第一位:
- 比如
drwxr-xr-x
,表示的就是文件类型是目录文件,该目录文件的所有者,可读可写可执行,所有组权限不可读,其他用户权限也不可读。如下:
4.1.2.2 强调可执行权限(X)
- 脚本文件的可执行权限表示你是否可执行脚本,目录的可执行权限是表示你可否在目录下执行命令。
- 如果目录没有可执行(x)权限,则无法对目录执行任何命令,甚至无法通过
cd
命令进入目录, 即使目录仍然有读权限(r权限)也不行,脚本文件也是,如下:
- 但是对于脚步,如果没有x权限也要执行的话,可以通过其他方式,比如:
4.1.2.2 总结文件的三种权限(字母权限与数字权限关系)
4.1.2.2.1 理解方式1
- 如果,可读可写可执行用1表示,即:如果可读(有r权限),用1,否则用0(即:- 用0表示),w 和 x 同样道理,即:
- r:1
- w:1
- x:1
- 则,有下表的数字权限:
数字表示 | 二进制表示 | 有的权限 | 描述 |
---|---|---|---|
0 | 000 | --- | 无权限 |
1 | 001 | --x | 只有 X 权限 |
2 | 010 | -w- | 只有 w 权限 |
3 | 011 | -wx | w 和 x |
4 | 100 | r-- | 只有 r 权限 |
5 | 101 | r-x | 读和执行 |
6 | 110 | rw- | 读写 |
7 | 111 | rwx | 读、写、执行 |
- 所以,如下要给一个文件授予:所有者最高权限(7)、所有组的权限读和执行(5)、其他用户无权限(0),则可以使用如下方式,例如:
chmod 750 kk.sh
4.1.2.2.2 理解方式2
- 其实这个是在上面的基础上去理解的,比如:
- 只有 X 权限(可执行):1
- 只有 w 权限(写):2
- 只有 r 权限(读):4
- 所以,如果要得到读写可执行,就是7(7=1+2+4),如果得到读和可执行,就是5(5=1+4),就是如果记住124,其他的可以用加减运算,个人不是很喜欢,即然是在上面的基础上得到的,不如直接用二进制算,又不麻烦,来得还快,不过也是看个人喜欢了。
4.2 文件权限的更改方法
4.2.1 文件权限的字符修改方法
4.2.1.1 给所有角色修改权限
- 其实上面也用过,过于简单,直接看吧,如下:
chmod +x gg chmod -x gg chmod +r gg chmod -r gg chmod +xr gg chmod -xr gg chmod +xwr kk.sh //注意:这里的w对其他用户不起作用,其他用户需要单独处理
4.2.1.2 指定角色修改权限
4.2.1.2.1 用户身份缩写
- 指定角色修改权限的话,首先需要知道用户角色缩写,如下:
-u:代表所有者(user) -g:代表所属组(group) -o:代表其他人(other) -a:代表全部身份(all)
4.2.1.2.2 指定角色修改权限(字符修改方法)
- 如下:
chmod u+r gg //单角色 加 一个权限 chmod u-r gg //单角色 去 一个权限 chmod u+rx gg //单角色 加 多个权限 chmod go+rx gg //多角色 加 多个权限 chmod a+rx kk.sh //既然是a(所有),可以省略 chmod -rx kk.sh //省略a 等等……
4.2.2 文件权限的数字修改方法
- 其实上面字符修改法也不是很麻烦,如果你想用数字也可以,看上面的《4.1.2.2 总结文件的三种权限(字母权限与数字权限关系)》即可,完全解决问题。
5. 总结
5.1 所属组 和 所有者命令
- 如下:
chown -R susu ./aa # 更改所有者 chgrp -R susu ff.txt # 更改所属组 chown -R susu.susu bb # 即更改所有者,又更改所属组 或者 chown -R susu:susu bb
5.2 更改9位权限命令
-
如下
chmod +x gg chmod -x gg chmod +r gg chmod -r gg chmod +xr gg chmod -xr gg chmod +xwr kk.sh //注意:这里的w对其他用户不起作用,其他用户需要单独处理
chmod u+r gg //单角色 加 一个权限 chmod u-r gg //单角色 去 一个权限 chmod u+rx gg //单角色 加 多个权限 chmod go+rx gg //多角色 加 多个权限 chmod a+rx kk.sh //既然是a(所有),可以省略 chmod -rx kk.sh //省略a 等等……
chmod 750 kk.sh