Linux权限
什么是权限?
权限即一个用户针对某个文件或文件夹的权限。

权限分类
权限可分为3类,r(只读)、w(可写)、x(可执行),如果显示 - 表示无对应权限。
[root@localhost ~]# ll / # 查看文件权限信息
首列显示的即此文件或文件夹的权限,

权限位
根据上面的观察,这里我们引入权限位的概念,以根目录下/etc目录为例:
drwxr-xr-x其中d代表的是文件类型,剩下的便是rwxr-xr-x,我们分成三个部分rwx,r-x,r-x。其中第一部分代表所属用户权限,即所属用户对此文件的操作权限是可读可写可执行;第二部分代表所属用户组权限,即用户组对此文件操作权限是可读可执行;第三部分代表其他用户对此文件的权限,即可读可执行。
理解图如下,

权限数字编号
每个权限都拥有一个数字,
- r(可读) 4
- w(可写) 2
- x(可执行) 1
- -(无对应权限) 0
因此权限也可以使用数字代表,换算规则即每部分权限数值相加即可,如rwxr-xr-x等价于 755。
权限命令
权限命令格式:chmod [参数] [权限表达式] [操作对象]

-
-R : 递归增加权限
此例子中我们递归创建文件夹a、b,并在/tmp/a/b/目录下创建文件1.txt,各个文件权限并不相同![image]()
![image]()
权限表达式不只数字一种形式。我们可以通过chmod [参数] [(u|g|o) (+|-) (r|w|x)] [操作对象]格式增加删除权限,而且之前的方式可能会给操作对象改错权限,倘若我们只想将操作对象中的其他人权限中的可写权限删除,那么如下:

PS: u代表属主, g代表属组, o代表其他人,+是添加权限, -是删除权限。
权限对于用户的意义
/tmp/a/b/test.txt文件对于其他人是无任何权限的,登录的lin用户查看文件显示无权限。


修改test.txt文件属主和属组的权限,再通过root用户访问,

发现仍然能够使用,那么权限对于root用户来说是不屑一顾的(起不到作用)。
总结
- 普通用户是严格遵守权限的
- root用户是高于权限的
权限对于目录的意义
我们在/tmp目录下创建/a/b目录,在/b目录下创建文件test.txt,并修改/a和/a/b目录权限为000(无任何权限),test.txt权限为444(可读)。

我们通过lin用户查看test.txt文件时显示无权访问,

给/a和/a/b目录设置444(可读)权限,仍然是无法访问;继续给/a和/a/b目录设置222(可写)权限,仍然是无法访问;继续给/a和/a/b目录设置666(可读可写)权限,仍然是无法访问;继续给/a和/a/b目录设置111(可执行)权限,此时可以访问test.txt文件。


那么,目录下的文件可读,目录的最低要求必须有可执行权限。
对于目录下的可写文件,和可读文件相同,所以这里不再附图而直接下结论。
目录下的文件可写,目录的最低要求必须有可执行权限。
限于篇幅,这里直接说,目录下的文件可执行,目录及其文件的最低要求必须有可读可执行权限。



结论
- 目录下的文件可读,目录的最低要求必须有可执行权限
- 目录下的文件可写,目录的最低要求必须有可执行权限
- 目录下的文件可执行,目录及其文件的最低要求必须有可读可执行权限
文件的默认权限
我们执行命令创建文件夹及文件时默认便有权限,那么这些权限是谁帮我们处理了?
在linux中,常用文件权限是666,目录权限是777。创建目录及文件即与umask值计算得到默认权限。
- 文件的权限是跟 umask 值相减,遇到奇数加一;遇到偶数则不变。
- 文件夹的权限只要跟 umask 值相减即可。
那么 umask 值又是从何而来呢?我们cat /etc/profile,

从上图环境变量配置文件中可以解读到,如果用户ID大于199并且当前登录用户的用户组ID等于当前登录用户ID,那么umask值是002,否则是022。
尝试使用root用户创建文件及目录,此时umask值为022,文件权限是644,目录权限是755。

尝试使用普通用户创建文件及目录,此时umask值为002,文件权限是664,目录权限是775。




浙公网安备 33010602011771号