一.SetUID
- 注意必须是可执行的二进制文件,并且有执行权限,否则不起作用
因为paswd在执行的时候才会有root权限,也就是可以修改自己的密码。2.记得要符合上面的四项规则
4是SetUID,也就是前三位里s
2是SetGID,也就是中间三位里s
1是Sticky Bit,也iu是后三位里s
注意,如果原本的权限里没有x权限,如果用 chomd u+s 会报错,变成S
3.记得要符合上面的四项规则
4.
用whereis vim 去查找vim命令在哪个文档里,然后添加setUID权限,红色的是在警告,一般是错误文件或者权限过高文件。vim进入shadow文件就可以自己随便修改密码了,危险!
二.SetGID
1.对文件
find是对整个磁盘进行扫描,功能更强大;
locate是对数据库,速度快。
一个普通用户为什么可以使用locate命令可以找到其他文件的位置?
1.首先,普通用户是没有r的权限的,但是locate有SetGID权限,并且它的所属组是slocate
2.slocate有对于其他文件的r权限,所以可以找到其他文件的位置
3.普通用户使用locate命令时,相当于在执行的过程中变成了slocate,执行结束后恢复普通用户的身份。
2. 针对目录
r:ls
x:cd
首先创建一个目录test,并设置为2777,也就是普通用户对它有rw权限,还有SGID权限,
用 su - sc切换到普通用户sc,然后在家目录创建文件abc,发现abc的所有者和所属组都是sc,然后让sc用户cd到test下,去创建bcd文件,发现bcd文件的所属组是root。
4.
三.Sticky Bit
- 7755,第一位设置成7是没有意义的,一定有某些权限不可实现
setUID只针对可执行文件
setGID只针对可执行文件和目录
sticky BIT只针对可执行目录
例如用sc在tmp目录下创建一个文件sc-test,然后用用户user1去rm删除它,发现删不掉。
查看文件sc-test的权限是普通用户可w,但是没用。
因为有t,即粘着位,所以除了root,只有它的创建者可以删掉它。
2.只能root去设置和取消,普通用户是不行的
四.文件系统属性chattr权限
1.文件系统属性,对root也有作用,主要是为了保护文件防止用户误操作,不是为了限制root的权限。
ls看不了文件系统的权限。
五.sudo权限
2.用root进行操作,第一个ALL指的是被管理的主机,而不是源头,例如在本台windows机器上,搭建了一个虚拟的LINUX,那么需要用LINUX的IP
第二个ALL可以用括号括起来写,或者不写(任意身份意味着都可以代表root)
加%代表组
查看帮助,man visudo
然后查看配置文件,man 5 sudoers,
帮助文档里有例子:lisa可以执行任何命令,在这个网段,即允许某个用户执行某个命令在某个计算机或者网段上。
3.
4.先切换成普通用户sc,然后sudo -l去查看有哪些命令的权限,当然这里会让你输入密码以确认你是sc,查看之后,想要使用,要sudo 后面加命令的绝对路径
如果直接shutdown -r now是执行不了的,会说权限不够。
5.一个危险性的小实验
进入visudo文档添加一个权限,IP就是本台LINUX的IP
首先,创建一个文件,并且给权限600,也就是其他用户是没有写权限的
然后su到普通用户sc,然后进行vim
可以发现,能进入到test目录里,修改内容