在Linux中,/etc/fstab通过配置ro,noexec,nosuid,nodev,noatime等挂载选项,可从内核层阻断勒索病毒篡改/boot等关键分区及用户可控路径的执行、提权与设备伪造行为,须配合UUID、mount -a测试和findmnt验证确保生效。

在Linux中,/etc/fstab不仅是开机自动挂载的配置文件,更是系统安全的第一道防线。恶意挂载常利用默认可写、可执行的挂载行为落地脚本、提权二进制或伪造设备节点——而正确配置fstab,能从内核挂载层直接阻断这些路径。
关键分区设为只读(ro)防篡改
对/boot、/usr等含内核、引导程序、核心命令的分区,必须强制只读:
- 第四字段写入ro,noexec,nosuid,nodev,noatime,禁用写入、执行、特权继承与设备解析
- 第五字段设为0(不备份),第六字段保留2(允许fsck检查但不阻塞启动)
- 切勿对根分区(/)设ro——系统启动需写日志、运行时目录,会导致开机卡死
- 修改前用
fuser -m /boot或lsof +D /boot确认无进程占用
非系统盘启用noexec/nosuid/nodev防提权
U盘、数据盘、Web上传目录等用户可控路径,是恶意代码常见落点:
- 挂载选项必须显式包含noexec,nosuid,nodev,不能只写defaults(它默认开启exec和suid)
- 典型条目:
UUID=abcd... /mnt/usb vfat defaults,noexec,nosuid,nodev,uid=1000,gid=1000,umask=022 0 0 - NTFS/FAT类文件系统必须加
uid=1000,gid=1000,否则普通用户可能连读权限都没有 - 临时验证可用
sudo mount -o remount,noexec,nosuid,nodev /mnt/usb
挂载点选择与稳定性保障
避免因硬件变动导致挂载失败或错挂,影响安全策略生效:
- 优先使用
UUID=...而非/dev/sdb1,用sudo blkid查取 - 外接设备(如移动硬盘)建议加
nofail,防止拔掉后系统无法启动 - 镜像文件挂载(如ISO)应加
loop,ro,noauto,既只读又不随开机强行挂载 - 每次修改fstab后,务必运行
sudo mount -a测试语法与挂载逻辑,无报错再重启
生效后必须验证是否真正起效
配置写入fstab只是第一步,不验证等于没配:
- 用
findmnt -t ext4 /boot查看实际挂载参数,确认输出含ro,noexec,... - 实测写入:
sudo touch /boot/test应报Read-only file system - 实测执行:
sudo cp /bin/true /mnt/data/test && sudo /mnt/data/test应提示Permission denied - 检查SUID是否失效:
ls -l /mnt/data/some_suid_binary显示s位存在,但运行后不会提权


















