nosuid精准切断攻击者利用suid程序提权的路径,使-rwsr-xr-x文件以当前用户身份运行;必须与noexec、nodev组合用于/tmp、/var/tmp、/dev/shm、web上传目录及独立挂载的/home等非系统路径。

配置 nosuid 不是为了让系统“更安全”,而是精准切断攻击者最常用的一条提权路径:利用带 SUID 位的程序(如 /bin/bash 或自制二进制)切换到 root 身份。它本身不阻止执行,只让 SUID/SGID 权限位失效——哪怕文件属主是 root、权限是 -rwsr-xr-x,挂载点启用 nosuid 后,普通用户运行它也只会以自己身份运行。
哪些位置必须加 nosuid
只对“用户可写 + 不该继承特权”的路径启用,系统关键路径(如 /、/usr、/bin)绝不能加,否则 sudo、passwd 等命令会异常。
- /tmp 和 /var/tmp:服务和用户频繁写入,攻击者常上传带 SUID 的提权 shell 并执行
- /dev/shm:内存挂载点,易被用于无文件攻击,SUID payload 可绕过磁盘扫描
-
Web 上传目录(如
/var/www/uploads):用户上传的脚本或二进制若含 SUID,可能被直接调用 - 独立挂载的 /home:普通用户主目录下若有开发环境或编译产物,启用后可阻断本地提权链
-
外部设备挂载点(如
/mnt/usb):U 盘插入后自动挂载,.desktop或恶意 SUID 文件可能触发桌面级提权
先临时测试,再永久生效
别直接改配置文件。先用 mount -o remount 验证兼容性:
- 给
/tmp加nosuid:sudo mount -o remount,nosuid /tmp - 验证是否生效:
findmnt -o TARGET,OPTIONS /tmp,输出中应含nosuid - 手动测试:复制一个带 SUID 的程序过去,比如
cp /bin/bash /tmp/mysh && chmod u+s /tmp/mysh,再运行/tmp/mysh -p—— 若提示符仍是$(不是#),说明已起作用 - 如果业务异常(如某监控脚本依赖 SUID 工具),立刻回退:
sudo mount -o remount,suid /tmp
写入 /etc/fstab 实现永久防护
临时命令重启即失效,必须落盘才真正可靠。编辑 /etc/fstab,找到对应挂载行,修改第 4 列(options 字段):
- 如果是 tmpfs 类型(如
/tmp):tmpfs /tmp tmpfs defaults,nosuid,noexec,nodev 0 0 - 如果是独立分区(如
/home在/dev/sda2):UUID=xxxx /home ext4 defaults,nosuid,noexec,nodev 0 2 - 多个选项用英文逗号分隔,顺序无关;
defaults可保留,它包含常用基础选项 - 保存后运行
sudo mount -a测试语法是否正确,无报错即表示配置合法
为什么 nosuid 必须搭配 noexec 和 nodev
单独启用 nosuid 效果有限,三者组合才能覆盖常见攻击面:
-
noexec补上“不能执行”这一环——即使没有 SUID,攻击者仍可能上传并直接运行普通恶意二进制或 shell 脚本 -
nodev阻止在挂载点内创建设备节点(如/tmp/evil_dev),避免通过 raw I/O 或内核模块加载绕过限制 - 三者缺一不可,标准组合永远是
nosuid,noexec,nodev,适用于所有非系统路径











