在之前的权限管理的文章中,我们了解了文件权限的基本内容和ACL相关内容。今天我们来讲讲文件权限管理的另一个内容:文件特殊权限
文件特殊权限是权限管理中比较难的一部分,分三个小内容,分别是:suid、sgid和sticky。
首先了解一下SUID主要功能:当用户执行某一程序时,临时获得该程序所有者的身份(非所有者以所有者身份运行)
这样的说法难免有些晦涩,打个比方:
普通用户是没有/etc/shadow
文件的权限的,但是仍然可以修改自己的密码,原因就是修改密码的命令“passwd”拥有SUID权限。
# which passwd //查询passwd命令所在目录
/usr/bin/passwd
# ll /usr/bin/passwd //查看passwd文件权限
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd //标红的S代表SUID权限
反例:cat命令没有SUID权限,所以普通用户无法查看/etc/shadow
文件。
由上面的例子,我们可以知道
1.只有可执行的二进制程序才能设定SUID权限。(给一个非程序设定SUID是没有意义的)
2.命令的执行者必须对该程序拥有X(执行)权限,否则没有SUID没有意义。
3.SUID权限只在程序运行的过程中有效。(普通用户变身为root超人的时间和限制是非常严格的)
所以,大家在设定SUID是时一定要十分谨慎,因为SUID权限是十分危险的!
假设你给VIM设定的SUID权限,那么任何人都可以直接修改系统关键文件,包括但不仅限于shadow文件。
好了,了解完SUID的知识,终于可以设定SUID权限了。
有两种方法:我以cat命令为例
chmod 4755 /usr/bin/cat //4代表SUID权限
chmod u+s /usr/bin/cat //两种命令意思相同
输完上面的命令,我的普通用户也可以cat /etc/shadow
文件了。这里不再演示。
如何删除SUID权限?
很简单,将权限再次指回即可。
chmod 755 /usr/bin/cat
chmod u-s /usr/bin/cat
在最后再次重申SUID的危险性,为了保证服务器安全,我们应该
1.对关键目录严格控制写权限,如 “/” “/etc” “/usr”
2.用户的密码严格设置并且遵守密码三原则
3.对系统中拥有SUID权限的文件作一列表,并且定期检查。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。