由于 ecryptfs 文件名大小的限制,我决定使用加密分区。由于我已经使用 ecryptfs,因此对于我的主文件夹,我不需要密钥来保护密码。
我需要一个脚本,可以非交互地挂载给定文件中包含的加密文件系统,并使用存储在二进制文件中的密钥。我愿意接受任何可以解决这个问题的方案,只要我可以使用稀疏文件作为后备存储(因此不需要 truecrypt,也不需要 cryptmount-setup)。
答案1
可以使用 dm-crypt/LUKS/cryptsetup 来实现此目的,具体步骤如下:
- 创建稀疏磁盘映像文件:
dd if=/dev/zero of=IMAGEFILE bs=1 count=1 seek=SIZE
- 在文件中生成随机密钥:
dd if=/dev/random of=KEYFILE bs=1024 count=1
- 使用
cryptsetup luksFormat --key-file KEYFILE --cipher aes-xts-plain --size 512 IMAGEFILE
(或者使用另一个密码和密钥长度。请注意,由于 XTS,这里的 512 将为您提供 256 位的 AES。) - 打开加密容器:
cryptsetup luksOpen --key-file KEYFILE IMAGEFILE NAME
- 在 上创建文件系统
/dev/mapper/NAME
。 - 照常挂载文件系统。
您的脚本只需执行步骤 4 和 6。要卸载/关闭,请卸载文件系统并调用cryptsetup luksClose NAME
。
请注意,使用稀疏文件将泄露磁盘哪些扇区已被使用的信息(与在加密分区之前不使用随机数据覆盖分区相同)。您可以自行决定是否同意。
另请注意,删除文件不会使磁盘映像变小。稀疏文件将单调增长。