在日常运维和安全加固中,SUID/SGID 特权文件是一个常见的风险点。攻击者可能利用这些文件进行权限提升,因此我们需要定期检查并处理。
🔎 什么是 SUID 和 SGID
- SUID (Set User ID):程序运行时会以文件所有者的身份执行,而不是当前用户。例如
passwd命令允许普通用户修改密码,因为它以 root 身份运行。 - SGID (Set Group ID):程序运行时会以文件所属组的身份执行,而不是当前用户所属组。
这些机制本身是为了方便用户执行某些管理操作,但如果程序存在漏洞,就可能被攻击者利用。
⚠️ 风险描述
在安全检查中发现以下文件存在特权位:
SUID 文件
/usr/bin/chage、/usr/bin/gpasswd、/usr/bin/chfn、/usr/bin/chsh、/usr/bin/newgrp、/bin/mount、/bin/umountSGID 文件
/usr/bin/write
这些文件如果被利用,可能导致权限提升或系统被入侵。
🛠️ 解决方案
1. 去除 SUID 权限
chmodu-s /usr/bin/chagechmodu-s /usr/bin/gpasswdchmodu-s /usr/bin/chfnchmodu-s /usr/bin/chshchmodu-s /usr/bin/newgrpchmodu-s /bin/mountchmodu-s /bin/umount2. 去除 SGID 权限
chmodg-s /usr/bin/write📌 注意事项
- 去除这些权限后,普通用户可能无法执行某些操作,例如:
- 修改自己的 shell (
chsh) - 挂载/卸载设备 (
mount,umount)
- 修改自己的 shell (
- 在服务器环境(尤其是生产环境),通常推荐去掉这些权限,减少被利用的风险。
- 在桌面环境,如果需要这些功能,可以保留,但务必保持系统更新。
✅ 最佳实践
- 定期扫描系统中的 SUID/SGID 文件:
find/ -perm -4000 -type f2>/dev/nullfind/ -perm -2000 -type f2>/dev/null - 保留必要的特权文件(如
passwd),其他尽量去掉。 - 在团队中建立安全基线检查脚本,自动化发现并处理风险。
📝 总结
通过去除不必要的 SUID/SGID 特权文件,可以有效降低系统被攻击者利用的风险。这是Linux 安全加固的重要一环,建议纳入日常运维流程。