广告

CentOS 下如何挂载加密分区?完整步骤与注意事项

1. 前期准备与环境检查

CentOS 系统下的加密分区挂载通常需要先确认当前环境是否具备必要的工具与权限。办理前,请确保你拥有 root 权限或具备 sudo 能力,以便执行系统级操作。

在开始之前,确认 CentOS 的版本与发行状态,例如 CentOS 7、CentOS 8/Stream 等,因为不同版本对 dracut、fstab、crypttab 的实现细节略有差异。你可以通过以下命令查看系统信息:
系统版本、内核信息和基本分区情况将帮助你规划后续步骤。

cat /etc/os-release
uname -r
lsblk -f

另外,确保 cryptsetup 工具已经安装,以便对分区进行解锁和映射;如果未安装,请以管理员身份安装它。Cryptsetup 是管理 LUKS 加密分区的核心工具。

sudo dnf install -y cryptsetup

目标分区的选择与风险评估

在后续步骤中,你需要确定要挂载的加密分区,通常是已经被 LUKS 加密的分区,例如 /dev/sdb1、/dev/nvme0n1p3 等。请确保该分区中包含你需要持久化存取的数据,并且尚未被错误地用于其他挂载。

风险提示:修改分区和文件系统可能导致数据丢失,请在执行前完成数据备份并确保你所选的分区确实需要加密挂载。

2. 手动挂载已加密分区的完整步骤

核心操作概览

先对目标分区进行 解锁,然后创建一个映射名称,接着将映射后的设备挂载到你指定的挂载点。若分区尚未创建文件系统,可以在解锁后进行创建。整个流程适用于一次性手动挂载。

在进行手动挂载时,避免将映射设备直接写入 /root 或 /home 等敏感位置,以降低安全风险。同时,记得确认挂载点的权限,确保用户有访问权限。

# 假设目标分区为 /dev/sdb1
sudo cryptsetup luksOpen /dev/sdb1 mycrypt
# 现在 /dev/mapper/mycrypt 已经可用

如果分区内还没有文件系统,需要在解锁后创建一个新文件系统,并在创建完成后再执行挂载操作。以下示例展示创建 ext4 文件系统的过程:请只在需要时执行

sudo mkfs.ext4 /dev/mapper/mycrypt

接着创建挂载点并将解锁后的分区挂载到该挂载点。挂载点应当是空目录并且具有正确的权限,例如 /mnt/mycrypt:

sudo mkdir -p /mnt/mycrypt
sudo mount /dev/mapper/mycrypt /mnt/mycrypt

完成后,你可以在运行时访问挂载点以验证数据可读写性。若需要在系统启动后保持自动挂载,请继续学习自动解锁与挂载的配置方法。

CentOS 下如何挂载加密分区?完整步骤与注意事项

3. 设置开机自动解锁与挂载的注意事项

自动解锁的实现方式

要让系统在启动时自动解锁并挂载加密分区,可以通过 crypttab 配置来实现;随后在 fstab 中指定解密后的映射设备的挂载点。这样在引导阶段系统会提示解锁口令,或在提供密钥文件时自动解锁。

在实现前,建议先了解分区的 UUID设备路径,以确保在引导过程中定位正确的分区。通常推荐使用 UUID,以提高稳定性。

# 将分区的解密信息写入 crypttab,使用 none 表示引导时手动输入口令
sudo bash -c 'echo "mycrypt UUID=$(blkid -s UUID -o value /dev/sdb1) none luks" >> /etc/crypttab'

然后在 /etc/fstab 中添加解密后设备的挂载信息,将挂载点设为你希望在系统启动后自动挂载的位置,例如 /mnt/mycrypt。

sudo bash -c 'echo "/dev/mapper/mycrypt /mnt/mycrypt ext4 defaults 0 2" >> /etc/fstab'

如需在开机自动解锁时使用密钥文件,可以将密钥文件放在一个受限的路径并将其配置在 crypttab 中,但这需要严格的权限控制以避免安全风险:始终确保密钥文件权限为 400 或 600,且仅 root 能读取,并且不要放在公开可访问的位置。

# 创建密钥文件并添加到 LUKS
sudo dd if=/dev/urandom of=/root/crypt.key bs=1 count=64
sudo chmod 400 /root/crypt.key
sudo cryptsetup luksAddKey /dev/sdb1 /root/crypt.key# 更新 crypttab,指定密钥文件路径
sudo bash -c 'echo "mycrypt UUID=$(blkid -s UUID -o value /dev/sdb1) /root/crypt.key luks" >> /etc/crypttab'

完成上述配置后,需要重新生成 initramfs 以包含 cryptsetup 的必要模块,确保在引导阶段能正确解锁。请使用你系统对应的命令生成 initramfs:

sudo dracut -f

慎重对待自动挂载的注意事项

在开启自动解锁和挂载前,请务必确认以下事项:数据备份密钥/密钥文件的安全存放、以及对 felon 的访问控制。错误的配置可能导致系统无法启动或分区数据暴露。

若你希望仅在需要时手动解锁并挂载,可以将 crypttab/fstab 中的设置保留为手动模式,避免引导阶段自动解锁;仅在需要时执行 cryptsetup luksOpenmount 命令即可。

4. 常见问题与故障排除

解锁失败或找不到映射设备

如果在执行 cryptsetup luksOpen 时遇到错误,请先确认目标分区确实被 LUKS 加密,且 设备名 无误。您可以通过以下命令核对分区信息:

sudo cryptsetup isLuks /dev/sdb1 && echo "LUKS" || echo "Not LUKS"
sudo cryptsetup luksDump /dev/sdb1

如果确认未被 LUKS 加密,需要先对分区进行加密或选择正确的分区;若已经加密,但仍无法解锁,请检查口令是否正确、密钥文件路径是否正确、以及权限是否足够。

# 重新尝试解锁示例
sudo cryptsetup luksOpen /dev/sdb1 mycrypt

挂载失败或权限问题

挂载失败通常与挂载点权限或文件系统类型有关。请确认您为目标映射创建了相应的文件系统(如 ext4、xfs),并且挂载点存在且权限正确。您也可以通过检查 dmesg 与系统日志来定位错误信息。

sudo mount /dev/mapper/mycrypt /mnt/mycrypt
# 若失败,查看系统日志
sudo dmesg | tail -n 50
journalctl -xe | tail -n 100

自动解锁失败引导失败

若开启了自动解锁但系统无法启动,先在救援模式下进入系统,检查 /etc/crypttab/etc/fstab 的配置是否正确,确保 UUID、设备名与路径对应无误。必要时可以先移除 crypttab 条目,回退到手动解锁模式再启动系统。

# 进入救援模式后可临时注释 crypttab 行
sudo sed -i.bak '/^mycrypt/d' /etc/crypttab
sudo dracut -f

广告