在小白与计算机的日常中,经常会碰到文件无(读、写、执行)权限,包括很多刚入门的程序员,也常常在别人的博客里会看到类似 chmod 777 XX.file
、chmod u+x XX.file
、chmod g-w XX.file
这些不明觉厉的命令,今天来帮还不清楚的童鞋科普一下,电脑中每个文件的权限 系统究竟是如何管理的,又如何修改文件的权限。
看懂文件类型与权限等信息
先不慌,打开终端,在任意非空目录下我们输入:
ls -l
复制代码
终端会输出该目录下所有文件的信息:
好,我们来对每一列是什么分别介绍:- -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
- 第2-10位,这九位字符每三个为一组,每组的三个字符分别代表读(r)、写(w)、执行(x)权限,三组分别代表不同所有者对该文件的权限,第一组:文件所有者的权限、第二组:这一组其他用户的权限、第三组:非本组用户的权限,总结如下图:
- 在MacOS系统中,输入
ls -l
发现文件权限格式与Linux稍有不同,部分文件权限信息的末尾有”+“或”@“符号: 我们直接看官方说明:终端输入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:
0: group:everyone deny delete
,意义就很明显啦~
那什么又是“extended attributes”呢?继续查看“@”的含义,
执行 ls -l@
或xattr -l XX.file
查看扩展属性:
xattr -c XX.file
。
- 其余每一列对应的信息如下: [类型+权限]---[连接]-[所有者]-[所属组]-[文件大小]-[最后修改日期]-[文件名称]
文件权限的修改:
一张图看懂修改文件权限的命令:
通过按位与的设计巧妙的用三个二进制位表示了三种权限产生的8种组合。用符号改变权限时,如:
chmod a+r XX.file
表示对用户、组、其他 全部添加读取权限。
以上,有任何疑问欢迎留言~