9月14日任务
2.14 文件和目录权限chmod
2.15 更改所有者和所属组chown2.16 umask2.17 隐藏权限lsattr/chattr
隐藏权限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.在系统中已经有设置,可以参看passwd命令。
红色
前面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用户创建的文件,其他用户可以访问修改但是无法删除