目录
大家好,今天我们来谈谈权限及粘滞位。我们先来说说权限吧,权限这个词想必大家都不陌生,可以简单理解为:对于一件事物可进行操作的权利的集合。举个简单的例子:【各种视频播放器/音频播放器】。相信大家在看剧或者听歌时,都会遇到这么一种情况“此为VIP用户专享,是否开通?”,这就说明只有VIP用户才能播放,而普通用户没有播放的权利,甚至还有一些资源需要付费,即便是VIP用户也不能操作,普通用户那就更别提了。上述这些就可以简单归纳为权限。对于文件来说也是如此,文件也是有权限的!但是Linux下的用户只有两种:①root - 超级用户 && ②普通用户,我们顺便来说一下两个用户的区别:①root -- 无拘无束、无法无天,②普通用户:受约束,可以做有限的事情,行使有限的权利。好了,介绍完毕,让我们先来看看文件都有什么权限吧。
一、文件都有什么权限?谁有?
文件的权限分为:读、写、执行,可能大家看起来心想“也没那么复杂嘛”,其实啊,还真没有那么复杂。权限可以概括为三种,但是大家有没有想过,文件仅仅是为了文件的所有者服务吗?所以,文件的访问者也可以概括为三类:文件拥有者(u - uesr)、文件所属组(g - group)、其他人(o - other),所以不同的访问者有对应不同的权限。
下图为某个文件的属性信息:
大家可能大部分的都能看的懂,但是前面几个可能会有小小的疑惑。①文件类型是什么?②rwx这些又是什么?
答:①文件类型:顾名思义,就是文件的种类,粗暴的说就是它是个什么种类的文件,我这里罗列了几个,大家可以看看。
d:文件夹,-:普通文件,l:软链接(类似Windows下的快捷方式),
b:块设备文件(硬盘、光驱),p:管道文件,c:字符设备文件(屏幕等串口设备),
s:套接口文件
②rwx是什么?我们可以看到这些字符对应的是文件拥有者、所属组和其他用户,所以,这写指代的就是文件对应的:读、写、执行权限。每个拥有者的权限表达方式对应三个单位的空间(不可为空!)。这些字符所代表的权限如下:
r:read,对于文件来说,具有读取文件的权限。对于目录来说,具有读取目录中文件的权限。
w:write,对于文件来说,具有修改文件内容的权限。对于目录来说,具有新建和删除目录中文件的权限
x:excute,对于文件来说,具有执行文件的权限。对于目录来说,具有进入目录的权限。
-:表示不具备该项权限。
权限符号 | 八进制 | 二进制 |
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
(大家可以自行组合)
二、文件的权限可以设置吗?如何设置?
首先回答第一个问题:文件的权限肯定是可以设置的,但是可以设置的用户只能为:文件拥有者或超级用户root
那么如何进行设置呢?引进 chmod 指令。
A.chmod
**功能:设置文件的访问权限
**格式:chmod [参数] 权限 文件名 (只有文件拥有者和root可以改变哦!!!)
**常用选项:R --- 递归修改目录文件的权限
参数:①用户 +-= 权限字符 ②8进制数字
①+:增加权限 u:所属用户
-:取消权限 g:所属组
=:赋值权限 o:其他
a:所有
实例:chmod u+w 文件 、 chmod o+w 文件、chmod u = wrx 文件
②上文提到:每个权限都对应一个八进制数字(r:4,w:2,x:1)
实例:chmod 661 文件、chmod 442 文件、chmod 666文件
扩展:
B.chown
**功能:修改文件的拥有者
**格式:chown [参数] 用户 文件
实例:chown -R user1 文件 (-R递归目录文件)
C.chgrp
**功能:修改文件或目录的所属组
**格式:chown [参数] 用户组 文件
实例:chown -R user 文件 (-R递归目录或文件)
再补充一个知识点:umask,umask -- 权限反掩码,当文件或者目录创建好后都会有默认掩码(文件 -- 0666,目录 -- 0777),为什么我们创建好之后文件或者目录后,看到的并不是这样的权限呢?那是因为umask的影响,实际的权限 = 默认权限 & ~umask(超级用户默认掩码:0022,普通:0002)
三、粘滞位是何方神圣?
在说粘滞位之前,我想大家应该先要了解一下读取目录中文件内容必须要有的权限是什么?我想很多人会毫不犹豫的回答”r权限”,实则不然,r权限固然需要,但是光有r是不够的。大家有没有想过我们所说的 可读、可写、可执行 具体是什么呢?前二者我想不用过多赘述,我们来关注一下 可执行 这个权限。可执行权限可以简单的理解为进入目录的权限,那么回过头来想一下,如果一个目录我们都无法进入,那我们即使有读取权限也根本不可能读取目录中的文件内容。
现在我们来了解一下目录的权限及效果:
①r:可读权限,若有此权限,可以读取目录中文件的内容
②w:可写权限,若有此权限,可以在目录中 删除/新建 文件(☆)
③x:可执行权限,若没有此权限,无法cd到目录中
大家应该看到我标记”☆”的那一个权限了吧,细细品味这个权限:拥有目录的写权限就可以 删除 目录中的文件,那是不是意味着,只要other拥有目录的写权限,那么不管root和文件拥有者设了什么权限,在other面前都是不堪一击的?因为other可以把文件删掉(都别看了)。那使用共享目录就会存在很大的风险,总不能把所有人的目录w权限取消吧,这样虽然可以避免删掉别人文件的可能,但是也剥夺了别人新建文件的权利,那共享目录的存在就成了笑话。因此,为了使大家既有 目录w权限 ,又可以不随意删除目录中的文件,”粘滞位”就出现了。
粘滞位使用方法:chmod +t 目录
加上粘滞位之后,除了①文件所有者②目录所有者③超级管理员(root),无人可以删除目录文件。