必须启用noexec、nosuid、nodev三项挂载选项,以禁止执行代码、提权和设备节点创建;fstab中应使用uuid配置并添加nofail,配合权限控制与umask或acl加固,最后用findmnt和手动测试验证生效。

要防止备份分区被误挂载为可执行分区,核心是通过挂载选项从系统层禁用执行、提权和设备节点功能,同时确保挂载行为本身稳定可靠。这不是给备份文件加密码,而是让整个分区“天生不能跑代码”。
哪些挂载选项必须启用
对备份分区(如 /backup、/mnt/backup 或独立的 /dev/sdb1),应在挂载时强制启用以下三项:
-
noexec:禁止在该分区上直接运行任何二进制或脚本(如
./restore.sh或/backup/malware) - nosuid:阻止 setuid 程序生效,避免攻击者利用备份中残留的提权二进制绕过权限控制
-
nodev:禁止识别设备文件,防止在备份目录下创建
/backup/tty或/backup/zero类节点实施逃逸
如何写入 fstab 实现开机自动加固
编辑 /etc/fstab,使用 UUID 定位分区更稳妥(避免硬件变动后挂错):
sudo blkid | grep backup
示例输出:/dev/sdb1: UUID="a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8" TYPE="ext4"2. 添加 fstab 条目(第六字段设为 0,备份分区通常不需 fsck):UUID=a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8 /backup ext4 defaults,noexec,nosuid,nodev 0 0
3. 测试配置是否合法:sudo mount -a
无报错即表示语法正确;若有错,会提示具体行号,及时修正。
额外加固建议
仅靠挂载选项还不够,需配合基础权限控制:
- 备份目录属主设为专用用户(如
backup),并限制其他用户读写:chown backup:backup /backup && chmod 750 /backup - 若备份内容含脚本,批量清除执行位:
find /backup -type f -name "*.sh" -exec chmod a-x {} \; - 对新生成文件统一控制权限:在备份服务启动脚本中设置
umask 027,或对目录设默认 ACL:setfacl -d -m u::rwx,g::rx,o::- /backup - 加
nofail选项(如defaults,noexec,nosuid,nodev,nofail):避免备份盘未接入时系统卡在挂载阶段无法启动
验证是否生效
挂载后立即检查:
findmnt -o TARGET,OPTIONS /backup
输出中应明确包含 noexec,nosuid,nodev。
再手动测试:echo '#!/bin/sh; id' > /backup/test.sh && chmod +x /backup/test.sh && /backup/test.sh
应返回 Permission denied —— 这说明防护已起效。











