文件特殊权限SetUID、SetGID、Stick BIT

一、SetUID

1.SetUID是什么

SetUID功能可以这样理解:

  • 只有可以执行的二进制程序才能设定SUID权限
  • 命令执行者要对该程序拥有x权限
  • 命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)
  • SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

2.举例

在这里插入图片描述

因为
在这里插入图片描述

/user/bin/passwd命令拥有特殊权限SetUID,也就是在属主的权限位的执行权限上是s。可以这样来理解:当一个具有执行权限的文件设置SetUID权限后,用户执行这个文件时将以文件所有者的身份执行。/user/bin/passwd命令件拥有SetUID权限,所有者为root(Linux中命令默认所有者都是root),也就是说当普通用户使用passwd更改自己密码时,那一瞬间突然灵魂附体,实际是在用passwd命令所有者root的身份在执行passwd命令,root当然可以将密码写入/etc/shadow文件(root什么事都可以干),所以普通用户可以修改/etc/shadow文件,命令执行完成后该身份也随之消失
在这里插入图片描述
如果取消SetUID权限,则普通用户就不能修改自己密码了

3.危险的SetUID

在这里插入图片描述

如果vim加上SetUID权限后,普通用户就可以通过vim命令文件打开任何文件,及其危险

4.建议

  • 关键目录应严格控制写权限。比如“/”、“usr”等
  • 用户的密码设置要严格遵守密码三原则
  • 对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外文件被设置了SetUID权限

5.检测SetUID的脚本

在这里插入图片描述
在这里插入图片描述

二、SetGID

1.针对文件的作用

SGID既可以针对文件生效,也可以针对目录生效,这和SUID明显不同。如果针对文件,SGID的含义如下:

  • 只有可执行的二进制程序才能设置SGID权限
  • 命令执行者要对该程序拥有x权限
  • 命令执行在执行程序时,组身份升级为该程序文件的属组
  • SetGID权限同样只在程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效

在这里插入图片描述
可见,属主权限是r、w,属组权限是r,其他人权限是0
在这里插入图片描述
当普通用户执行locate命令时,会发生如下事情:

  • /usr/bin/locate是可执行二进制程序,可以赋予SGID
  • 普通执行用户对/usr/bin/locate命令拥有执行权限
  • 执行/usr/bin/locate命令时,组身份会升级为slocate组,而slocate组对/var/lib/mlocate/mlocate.db数据库拥有r权限,所以普通用户可以使用locate命令查询mlocate.db数据库
  • 命令结束,普通用户的组身份返回为自己的组身份

2.针对目录的作用

如果SGID针对目录设置,含义如下:

  • 普通用户必须对此目录拥有r和x权限,才能进入此目录
  • 普通用户在此目录中的有效组会变成此目录的属组
  • 若普通用户对此目录拥有w权限时,新建的文件默认属组是这个目录的属组

在这里插入图片描述

在这里插入图片描述
test目录权限更改为777,标绿色是存在风险的,这时普通用户也可以进入test目录,也可以创建文件,所有者与所属组都是mcc
在这里插入图片描述

如果用root用户给test目录所属组加入SGID权限
在这里插入图片描述
这时普通用户mcc在test目录中创建新文件,bcd的所属组不再是mcc,而是test目录本身的所属组
在这里插入图片描述

三、Sticky BIT

Sticky BIT粘着位,简称为SBIT。SBIT目前仅针对目录有效,它的作用如下:

  • 粘着位目前只对目录有效
  • 普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限
  • 如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件

四、设定文件特殊权限

  • 4代表SUID
  • 2代表SGID
  • 1代表SGIT
chmod 4755 ftest #赋予SUID权限
chmod 2755 ftest #赋予SGID权限
mkdir dtest #创建目录
chmod 1755 dtest/ #赋予SGIT权限

五、文件系统属性chattr权限

1.命令格式

chattr [+-=] [选项] 文件或目录名
选项:
	+:增加权限
	-:删除权限
	=:等于某权限
	i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件
	a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除、修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除
	e:Linux中绝大多数的文件都默认拥有e属性,表示该文件是使用ext文件系统进行存储的,而且不能使用“chattr -e”命令取消e属性

2.查看文件系统属性lsattr

lsattr 选项 文件名
选项:
	-a:显示所有文件和目录
	-d:若目标是目录,仅列出目标本身的属性,而不是子文件的
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值