Linux归档盘“锁死”需三层叠加:fstab设ro,noexec,nosuid,nodev,noatime实现持久只读挂载;LVM层用lvchange -p r锁定逻辑卷读写权限,重启仍生效;chattr +i加固关键文件/目录,内核级不可变,root亦须先解锁。

直接用 mount -o ro 挂载物理盘,只是让挂载点“当前不可写”,但 root 仍可 remount,rw 覆盖——这不叫“锁死”,只算“临时防护”。要真正把历史归档盘作为只读凭证锁死,必须跨层级叠加控制,确保连管理员也无法意外或恶意修改。
目标明确:物理盘(如 /dev/sdb1)挂载为归档用途,内容不可增删改、不可执行、不可提权,且重启后依然生效,满足审计或合规对“凭证级只读”的要求。
✅ 第一层:fstab 持久化只读挂载(基础防线)
编辑 /etc/fstab,为该盘指定安全挂载选项:
UUID=abcd-1234 /mnt/archive ext4 ro,noexec,nosuid,nodev,noatime 0 2
-
ro:禁止所有写操作 -
noexec:阻止上传脚本或二进制文件被执行(防恶意 payload) -
nosuid:忽略 setuid 位,切断提权路径 -
nodev:不解析设备节点,防伪造/dev/xxx攻击 -
noatime:避免因访问时间更新失败导致挂载异常(尤其对老化硬盘更稳) - 第五字段
0:禁用 dump 备份(只读归档无需备份) - 第六字段
2:保留启动时 fsck 检查(但只读下实际不写日志,安全无害)
✅ 修改后立即验证:
sudo mount -a && sudo mount -o remount /mnt/archive findmnt -t ext4 /mnt/archive | grep "ro,noexec"
✅ 第二层:LVM 层锁定(若使用 LVM,推荐)
如果该盘已纳入 LVM(比如逻辑卷 /dev/vg0/archive_lv),直接在卷组层面禁写:
sudo lvchange -p r /dev/vg0/archive_lv
-
-p r表示设为只读(read-only)权限 - 效果比
mount -o ro更底层:即使卸载后重新挂载,只要 LV 保持只读,任何挂载都会继承该状态 - 重启后依然有效,无需依赖 fstab 或挂载时机
⚠️ 验证方式:
sudo lvs -o +attr vg0/archive_lv # 输出中应含 "r"(Read-only)
✅ 第三层:关键文件/目录加 chattr +i(凭证级加固)
fstab 和 LVM 控制的是“挂载行为”,但若归档中包含核心凭证(如签名证书、哈希清单、审计日志摘要),需单独锁定:
sudo chattr +i /mnt/archive/CERT.pem sudo chattr +i /mnt/archive/SHA256SUMS sudo chattr +i /mnt/archive/audit.log.gz
-
+i是内核级不可变属性,root 也必须先chattr -i才能修改 - 目录加
+i后,禁止新建、删除、重命名任何子项(适合封存整个归档根目录) - 适用于满足等保、GDPR 或内部审计要求的“不可篡改证据链”
✅ 验证:
lsattr /mnt/archive/CERT.pem # 应显示 `----i---------e----`
⚠️ 不推荐仅靠的单点做法(易失效)
- ❌ 只用
mount -o ro /dev/sdb1 /mnt/archive(命令行挂载,重启即失效) - ❌ 仅在 fstab 写
ro却没加noexec,nosuid(攻击者仍可上传并执行脚本) - ❌ 对整块盘
chattr +i(不支持,chattr作用于文件/目录,非设备) - ❌ 试图对只读介质(如 CD/DVD)执行
remount,ro(冗余,内核已强制只读)
? 最终效果
| 层级 | 防护对象 | 是否重启持久 | 是否防 root 覆盖 |
|---|---|---|---|
fstab ro,noexec,...
|
整个挂载点行为 | ✅ 是 | ❌ 否(可 remount,rw) |
LVM lvchange -p r
|
逻辑卷读写权限 | ✅ 是 | ✅ 是(需先 lvchange -p rw) |
chattr +i |
单个文件或目录 | ✅ 是 | ✅ 是(需先 chattr -i) |
三者组合,才是面向归档凭证的“锁死”实践:
fstab 定义常态行为,LVM 提供底层保障,chattr +i 锁定关键证据项。
既满足日常只读访问,又扛得住误操作、越权写入与合规审查。


















