最快速有效的临时目录执行限制方法是 mount -o remount,noexec;它不改权限、不删文件,仅拒绝运行二进制或脚本,即使 chmod +x 也无效,且立即生效、业务无感知。

直接用 mount -o remount,noexec 给临时目录加执行限制,是最快速有效的办法。它不改权限、不删文件,只让系统拒绝运行任何二进制或脚本文件——哪怕权限是 -rwxr-xr-x,执行时也会报 Permission denied。
为什么 /tmp 是重点防护目标
/tmp 是默认开放写入的共享区域,攻击者常把扫描工具(如 nmap 脚本、Python 爬虫、bash 一键探测器)上传到这里直接运行。noexec 能拦住 ./scan.sh、./exploit.bin 这类调用,大幅提高攻击门槛。
- 它不依赖文件权限,即使 chmod +x 也没用
- 对 ELF 二进制、shell 脚本、Perl/PHP 可执行文件都生效
- 不影响读写、创建、删除等常规操作,业务几乎无感知
立即生效:临时挂载 noexec
不用重启、不改配置,一条命令就能验证和启用:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 给已挂载的
/tmp加限制:sudo mount -o remount,noexec,nosuid,nodev /tmp - 验证是否生效:
findmnt -o TARGET,OPTIONS /tmp→ 输出中应含noexec - 手动测试:
echo '#!/bin/sh\necho test' > /tmp/test.sh && chmod +x /tmp/test.sh && /tmp/test.sh→ 应提示Permission denied
长期防护:写入 /etc/fstab 永久生效
编辑 /etc/fstab,找到 /tmp 对应行(可能是 tmpfs 或独立分区),在第 4 列(挂载选项)加入 noexec,nosuid,nodev:
- tmpfs 类型示例:
tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0 - 磁盘分区示例:
UUID=abcd-1234 /tmp ext4 defaults,noexec,nosuid,nodev 0 2 - 改完后务必运行
sudo mount -a测试语法,无报错再继续
注意边界情况和配合措施
noexec 本身有局限,需搭配其他手段才更稳妥:
- 它不限制
python3 script.py这类通过解释器显式调用的方式,所以要同步收紧/tmp下的写入权限(如chmod 1777 /tmp保持 sticky bit,但限制用户上传可执行内容) - 某些旧服务(如部分 Java 应用临时解压运行)可能依赖
/tmp执行,启用前建议先在测试环境验证 - 推荐组合使用:
noexec,nosuid,nodev,relatime—— 四个选项一起上,兼顾安全与稳定性










