目录
[权限 = 用户(角色)+ 文件权限属性](#权限 = 用户(角色)+ 文件权限属性)
[umask 过滤:](#umask 过滤:)
++以下指令均在Xshell 7 中进行++
++权限 = 用户(角色)+ 文件权限属性++
文件的权限属性:
一个文件可以拥有三个权限:
- 是否具有可以读的权限
- 是否具有可以写的权限
- 是否具有可以执行的权限
这三种权限分别对应字符 r 、w、x ,当具有可读权限的时候会显示字符r,当具有可写权限时会显示字符w,当具有可执行权限时会显示x。
- 而如上图所示,其中的 - rw - rw- r-- 除去最前面的-表示为文件的类型是普通文件外,其余的九个字符三个三个为一组分为三组,这三组分别对应着拥有者,所属组,other。
其可以表示为拥有者有着对本文件的权限,所属组对本文件的权限,other对本文件的权限。
又而最后的表示为,拥有者对文件的权限是可以读、可以写、不可以执行,所属组对文件的权限是可以读、可以写、不可以执行,other对文件的权限是可以读、不可写、不可以执行。
这些权限可以认定为 文件对不同的用户 而开放的不同权限。
当然这些权限是可以修改的,使用chmod进行对应角色的权限修改:
删去 拥有者 的 可读权限
添加 拥有者 的可读权限和可写权限
删去 所属组 的 可写权限
删去 other 的 可读权限
修改 多个 用户的权限
同时添加 拥有者 所属组 other 的可读权限
有无权限的区别:
对于普通用户:没有 r 权限 就不能查看文件的内容,没有w权限就不能再文件中写入内容。
这是普通文件给予自己的一种束缚,即便文件的创始者是自己,但是对于超级用户root而言可以无视这些束缚。
身份匹配:
当文件的拥有者和所属组是同一个时,这就会产生一共疑问,我是拥有者,但拥有者没有这些权限,但我也是所属组,所属组有这些权限,但为什么还是不能使用这些权限呢?
答:
- 这涉及到linux的身份识别问题,linux对用户的身份识别只识别一次, 也就说第一个身份识别失败后会开始识别第二次,当识别成功后就不会往后继续识别身份。
- 例如匹配完拥有者成功后,就不继续匹配是否是所属组了,当识别不是拥有者不是所属组之后就认定为other
拥有者、所属组的修改:
- chown 用户名 文件 修改文件的拥有者
- chgrp 用户名 文件 修改文件的所属组
- chown 用户名1:用户名2 文件 修改文件的拥有者和所属组
修改拥有者
同时修改拥有者和所属组
八进制的转化:
三个三个一组的读、写、可执行字符可以因为是否存在权限 而转化为数字,如果存在权限则为1没有权限则为0。
如图所示,可以通过权限的存在与否转化为一串二进制代码 110 110 100 而二进制数位又可以因为三个一组 转化为八进制数位 6 6 4
所以,修改文件的拥有者、所属组、other 的权限 也可以这样写:
0 0 0 是八进制数位,可以表示拥有者 、所属组、other 没有任何的权限。
7 7 7 则是表示拥有者、所属组、other 同时有着 r、w、x三个权限。
文件的类型:
Linux内部的文件,它的类型并不是看文件的后缀名,而是查看文件信息的最前端的字符,如果是字符 - 则表示这是一个普通文件,如果是字符 d 则表示的是目录文件。
当然,linux内部的文件是不看文件的后缀,但是linux的工具却需要认定Linux文件的后缀,才能够根据文件的类型进行执行相应的进程
x可执行权限为什么不能执行?
当然,linux文件的后缀不论是什么,只要这个文件本身是能够可以执行的文件 ,才可以执行,即便这个文件的拥有者、所属组、甚至是other 都具有可以执行文件的权限,但文件本身不能执行,那么这个权限也毫无用处。
目录权限:
目录本身也是一个文件,所以它也有着拥有者、所属组、other ,而拥有者、所属组、other也有着对目录的权限。
对于目录而言,r权限是查看目录内部的文件,用户失去了r则看不了目录内部的文件。
而 w权限是再目录内部进行文件的删除、修改、建立,失去了w权限就不能再目录内部建立文件和删除文件。
而 x 权限则是进入目录的一个必要条件,如果用户没有对目录的x权限,则当前用户是进入不了目录内部的。