核心是精准识别、按需保留、严格管控:必须保留/usr/bin/passwd等关键程序,立即清理非标路径、普通用户属主、高危工具(如find/vim)及宽松权限的suid文件,并通过chmod u-s、白名单比对和auditd监控实现持续防护。

处理具有 SUID 权限的二进制文件,核心不是“一概删除”,而是“精准识别 + 按需保留 + 严格管控”。SUID 本身合法且必要(如 /usr/bin/passwd),问题出在不该有它的程序上——它可能成为提权入口。
哪些 SUID 文件必须保留?
系统关键功能依赖少数几个 SUID 程序,移除会导致基础操作失效。典型必须保留项:
-
/usr/bin/passwd:普通用户修改自身密码的唯一安全通道 -
/usr/bin/chsh和/usr/bin/chfn:在桌面或开发环境允许用户更新 shell 或个人信息(生产环境可酌情移除) -
/bin/mount和/bin/umount:仅当/etc/fstab中明确配置了user或users选项时才需保留;否则应移除 -
/usr/bin/newgrp:用于临时切换主组,若团队协作依赖该机制则保留
哪些 SUID 文件要立即清理?
以下类型一旦发现,应优先清除 SUID 位:
- 路径不在标准系统目录(
/bin、/sbin、/usr/bin、/usr/sbin)的可执行文件,如/tmp/tool、/var/www/backup.sh(注意:脚本设 SUID 无效,但存在即可疑) - 属主是普通用户(非 root、非系统服务账户)却带 SUID 的二进制,例如
john:users -rwsr-xr-x /opt/myapp/run - 已知高风险工具:如
/usr/bin/find、/usr/bin/vim、/usr/bin/nmap、/usr/bin/perl—— 它们本身无业务必需的提权逻辑,极易被滥用 - 权限宽松且属组/other 可执行的文件,例如
-rwsr-xr-x(other 有 x)比-rwsr-x---(other 无任何权限)危险得多
如何安全地清理和加固?
操作前先确认影响范围,再执行最小化处置:
- 用
chmod u-s /path/to/file移除 SUID 位(符号法更直观);数字法可用chmod 755 /path(去掉前导 4) - 对必须保留的 SUID 文件,收紧 other 权限:
chmod 4750 /usr/bin/passwd(属组可执行,other 无权) - 检查文件完整性:
rpm -V passwd(RHEL/CentOS)或dpkg --verify passwd(Debian/Ubuntu),排除被篡改可能 - 禁用无关 SUID 的挂载选项:在
/etc/fstab对非系统分区添加nosuid,从源头阻断滥用
怎么持续监控不漏掉新风险?
靠人工检查不可靠,需建立自动化基线:
- 每周运行一次扫描:
find / -xdev -type f -perm -4000 -ls 2>/dev/null | grep -vE '^/(bin|sbin|usr/bin|usr/sbin)/' - 将可信 SUID 文件列表固化为白名单(如 JSON 或文本),用脚本比对当前系统输出,差异项告警
- 集成进 CI/CD 或 Ansible Playbook,在镜像构建或主机上线时自动校验
- 配合 auditd 监控调用:
-a always,exit -F path=/usr/bin/find -F perm=x -k suid_find,记录谁、何时、为何执行了高危 SUID 程序











