一、文件权限的组成
Linux文件权限由身份和文件属性组成。其中身份包括:拥有者(owner)、所属组(grouper)、其他人(other);文件属性包括:r(可读)、w(可写)、x(可执行)。下面我们创建一个目录文件dir来观察分析文件的权限。
![](https://img-blog.csdnimg.cn/47913ae3bcb04a3c9d955d6fd1700dde.png)
右边标注的部分,第一个mzx代表拥有者,第二个mzx代表所属组;左边标注的部分第一个d代表该文件为目录文件,紧接着两个rwx分别代表拥有者和所属组对该文件的权限为可读可写可执行,剩下的r-x代表其他人对该文件的权限为只读不写可执行。该文件权限的对应关系如下表所示。
拥有者(mzx) | 所属组(mzx) | 其他人(other) |
---|---|---|
rwx 可读可写可执行 | rwx 只读可写可执行 | r-x 只读不写不可执行 |
二、如何操作权限
1.修改文件所属身份
利用chown/chgrp命令可以分别修改文件的拥有者和所属组,以上面创建的目录文件为例,对dir文件的所属身份进行修改。
![](https://img-blog.csdnimg.cn/a1de8735ca7344f1a45b9798a514f45a.png)
可以看出,经过chown/chgrp命令操作后,dir文件的拥有者和所属组由mzx转变为root,mzx用户对于dir文件而言已经变为其他人(other)身份。other身份对dir文件没有写权限,因此不能更改dir目录下的内容,如下图所示。
![](https://img-blog.csdnimg.cn/c9bf0a7fdfd348d68d4b7d4cb8d1f507.png)
2.修改文件属性
利用chmod命令可以设置文件属性,即修改文件对于拥有者、所属组、其他人的权限。还是接着上面的例子,对dir文件的属性进行修改。
![](https://img-blog.csdnimg.cn/a72ee0b515ff4b8ebbf47c5618838d6f.png)
可以看出,经过chmod命令操作后,dir文件对于other身份增加了写权限,因此我们现在可以在mzx用户下更改dir目录下的内容了,如下图所示。
![](https://img-blog.csdnimg.cn/fa209a22bea84b0a9cb11fbb2c2c0fac.png)
三、权限掩码
为什么我们创建好文件后,默认权限是我们所看到的样子?这是由Linux规定的起始权限和权限掩码(umask)造成的。不同类型的文件有不同的起始权限,而权限掩码系统配置好了默认值,凡是在umask中出现的权限都必须在起始权限中去掉。下表是目录文件和普通文件的起始权限及最终权限的对应关系。
文件类型 | 起始权限 | 最终权限 |
---|---|---|
目录文件 | 777(rwxrwxrwx) | 775(rwxrwxr-x) |
普通文件 | 666(rw-rw-rw-) | 664(rw-rw-r--) |
权限掩码(umask) 002 |
默认的权限掩码为002,转换为二进制为000(owner) 000(grouper) 010(other),可以看出系统一开始就打算将所有类型文件对于other身份的写权限去掉,因此目录文件的最终权限变为rwxrwxr-x,普通文件的最终权限变为rw-rw-r--。得出结论:最终权限等于起始权限按位与上按位取反后的权限掩码,即最终权限=起始权限&(~权限掩码)。
以上就是Linux基本权限的介绍,其中还有许多细节没有提到,比如修改文件所属身份以及文件属性的命令可以有多种使用方法,这些细节需要在后续的学习中慢慢体会。