文章目录
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
即可。
也可以使用u+s
给用户权限加上SetUID权限。
这个大写的S是一种报错,因为我们看到4文件之前的权限是664
,任何用户都没有执行权限,SUID权限没有任何意义,所以报错,大S是一种报警
1.3 取消SetUID权限
chmod 755 文件名
chmod u-s 文件名
就可以值解取消文件的SUID权限:
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权限时,新建的文件默认属于这个目录的属组。
也就是说改变目录下的建立文件的所属组为目录所属组。
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
目录。
对目录有写权限就可以删除目录下文件,但是这里有了粘着位就只能删除自己建立的文件。
3.2 设置粘着位
chmod 1755 目录名
chmod o+t 目录名
3.3 取消粘着位
chmod 755 目录名
chmod o-t 目录名
4.总结
三种文件特殊权限:
SetUID | 文件 | 4 |
---|---|---|
SetGID | 文件、目录 | 2 |
Sticky BIT | 目录 | 1 |