隐藏权限 lsattr_chattr
相对于 ls -l 隐藏权限之后就看不到了 同时会根据权限来决定是否可以更改等, 可以在很大程度上保护文件.
使用的场景就是完全保护, 不让任何人来碰的时候 就使用 chattr +i
"chattr 命令不能保护 /,/dev,/tmp,/var 目录. lsattr 命令是显示 chattr 命令设置的文件属性."
" 一些相关的选项权限:
a: 即 append, 设定该参数后, 只能向文件中追加 / 添加数据, 而不能删除, 不能改名字, 不能改内容, 可以更改时间信息. 多用于服务器日志文件安全, 只有 root 才能设定这个属性.
c: 即 compresse, 设定文件是否经压缩后再存储. 读取时需要经过自动解压操作.
d: 即 no dump, 设定文件不能成为 dump 程序的备份目标.
i: 设定文件不能被删除, 改名, 设定链接关系, 同时不能写入或新增内容. i 参数对于文件 系统的安全设置有很大帮助."
可以发现有一个 i 权限, 这个 i 权限什么都不能做, 连名字都改不了. vi 是使用的时候, 会产生一个临时文件, 实际的修改都是在临时文件上, 保存退出的时候, 临时文件会覆盖原文件.
有了 i 就什么都动不了了, 所以如果想修改的话, 使用 chattr -i 就是将 i 移除, 这个就可以修改了.
head -n2 file1>>file2
是把文件 1 前两行追加到文件 2> 是写进去, 替换掉
lsattr 可以查看目录本身的 -d 如果不加选项则是查找目录下的子目录以及子文件的权限
chattr 也可以给目录加权限 +i (啥都不可以) 也可以加 a(追加) 权限, 这样就可以在目录下新建文件了
lsattr 还有一个选项 -R 可以查看子目录以及子目录下的文件权限 -R 递归
总结
chattr +i +a -i -a
lsattr -R -a(隐藏可以看出来) -d 查看目录
特殊权限 set_uid 普通用户临时拥有所有者的身份 u
红色
前面 rws s 是 set_uid 权限
即使是 root 在密码文件里也是没有任何权限, 但是 root 是超级管理员所以可以有. 但是普通用户如何改自己的而密码呢? 这样就需要一个权限, set_uid 可以让普通用户在执行 passwd 时候就会临时拥有 root 的身份, 这样就可以临时去改密码. 前提是二进制文件比如 ls cat
如何给一个文件授权 set_uid 权限?
比如一个用户没有查看 root 文件夹的权限, 也就是 ls 命令权限不够
这个时候就需要临时给他加一个可以查看 root 的权限
chmod u+s /usr/bin/ls
改完 ls 的权限之后, 就可以看 root 目录了
想去掉这个权限也很简单
chmod u-s /usr/bin/ls
也可以通过这种模式来写
chmod u = rws 但是这种因为没有 x 权限所以显示的是 S 加上 x 权限 chmod u+x 即可以正常显示 s
目录能不能加 set_uid 权限呢?
可以, 但是意义不大
特殊权限 set_gid 普通用户临时获得所有组的权限
作用在组权限位上, 相对于 set_uid 区别是 uid 是作用于用户. 做个实验, 把 g 加上 s 看看颜色变成了什么, 同时 s 在组里
因为本身这个目录给本组的权限就是可以读可以进入 所以一旦给 g 赋予了 s 的权限, 其他用户就临时获得了同组的权限
试着把 s 权限去掉, 就马上看不到了
正常情况下, root 创建的目录以及文件所属组都是 root 但是当使用 g+s 的时候 set_gid 在目录下面创建子文件, 子目录的时候, 所属组会跟着父级目录保持一致
set_gid 不仅可以作用文件也可以作用目录, 当作用在文件上的时候跟 set_uid 的作用是一样的, 可以让普通用户临时拥有所属组的身份.
作用在目录上的时候, 创建子目录和子文件的所属组和该目录的所属组保持一致.
特殊权限 stick_bit 防止别人删除自己的文件 root 除外
注意它的权限是 rwt 防删除位
tmp 是一个哪个用户都可以去访问的目录, 但是谁的文件谁做主. 权限是靠父级目录决定的
"要删除一个文件, 你不一定要有这个文件的写权限, 但你一定要有这个文件的上级目录的写权限. 也就是说, 你即使没有一个文件的写权限, 但你有这个文件的上级目录的写权限, 你也可以把这个文件给删除, 而如果没有一个目录的写权限, 也就不能在这个目录下创建文件."
举个例子:
bill 用户创建的文件, 其他用户可以访问修改但是无法删除
来源: http://www.bubuko.com/infodetail-2560447.html