隐藏权限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://blog.51cto.com/13691454/2097648