跳转至

使用 LUKS 加密 home 目录并在开机时自动解密

参考:

创建 LUKS 加密分区

首先你需要创建一个 luks 加密分区,具体操作参阅上述链接。

手动挂载并测试

使用 CTRL + ALT + F2 打开一个新的 tty2,并使用 root 登录

Text Only
# 查看目标 luks 分区
lsblk

# 假设目标分区为 /dev/sda3,使用 cryptsetup 解密,名字为 home
cryptsetup open /dev/sda3 home
# 此时会要求输入密码,解密成功后会出现在 /dev/mapper/home

# 重命名旧的 home 目录
mv /home /home.old

# 挂载新的 home 目录(此时应该为空)
mkdir /home
mount /dev/mapper/home /home

# 复制原来的文件到新的 home 目录,并保留用户权限
cp -ax /home.old/* /home/

此时重新登录普通用户,如果登录成功并且 home 目录可以读写,则实验成功。

加密设备的开机自动挂载

创建密钥文件,这个文件在开机时会自动读取并解密目标分区:

Bash
1
2
3
4
5
6
7
# 生成随机字符串,熵越大越好
dd if=/dev/urandom bs=1 count=1024 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev
# 将随机内容写入到一个文件,比如这个
vim /root/luks_pass

# 设置文件权限,只允许 root 读写
chmod 600 /root/luks_pass

设置开机自动解密 luks 分区:vim /etc/crypttab

Text Only
# <name>  <device>      <password> <options>
home    /dev/sda3       /root/luks_pass

把密码添加到luks加密中,这一步必须执行才能使密码生效:

Bash
cryptsetup luksAddKey /dev/sda3 /root/luks_pass
# 会提示 `Enter any passphrase`,此时请输入分区的加密密码

设置 /home 目录的自动挂载点:vim /etc/fstab

Text Only
/dev/mapper/home        /home   ext4    defaults        0       2

重启即可完成。


如果要修改加密卷密码,或是删除密钥认证,请参考 保护数据,用 LUKS 给磁盘全盘加密