和周围人交流发现,文件权限这一块似乎是很多人弄得不明不白的地方,就是知道这么个东西,但是看也看不太懂,知道得也不清楚,毕竟也可能是有些同学还没学到需要清楚了解文件权限的地方,没有怎么去看过或处理过与文件权限相关的信息,于是就是仅仅知道而已,但是文件权限其实是相当重要的知识,尤其是学到网络这一块你就会知道。下面开始进入正题
一、查看文件权限
首先,在终端你输入这个命令
ls -l
得到较为详细的文件信息
就以我的为例子来进行讲解。我们得到了八列信息,我们的重点是文件权限的相关问题,因此对于与文件权限无关的列不做说明。
第一列:文件类型及文件权限(该列由11个字符组成,具体如下)
第一个字符表示文件类型(如上面第二列第一个的第一个字符 - ),其具体为:
d:表示是一个目录。
-:表示这是一个普通的文件。
l: 表示这是一个符号链接文件,实际上它指向另一个文件。
b、c:分别表示区块设备和其他的外围设备,是特殊类型的文件。
s、p:这些文件关系到系统的数据结构和管道,通常很少见到。
文件权限:从第二个字符到最后共9(第2-10个字符)个字符,三个字符为一段:如rw-r--r--
第11个字符:. 与selinux相关,有这个点表示selinux开启,没有这个点表示selinux关闭(不做了解)
那么这第二到第十个字符这九个权限位是代表了什么意思呢?
回顾一下Linux中用户的概念与文件权限的种类
用户
Linux有两种用户:普通用户、超级(root)用户
超级用户:可以在linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的在终端的命令提示符是“#”,普通⽤用户的命令提⽰示符是“$”。
文件权限的基本种类(还有一些基本不用的权限不做说明)
- 读(r):Read,对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限 ,注意,对于目录而言,浏览的意思就说,r权限仅仅表示你有权限知道这个目录会有哪些内容,而不代表你就能cd到该目录进行工作,这是x权限才有的。
- 写(w):Write,对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
- 执行(x):execute,对文件而言,具有执行文件的权限;对目录来说,具有进入(cd)目录的权限,事实上,对于目录来说,如果只有x权限,没有r权限的话,ls指令都执行不了,因为若没r权限,这个目录里的内容就不能读
组合起来如下
再说明几个概念
属主:该文件创建者或被指定的文件所属者
属组:文件的所属组(在该组内的非属主用户对该文件拥有该属组权限)
其他:其他用户,既不属于属主又不在属组的用户
这九位分别每三个对应属主,属组,其他
把上面的组合起来就有例如
-
rwx --- ---: 文件所有者对文件具有读取、写入和执行的权限。
-
rwx r-- r--: 文件所有者具有读、写与执行的权限,其他用户则具有读取的权限。
-
rw- rw- r-x: 文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
-
rwx --x --x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
-
rwx --- ---: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
这样的组合同时也可以通过对应二进制位(即该权限存在为1,不存在为0)表示转换成八进制后,通过八进制数对应起来
二、文件权限的相关设置命令
1)chgmod
功能:设置文件的访问权限
使用格式:chgmod [参数] 权限 文件名
常用选项:-R 递归改变目录文件的权限
其使用格式有能分为两种
1.用户表示符 +/=/- 权限字符
例如:
创建一个123.txt文件,查看其文件权限,chmod命令来增加其拥有者的可执行权限,
之后再查看其文件权限
会发现其拥有者就有了可执行权限
2.三位8进制数
例如
ps:特别需要注意的是,只有文件的拥有者和root才能改变文件的权限
2)chown
功能:改变文件的拥有者
格式:chown [参数] 用户名 文件名
常用选项:-R 递归改变文件或目录文件的拥有者
例如:
ps:ls -l的第三、四列分别为文件拥有者与所属组
3)chgrp
功能:改变文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归改变文件或目录的所属组
例如:
4)umask
功能:查看或修改文件掩码
掩码有啥用?别弄复杂了,简单的说就是这样
新建文件的默认权限 = 0666 - 掩码权限值
新建文件夹的默认权限 = 0777 - 掩码权限值
格式: umask 掩码权限值
将用户现有的文件权限减去掩码权限值后,即可得到新创建文件或文件夹的默认权限。超级用户的默认掩码权限值为0022,普通用户的默认掩码权限值为0002
例如:
建议还是不要自己胡改掩码,以免造成不必要的麻烦(比如有人改了后,每次创建文件发现都要手动加可执行,半天又想不起来自己改了掩码 = =),像我在测试后就立马改回来了。
三、粘滞位
chmod +t 文件夹名
这个其实也很简单,不用弄复杂了,什么是粘滞位?
算是对于目录所设置的一种特殊权限
被设置了粘滞位的目录,只能被超级用户、该目录或该文件所有者删除
注意:粘滞位只能对目录设置,对文件设置是无效的