noexec 和 nosuid 是 linux 文件系统挂载时最常用、最有效的两项安全加固选项,它们不改变文件本身权限,而是在内核层面拦截危险行为:一个拦执行,一个拦提权。

noexec:阻止可执行文件运行
启用后,该挂载点下所有带 x 权限的二进制文件(如 ./exploit、/tmp/malware)调用 execve() 时会直接返回 Permission denied。它不影响读取、写入或脚本解释器加载(比如 sh /tmp/test.sh 仍能运行),但能有效阻断攻击者上传并直接执行恶意程序的常见路径。
- 适用位置:/tmp、/var/tmp、/dev/shm、Web 上传目录(如 /var/www/uploads)、用户家目录下的 Downloads
- 注意兼容性:Java 应用若在 /tmp 编译 JNI 库、Node.js 动态生成 .so 并 dlopen,可能失败,需提前验证
- 临时启用命令:
sudo mount -o remount,noexec /tmp
nosuid:让 SUID/SGID 失效
即使一个文件权限是 -rwsr-xr-x(即设置了 setuid 位),只要它位于 nosuid 挂载点上,执行时就不会切换到文件所有者身份,而是以当前用户身份运行。这直接封堵了攻击者上传自制 suid 程序(如伪造的 passwd 或 sudo 替代品)来提权的通道。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 典型部署:/tmp、/dev/shm、外部 USB 设备挂载点(如 /mnt/usb)、NFS/CIFS 共享目录
- 不影响系统可信路径:/usr/bin/sudo 在根分区挂载点上仍正常工作,因为挂载选项按路径独立生效
- 临时启用命令:
sudo mount -o remount,nosuid /dev/shm
组合使用与关键注意事项
noexec 和 nosuid 常与 nodev 一起启用,形成“三件套”,覆盖执行、提权、设备滥用三类风险。它们不是万能补丁,而是纵深防御中的基础一环。
- 必须配合 nodev 使用:防止在挂载点下创建 /dev/zero 或 /dev/sda 等设备节点,避免绕过限制
- 只加在非系统路径:切勿对 /、/usr、/bin 等系统分区启用 noexec,否则会导致命令崩溃
- 持久化配置:修改 /etc/fstab 对应行,例如
/dev/sdb1 /mnt/data ext4 defaults,noexec,nosuid,nodev 0 0 - 验证是否生效:
findmnt -o TARGET,OPTIONS /tmp应显示包含 noexec,nosuid,nodev
实际测试与回退方法
配置前建议先 remount 测试,避免业务中断:
- 写个测试脚本:
echo '#!/bin/sh; id' > /tmp/test.sh && chmod +x /tmp/test.sh && /tmp/test.sh→ 应报错 Permission denied - 若发现监控工具、编译脚本等异常,立即回退:
sudo mount -o remount,exec,suid,dev /tmp - 确认无误后再写入 /etc/fstab,并用
sudo systemctl daemon-reload && sudo mount -a生效










