但是不知道有老铁注意到没,好像有问题,上面虽然我不是拥有者,我把读和写的权限去掉了,但是我不仅是拥有者,我还是所属组啊,所属组有读和写的权限,为什么我不能读和写呢?
这里要说到Linux匹配权限的规则:从左到右先匹配拥有者,再匹配所属组的。
但是other有个例外,那就是root用户。
root账号非常重要!!!!!!!!!!!
🏆4、设置文件所属角色
除了文件属性权限的修改,我们还能修改拥有者和所属组。
👓①、chown
使用方式:chown 角色 文件名
比如我把test.txt 文件给了用户Zed。
但是给文件也要征得别的用户同一。这里我们用root权限,强制给。
强制给方式:root的话直接: chown 角色 文件名
普通用户: sudo chown 角色 文件名(先把自己加入可信任名单)
👓 ②、chgrp
chgrp 授予的所属组 文件名
这里其实chown可以满足同时改拥有者和所属组。但是不能单独改所属组
🏆5、改权限的数字方式
如果用二进制的方式改文件,是否可行呢?
我们将前一种通过指令改权限的方式称为 ugo + rwx方案。
而把数字方式称为八进制方案。rwx相应位置给1或0,再转化为八进制就能实现给或收权限!!
👓①Linux底层的权限设计
那这里还有一个问题,为什么我们创建的目录或普通文件,默认权限是我们所看到的样子呢?也就是为什么目录和普通文件创建出来就是
我们还需要了解Linux的相关规定:
Linux规定:
创建目录的起始权限是:777
创建普通文件的起始权限是:666
但我们创建的也不是777 和666啊?
还要介绍一个东西:权限掩码:umask 。Linux规定,凡是在umask中出现的权限都必须在起始权限中去掉!
umask默认是 0002.
那要是我不想他的起始权限是这样子,我想让他的起始权限修改,怎么操作?
我们可以修改umask。
那么还有一个问题:去掉umask是做减法吗?
👓 ②最终权限
最终权限=起始权限 & (~ umask)
&:按位与
~:按位取反
那么是不是这样子的,我们可以验证一下:
👓 ③进入目录的权限
最后一个问题,我们如果要进入一个目录,需要什么权限?是r(读)吗?是x(执行)吗?
这里也印证了为什么系统规定一个目录必须从777开始的。
👓④file指令
file指令用于辨识文件类型。
🏆六、粘滞位
👓①公共目录
Linux系统中有很多用户,有时我们为了工作交流的需要,可能需要消息共享和信息传递,所以我们需要在一个公共的目录下,进行临时文件的创建(增删查改)。
在根目录下,tmp目录就是一个公共目录,它可以放置很多用户的临时文件。如果我想创建一个公共目录可以吗?显然是可以的,这个文件应该是由root用户创建的,如果是非root用户,需要sudo提权创建。
我们看到在公共目录下,Zed用户的文件是禁止其他用户看到的。
那么,其他用户肯定不能查阅这个文件,那么我们可以删除这个文件吗?
我们看到Gyh用户不可以访问这个文件,但是竟然可以删除这个文件,一个没有访问权限的人有权删除一个文件。
看似不合理的删除,其实很合理,为什么呢?因为这是个公共目录,任何用户都可以对文件进行操作,所以这个删除是很合理的。因为删除文件的权限是目录的权限,和文件本身没有任何关系!!!
但是站在用户的角度,让我们很不舒服,我们想达到在公共目录中,大家可以各自进行rwx操作,但是禁止互删文件!!
所以就有了粘滞键。
👓②粘滞位
#粘滞位 对文件有保护作用。
当一个目录被设置为”粘滞位“(用chmod+t),该目录下的文件只能由
1、超级管理员(root)删除
2、该目录下的所有者删除
3、该文件的所有者删除。
粘滞位操作:chmod +t +公共目录
注意粘滞位是为了解决目录权限的问题,所以要给目录设置,而非文件。
最后奉上两幅图: