直接用noexec挂载可拦截执行调用,适合/tmp、/var/tmp、web上传目录、外部设备挂载点及纯存储数据盘;需配合nosuid和nodev组合使用,通过mount -o remount临时启用或修改/etc/fstab永久生效,严禁用于/、/usr等系统关键路径。

直接用 noexec 选项挂载,就能让分区上的可执行文件无法运行——它不删文件、不改权限,只是在内核层面拦截执行调用。这是防御恶意脚本和二进制提权最轻量也最有效的手段之一。
哪些目录适合加 noexec
重点防护“用户能写、程序能读、但不该跑代码”的位置:
- /tmp 和 /var/tmp:临时文件高频写入区,攻击者常在此丢 shell 脚本或编译后门
-
Web 上传目录(如
/var/www/uploads):用户上传的 zip、图片可能被伪装成可执行文件 -
外部设备挂载点(如
/mnt/usb):U 盘插入后自动执行风险高 -
数据盘或备份盘(如
/mnt/data):纯存储用途,无需执行能力
临时启用 noexec(立即生效,重启失效)
不用改配置、不重启,一条命令验证效果:
- 给
/tmp加禁止执行:sudo mount -o remount,noexec,nosuid,nodev /tmp - 给上传目录加更严限制:
sudo mount -o remount,ro,noexec,nosuid,nodev /var/www/uploads - 验证是否生效:
findmnt -o TARGET,OPTIONS /tmp,输出中应含noexec
注意:如果报错 “not mounted” 或 “special device not found”,说明该路径不是独立挂载点(比如只是根分区下的子目录),需先查真实设备:df -h /tmp。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
永久启用 noexec(开机自动生效)
编辑 /etc/fstab,让系统每次启动都按需挂载:
- 用
sudo blkid查目标分区的 UUID(推荐,避免设备名变动) - 在
/etc/fstab末尾加一行,例如:UUID=abcd1234 /mnt/data ext4 defaults,noexec,nosuid,nodev 0 2 - 保存后运行
sudo mount -a测试语法是否正确,无报错即生效
为什么建议组合使用 nosuid 和 nodev
noexec 单独用能防脚本,但存在绕过可能;搭配后形成闭环防护:
-
nosuid:让 setuid 程序(如
-rwsr-xr-x)失去提权能力,普通用户执行仍以自身身份运行 -
nodev:阻止在挂载点内创建或解析设备节点(如
/dev/zero),避免通过设备文件越权 - 若分区纯只读存储,还可加
ro,彻底关闭写入+执行+提权三连路径
典型安全组合:noexec,nosuid,nodev 或 ro,noexec,nosuid,nodev。
别对 /、/usr、/bin 等系统关键路径加这些限制,否则 sudo、passwd 等命令会异常。实际部署前,建议在测试环境确认业务无影响。










