将/boot等关键分区设为只读并配置ro,noexec,nosuid,nodev,noatime选项,可有效防御勒索病毒;根分区/不可设只读,修改fstab后需验证挂载选项及写入失败效果。

把关键分区设为只读,是防勒索病毒篡改系统最直接有效的手段之一。核心不是简单加个 ro,而是组合安全选项、避开常见陷阱、验证真实生效。
/boot 等敏感分区必须设为只读
/boot 存放内核镜像、initramfs 和 GRUB 配置,一旦被恶意替换或加密,系统将无法启动。/usr 也常含只读的系统二进制和库文件,同样建议保护。但根分区 / 绝对不能设 ro——系统启动和运行时需写入 /etc、/var/log、/run 等目录,否则会卡死在开机阶段。
fstab 第四字段要配齐这五个选项
-
ro:强制只读,所有写操作(touch、cp、rm)都会被内核拒绝 -
noexec:禁止执行该分区上的任何程序或脚本,阻断恶意 payload 运行 -
nosuid:忽略 setuid/setgid 位,防止被篡改的 sudo 或 passwd 提权 -
nodev:不解析设备节点,避免伪造 /dev/xxx 触发内核漏洞 -
noatime:跳过访问时间更新,既提升性能,也避免因只读介质日志写失败导致挂载异常
示例配置(以 /boot 为例):UUID=4eff9bdb-7e0b-4d25-8931-dc776537bc73 /boot ext4 ro,noexec,nosuid,nodev,noatime 0 2
注意:第五字段设 0(禁用 dump),第六字段保留 2(允许 fsck 检查但不阻塞启动),并确保删掉原配置中的 rw、defaults、exec 等冲突项。
修改前必须确认三件事
- 运行
sudo fuser -m /boot或sudo lsof +D /boot,确认没有进程正在写入该分区 - 挂载点目录(如
/boot)必须已存在且为空,否则挂载失败 - NTFS/FAT 分区若需只读,要额外加
uid=1000,gid=1000,umask=022,否则普通用户可能连读都失败
生效与验证不能跳步
- 编辑完
/etc/fstab后,先执行sudo mount -o remount /boot立即应用新选项 - 再用
findmnt -t ext4 /boot | grep -o "ro,.*"检查输出是否完整包含ro,noexec,nosuid,nodev,noatime - 最后实测:
sudo touch /boot/testfile必须报错Read-only file system,才算真正生效
不复杂但容易忽略











