自动化 ecryptfs 挂载过程

自动化 ecryptfs 挂载过程

我按照以下步骤挂载我的私人目录

root@pc:~# mount -t ecryptfs /testdata/ /testdata/
密码:
选择密码:
 1)aes:块大小 = 16;最小密钥大小 = 16;最大密钥大小 = 32
 2)blowfish:块大小 = 8;最小密钥大小 = 16;最大密钥大小 = 56
 3)des3_ede:块大小 = 8;最小密钥大小 = 24;最大密钥大小 = 24
 4)twofish:块大小 = 16;最小密钥大小 = 16;最大密钥大小 = 32
 5)cast6:块大小 = 16;最小密钥大小 = 16;最大密钥大小 = 32
 6)cast5:块大小 = 8;最小密钥大小 = 5;最大密钥大小 = 16
选择[aes]:
选择密钥字节:
 1)16
 2)32
 3)24
选择 [16]:
启用纯文本传递 (y/n) [n]:
启用文件名加密 (y/n) [n]: y
文件名加密密钥 (FNEK) 签名 [b9fc92f854a4c85b]:
尝试使用以下选项进行挂载:
  ecryptfs_unlink_sigs
  ecryptfs_fnek_sig=b9fc92f854a4c85b
  ecryptfs_key_bytes=16
  ecryptfs_cipher=aes
  ecryptfs_sig=b9fc92f854a4c85b
警告:根据 [/root/.ecryptfs/sig-cache.txt] 的内容,
好像你从来没有用这个密钥挂载过
之前。这可能意味着你已经输入了
密码错误。

您是否要继续安装(是/否)?:是
您是否要将 sig [b9fc92f854a4c85b] 附加到
[/root/.ecryptfs/sig-cache.txt]
以避免将来出现此警告(是/否)?:是
已成功将新签名附加到用户签名缓存文件
已挂载 eCryptfs

我想编写一个脚本来自动化整个过程。我想使用文件传递密码短语、密码、密钥字节等。

我尝试了以下基于 ecryptfs.7 文档的挂载命令

mount -t ecryptfs -o key=passphrase:passphrase_passwd_file=/home/testpc/key.txt,no_sig_cache,verbose,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_enable_filename=y,ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=y secure_folder1/ secure_folder1/

其中 key.txt 是

root@testpc:/home/testpc# cat key.txt 
passphrase_passwd=1234

一旦执行上述命令,它会要求输入 FNEK。

Filename Encryption Key (FNEK) Signature [13e8b1bc6090e91d]:

有什么方法可以将此文件传递到自动化整个过程?一旦 PC 启动,它就不会要求我输入任何密码。

ecryptfs-add-passphrase 在这里有帮助吗?

提前致谢,Murali Marimekala

答案1

一旦执行上述命令,它会要求输入 FNEK。

Filename Encryption Key (FNEK) Signature [13e8b1bc6090e91d]:

有什么方法可以通过文件传递这个来自动化整个过程吗?

您忘记将要使用或之前使用过的 FNEK 签名添加ecryptfs_fnek_sig=到选项中。我通过 mount 使用 ecryptfs,它不会要求我输入 FNEK,因为我已在命令中设置了选项。

答案2

执行以下脚本解决了我的问题。如果有更好的建议,请告诉我。

#!/bin/bash
#Argument 1 will be the mountphrase
mountphrase=$1
echo $mountphrase 
echo "passphrase_passwd=${mountphrase}" > /home/testpc/key.txt

#Add tokens into user session keyring
printf "%s" "${mountphrase}" | ecryptfs-add-passphrase - > tmp.txt

#Now get the signature from the output of the above command
sig=`tail -1 tmp.txt | awk '{print $6}' | sed 's/\[//g' | sed 's/\]//g'`
echo $sig
rm -f tmp.txt #Remove temp file

#Now perform the mount
sudo mount -t ecryptfs -o key=passphrase:passphrase_passwd_file=/home/testpc/key.txt,no_sig_cache,ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_enable_filename=y,ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=y,ecryptfs_fnek_sig=${sig},ecryptfs_sig=${sig},ecryptfs_unlink_sigs /home/testpc/Ecryptfs/secure5 /home/testpc/Ecryptfs/secure5
rm -rf /home/testpc/key.txt

请进行审查并让我知道您的意见。

相关内容