核心是用noexec配合nosuid和nodev防护/tmp、web上传目录等可写位置,通过mount -o remount临时生效或修改/etc/fstab永久配置,并辅以chmod去执行位、umask或默认acl控制新文件权限。

新手配置Linux挂载选项防脚本运行,核心是用好 noexec,配合 nosuid 和 nodev,不改代码、不装新工具,就能堵住大多数恶意脚本落地执行的路。
先确认哪些目录该加防护
不是所有目录都需要限制执行,重点盯住“用户能写、程序能读、但不该跑代码”的地方:
- /tmp 和 /var/tmp:系统临时文件集中地,攻击者最爱往这里丢脚本
- /var/www/uploads 或类似Web上传目录:用户上传的图片、文档可能被伪装成脚本
- /mnt/usb 或其他可移动设备挂载点:U盘插入后自动执行风险高
- 非根分区的数据盘(如 /data):若用于存放用户生成内容,也建议加限制
用 mount 命令快速试配(临时生效)
不用重启、不改配置文件,一条命令就能验证效果:
- 把 /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
如果执行失败,常见原因是该路径不是独立挂载点(比如只是根分区下的子目录),这时需先查清它的实际设备或文件系统类型(df -h /tmp)。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
写进 /etc/fstab 实现开机自动防护
临时设置重启就消失,永久防护要改 /etc/fstab。新手注意三点:
- 找到对应行(例如 /dev/sdb1 /mnt/data ext4 defaults 0 2),把第4列的 defaults 换成 defaults,noexec,nosuid,nodev
- 如果原来就有 defaults,它默认包含 exec 和 suid,必须显式加 noexec,nosuid 才能覆盖
- 改完别直接重启,先测试:
sudo mount -o remount /mnt/data 或
sudo mount -a(无报错即成功)
别忘了补上权限和新建文件控制
noexec 能拦住 ./script.sh,但拦不住 python script.py —— 这时候得配合基础权限管理:
- 批量清理已有脚本的执行位:
find /var/www/uploads -type f \( -name "*.sh" -name "*.py" \) -exec chmod a-x {} \; - 让新上传的文件默认没执行权:在上传目录里设 umask(如 Web 服务用 nginx 用户,可在其启动脚本里加 umask 022)
- 更稳妥的做法:对目录设默认 ACL,确保子文件一创建就是 -rw-r--r--:
setfacl -d -m u::rw-,g::r--,o::r-- /var/www/uploads
这些操作加起来,既不复杂,又实实在在抬高了恶意脚本运行的门槛。










