为什么必须只读
挂载动作本身就会改变证据:文件系统驱动会回放日志、更新挂载计数、写入访问时间。对证据盘或镜像,正确做法是块设备置只读、镜像用只读回环设备建立,并在挂载参数上显式禁止日志回放。
光有 ro 还不够
ro 只约束文件系统层,块设备层仍可被写入,桌面环境的自动挂载更是绕过人工参数。因此要叠加块级只读(blockdev --setro)或硬件写保护,并在挂载后核对实际生效的参数。
基本信息
| 关键选项 | ro 必选;建议追加 noexec、noatime |
|---|---|
| 镜像文件 | losetup -r 建立只读回环设备 |
| NTFS/XFS | 加 noload 禁止挂载时回放日志 |
| 块级保护 | blockdev --setro /dev/sdb 双保险 |
| 核对方式 | mount 与 blockdev --getro 输出确认 |
| 权限要求 | 挂载与块设备操作需 root |
典型使用场景
- 分析磁盘镜像中的分区内容
- 浏览从受害主机取下的证据盘
- 校验挂载参数是否真的只读
- 在带桌面环境的分析机上避免自动挂载
- 与写保护设备配合形成完整防写链
只读挂载物理盘与镜像
只读挂载物理盘与镜像
mkdir -p /mnt/evidence
blockdev --setro /dev/sdb # 块设备级只读(双保险)
mount -o ro,noload /dev/sdb1 /mnt/evidence # 物理盘(xfs 示例)
losetup -r /dev/loop0 /evidence/disk.img # 镜像:只读回环
mount -o ro,noatime /dev/loop0 /mnt/evidence
mount | grep evidence # 应显示 ro挂载输出逐列读法
| 字段 | 含义 | 正常/异常 |
|---|---|---|
| 设备名 | 挂载的设备或回环设备 | 直接挂载原始块设备且无 ro 即为风险做法 |
| 挂载点 | 证据目录 | 挂在桌面自动挂载路径下易被其他进程访问 |
| 挂载参数 | ro、noatime、noload 等 | 未见 ro 说明为可写挂载,必须卸下重挂 |
| 文件系统类型 | ext/xfs/ntfs 等 | xfs 或 ntfs 未加 noload 会回放日志 |
不要直接双击或读写挂载:一次日志回放就可能改写原盘日志区,哈希校验也随之后续不成立。
只读挂载不等于块设备只读:配合 blockdev --setro 与硬件写保护读卡器,才能覆盖绕过文件系统层的写入。
核对保护是否生效
核对保护是否生效
blockdev --getro /dev/sdb # 1 表示块设备已只读
findmnt /mnt/evidence | head -n 3
losetup -a | head -n 10 # 回环设备应显示 (read-only)
cat /proc/mounts | grep evidence # 内核视角的挂载参数挂载前检查项
- 确认镜像哈希已计算并登记
- 确认回环设备以只读方式建立
- 确认没有其他进程正在使用该设备
- 记录挂载时间、参数与操作人