Unix/Linux文件类型与权限管理

 在小白与计算机的日常中,经常会碰到文件无(读、写、执行)权限,包括很多刚入门的程序员,也常常在别人的博客里会看到类似

777 XX.file```、```chmod u+x XX.file```、```chmod g-w XX.file```这些不明觉厉的命令,今天来帮还不清楚的童鞋科普一下,电脑中每个文件的权限 系统究竟是如何管理的,又如何修改文件的权限。
1
2
### 看懂文件类型与权限等信息
 先不慌,打开终端,在任意非空目录下我们输入:

ls -l

1
2
3
4
5
6
7
8
9
10
11
终端会输出该目录下所有文件的信息:
![](https://user-gold-cdn.xitu.io/2019/1/23/16878e2679f7e8f8?w=1210&h=174&f=png&s=49942)
好,我们来对每一列是什么分别介绍:
1. -r-xr-xr-x:文件类型及权限信息
我们会发现任意一个文件第一列都是一个由 - d l p s b c D r w x + @ 这些字符组成的字符串,这一串字符究竟是由哪几部分组成又分别代表什么呢?
* 第一位字符:文件类型信息,-代表这是一个常规文件--Regular file,d代表这是一个文件夹--Directory,l代表文件链接--Symbolic link,更多文件类型(p-Named pipe、s-Socket、b/c-Device file、D-Door)请参考[Unix file types]((https://en.wikipedia.org/wiki/Unix_file_types))
* 第2-10位,这九位字符每三个为一组,每组的三个字符分别代表读(r)、写(w)、执行(x)权限,三组分别代表不同所有者对该文件的权限,第一组:文件所有者的权限、第二组:这一组其他用户的权限、第三组:非本组用户的权限,总结如下图:
![](https://user-gold-cdn.xitu.io/2019/1/23/16878dd01879f1d6?w=2142&h=796&f=png&s=455829)
* 在MacOS系统中,输入```ls -l``` 发现文件权限格式与Linux稍有不同,部分文件权限信息的末尾有”+“或”@“符号:
![](https://user-gold-cdn.xitu.io/2019/1/23/16878df88b3644fa?w=1110&h=266&f=png&s=70168)
我们直接看官方说明:终端输入```man ls```,我们可以看到这一段说明:

If the file or directory has extended attributes, the permissions 
field printed by the -l option is followed by a '@' character.  
Otherwise, if the file or directory has extended security 
information (such as an access control list), the permissions 
field printed by the -l option is followed by a '+' character.

那什么是“extended security”呢?其实就是扩展安全信息 执行ls -le查看extended security: ![](https://user-gold-cdn.xitu.io/2019/1/23/16879719bf49f408?w=1506&h=380&f=png&s=91760) 你会发现权限末尾有'+'的都会有0: group:everyone deny delete`,意义就很明显啦~

那什么又是“extended attributes”呢?继续查看“@”的含义,
执行 ls -l@xattr -l XX.file 查看扩展属性:

简单理解@就是表示文件或目录有额外属性,比如在MacOS上 从网上下载个文件有时会提示“此文件来自网络下载不安全”,就是这个属性起的作用。而从MacOS下copy文件到Linux系统上时也会因为这个属性出现打不开的情况。可以手动去除掉:xattr -c XX.file

  1. 其余每一列对应的信息如下:

    [类型+权限]—[连接]-[所有者]-[所属组]-[文件大小]-[最后修改日期]-[文件名称]

文件权限的修改:

一张图看懂修改文件权限的命令:

通过按位与的设计巧妙的用三个二进制位表示了三种权限产生的8种组合。
用符号改变权限时,如:chmod a+r XX.file表示对用户、组、其他 全部添加读取权限。

以上,有任何疑问欢迎留言~

小可长江 wechat
更多最新分享请扫码关注我的微信公众号获取 🍻
0%