今天带来 10.
关键词:特殊权限
特殊权限 先说2个命令: chattr、 lsattr
之前再讲权限的时候说过普通文件的默认权限 644 目录的默认权限 755。
开始介绍
直接输入lsattr 可以得到的结果是,
列出当前目录下所有目录与文件的权限
e 是默认就有的不做解释。
lsattr -d 查看目录的特殊权限。
下面我来说一下添加特殊权限命令就是chattr,今天只说2个选项 -i -a 注意看我的演示
看过图以后应该明白 i 的含义了,去掉直接用 chattr -i 1.txt
在看我演示 a 权限
增加 a 以后 只能追加内容,无法正常填入新的内容。
vi 下编辑也是无效。
去掉 a 选项依旧chattr -a 1.txt
lsattr -R 列出子目录下文件的权限,好处是在你对文件做删除时出现无法删除提示时,使用 -R 确定是否因为特殊权限导致。
隐藏的属性
umask 0022 0的含义 隐藏的属性
之前再讲文件和目录权限的时候说过普通文件的默认权限 644 目录的默认权限 755。产生这样结果的原因与umask有关,实际上是0644与0755.
还是演示为主
在仔细看一下,/usr/bin/passwd 系统已标红的形式 输出。
看一下权限与平时的普通文件不同之处 它是 -rwsr-xr-x. 看到我标记的红色“s”了吧。它代表的是
set_uid 表示“特殊权限位”。
拥有set_uid的效果,我先不说一定仔细看一下我们的 测试实验(下面的图)记住使用passwd这个命令的绝对路径。
取消到 set_uid 依旧使用chmod u-s /usr/bin/passwd 命令。然后/usr/bin/passwd 变成绿色 一个可执行文件。
我切换到普通用户权限,看看普通用户在使用passwd 效果 (2次尝试1.2)都是错误,无法更改普通用户密码。
再看下面一条操作
图中的1、2 两次操作 1.root下添加回set_uid后 2.切换普通用户执行passwd命令成功。
下面根据上图几个测试总结一下set_uid使用后的效果
体现:
1.在已passwd为例的测试中, 我们都知道root用户可以更改自己以及其他普通用户的密码(权限最高),而普通用户登录时也是可以修改自己的密码。这是由于普通用户在执行passwd命令修改自己密码时,这个权限相当于以root用户名义在执行这个操作。这是set_uid带来的效果
2.如果取消掉 set_uid 也就没法下放权限了,毕竟 o 上的权限是r-x.看我的截图 所以普通用户执行命令一直报错。
3.set_uid使用范围 只有二进制的可执行文件 可以设置。
下面介绍 set_gid
set_gid 针对所属组设置权限
可以对目录设置权限 还可以针对可执行的二进制文件。
效果:
加上sgid 后 临时拥有组用户的身份,已组用户身份执行权限
如果是目录的话拥有sgid
新建的目录或者文件,拥有父目录所属的组 是继承的。(看个目录拥有sgid 实验图)
我们在/data 下创建aaa.lam目录属主 属组 都是root 权限777
在普通用户下创建的1234.test目录 属组依旧是root继承
下面是取消sgid情况
普通用户创建的 属主 属组 是一致。
下面介绍 stick_bit 防删除位
效果是:拥有防删除位,谁建立谁才有权限删除(root除外)
范围:stick_bit 只作用于目录 文件添加后无意义