linux运维基础[权限管理]——————文件特殊权限[SetUID、SetGID、Sticky BIT]

文章目录

  • 1.SetUID
    • 1.1 SetUID的功能
    • 1.2 设定SetUID的方法
    • 1.3 取消SetUID权限
    • 1.4 危险的SetUID
  • 2.SetGID
    • 2.1 SetGID针对文件的作用
    • 2.2 SetGID针对目录的作用
    • 2.3 设定SetGID
    • 2.4 取消SetGID
  • 3. Sticky BIT
    • 3.1 SBIT粘着位作用
    • 3.2 设置粘着位
    • 3.3 取消粘着位
  • 4.总结

1.SetUID

1.1 SetUID的功能

功能:

  • 只有可以执行的二进制程序可以设定SUID权限;普通的文件或目录不能设定SUID(如果设定没有意义)。
  • 命令执行者要对该程序拥有x执行权限
  • 命令执行者(普通用户)在执行改程序的时候获得这个程序属主的身份(暂时性获得)。
  • SetUID权限只在该程序执行过程中有效,身份改变只在程序执行过程中有效。

linux系统中最常见的就是passwd命令:

在这里插入图片描述SetUID就是指在文件所有者的位置拥有s权限

证明passwd是拥有SetUID权限的。

我们知道正中的密码是写在/etc/shadow中的,我们查看权限。

在这里插入图片描述
普通用户可以更改自己的密码,他最终一定对/etc/shadow写入了文件,那一定是使用了/usr/bin/passwd这条命令。

当任何用户使用/usr/bin/passwd命令时,因为命令有SetUID权限,所以暂时性的获得所有者权限。在执行passwd命令时系统没有把他当成普通用户对待,而是当成了root对待的。虽然/etc/shadow对所有者是0,但是对root用户来说是没有意义的,超级用户有7权限。

在这里插入图片描述
cat命令没有SetUID权限,所以普通用户不能查看/etc/shadow文件。

1.2 设定SetUID的方法

chmod 4755 文件名
chmod u+s 文件名

一八四年我们设定权限的时候只有三位例如755,如果要加上SetUID就添加一位4755即可。

linux运维基础[权限管理]——————文件特殊权限[SetUID、SetGID、Sticky BIT]_第1张图片
也可以使用u+s给用户权限加上SetUID权限。

linux运维基础[权限管理]——————文件特殊权限[SetUID、SetGID、Sticky BIT]_第2张图片
这个大写的S是一种报错,因为我们看到4文件之前的权限是664,任何用户都没有执行权限,SUID权限没有任何意义,所以报错,大S是一种报警

1.3 取消SetUID权限

chmod 755 文件名
chmod u-s 文件名

就可以值解取消文件的SUID权限:

linux运维基础[权限管理]——————文件特殊权限[SetUID、SetGID、Sticky BIT]_第3张图片linux运维基础[权限管理]——————文件特殊权限[SetUID、SetGID、Sticky BIT]_第4张图片

1.4 危险的SetUID

我们在设定一个程序有SUID权限的时候一定要注意,这个程序是否是所有人使用不回出现问题的,例如vim程序。

在这里插入图片描述
现在vim程序有了SUID权限,所有的用户都可以在使用vim的时候获得root的身份,那么他就可以修改系统中的任何文件了

这就十分的危险了,他可以在/etc/passwd文件中将自己修改为超级用户了。

在这里插入图片描述在这里插入图片描述强制保存设定自己为普通用户,这就很恐怖了。

注意

  • 关键目录要严格控制写权限。如/或者/usr等。即普通用户不能任意修改。
  • 用户密码设置要遵守三原则。
  • 对系统中默认应具有SetUID权限的文件做备案,定期检查有没有这之外的文件设置了SetUID权限。

2.SetGID

2.1 SetGID针对文件的作用

  • 只有可以执行的二进制程序可以设定SGID权限;普通的文件或目录不能设定SGID(如果设定没有意义)。
  • 命令执行者要对该程序拥有x执行权限
  • 普通用户的组(普通用户)在执行程序的时候获得这个程序属组的身份(暂时性获得)。
  • SetGID权限只在该程序执行过程中有效,身份改变只在程序执行过程中有效。

最常见的就是locate文件搜索命令:

在这里插入图片描述可以看到普通用户是没有查看mlocate.db的权力的,我们是使用locate命令来查找mlocate.db中的信息的,而locate有SetGID权限,就可以变为slocate用户组,他就可以查看mlocate.db文件了,所以他可以使用locate查找文件

命令结束后,普通用户的属组变回原属组。

2.2 SetGID针对目录的作用

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

在这里插入图片描述linux运维基础[权限管理]——————文件特殊权限[SetUID、SetGID、Sticky BIT]_第5张图片也就是说改变目录下的建立文件的所属组为目录所属组

2.3 设定SetGID

chmod 2755 文件名
chmod g+s 文件名

设定一个目录的SetGID:
在这里插入图片描述
在这里插入图片描述

2.4 取消SetGID

chmod 755 文件名
chmod g-s 文件名

在这里插入图片描述注意数字形式取消的时候,只能在已有权限上去掉2,否则只是重新设定了普通权限,而不是取消了SetGID

3. Sticky BIT

3.1 SBIT粘着位作用

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

系统中最常见的拥有粘着位的就是/tmp目录。

在这里插入图片描述linux运维基础[权限管理]——————文件特殊权限[SetUID、SetGID、Sticky BIT]_第6张图片对目录有写权限就可以删除目录下文件,但是这里有了粘着位就只能删除自己建立的文件

3.2 设置粘着位

chmod 1755 目录名
chmod o+t 目录名

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

3.3 取消粘着位

chmod 755 目录名
chmod o-t 目录名

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

4.总结

三种文件特殊权限:

SetUID 文件 4
SetGID 文件、目录 2
Sticky BIT 目录 1

你可能感兴趣的:(linux)