在用户登录时安全地自动挂载加密驱动器

当我登录时,加密的/ home目录会自动挂载。我有第二个内置硬盘驱动器,我已使用“磁盘工具”格式化并加密。 我希望它在登录时自动挂载,就像我的加密/主目录一样。 我该怎么做呢?

这里有几个非常相似的问题,但答案不适用于我的情况。 最好在这里关闭/合并我的问题并编辑下面的第二个问题,但我认为它可能已被放弃(因此永远不会被标记为已接受)。

这种解决方案不是一种安全的方法,它绕过了加密。
这个需要编辑fstab ,这需要在启动时输入额外的密码。 这不是像装/家一样自动化的。
这个问题非常相似,但不适用于加密驱动器。 该解决方案不适合我的需求。
这是一个但它是NTFS驱动器,我的是ext4。

如果解决方案需要,我可以重新格式化并重新加密第二个驱动器。 我已经在其他地方备份了所有数据。

您不再需要上述解决方案。

先决条件:

  • 一个Ubuntu 14.04 LTS安装
  • 加密的主目录(请参阅https://help.ubuntu.com/community/EncryptedHome )
  • 您希望在登录时自动安装辅助加密驱动器[编辑]。

注意:此方法不如手动安装加密驱动器安全。 如果某人对您的计算机具有物理访问权限,您对root密码不小心,或者您的计算机有多个用户/来宾帐户,则此方法不安全 ; 当您注销但未关闭系统时,辅助驱动器会保持挂载状态,因此其他用户可以看到其内容。

第1部分:加密辅助驱动器。

  1. 在Unity破折号中键入“disks”并按Enter键。
  2. 在“设备”下方,单击要加密的硬盘驱动器。
  3. 在“Volumes”下方,单击cog / more actions按钮。
  4. 单击“格式化卷”。 对于type,选择“Encrypted,与Linux系统兼容”。 为你的驱动器命名并给它一个强大的密码短语。
  5. 点击“格式”

第2部分:在系统启动时自动安装HDD。

  1. 保持“Disks”应用程序打开,然后单击cog。
  2. 单击“编辑加密选项”。
  3. “自动加密选项”将打开,下面的菜单显示为灰色。 关闭自动加密选项。
  4. 输入格式化磁盘时的密码短语。 单击“确定”。

您现在拥有一个加密的硬盘驱动器,可在计算机启动时自动安装。

建立@ johnf的答案,但改为使用mount.ecryptfs_private :

  • 加密/home/bob/ (例如在SSD上),使用Ubuntu的常规加密家庭目录魔法。
  • encrypted /media/hdd/bob_extra/ (例如在HDD上),安装到/home/bob/extra 。 这应该在登录时自动挂载,就像主目录一样。
  • 两者使用相同的密钥/凭证。

创造它

 mkdir /media/hdd/bob_extra cp /home/bob/.ecryptfs/Private.sig /home/bob/.ecryptfs/extra.sig echo "/media/hdd/bob_extra /home/bob/extra ecryptfs none 0 0" > /home/bob/.ecryptfs/extra.conf 

测试一下

 mount.ecryptfs_private extra 

运行mount ,你应该看到:

 ... /media/hdd/bob_extra on /home/bob/extra type ecryptfs (ecryptfs_check_dev_ruid,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=12345678abcdef,ecryptfs_fnek_sig=abcdef12345678) 

卸载:

 sudo umount /media/hdd/bob_extra 

设置自动挂载

创建/home/bob/bin/automount_ecryptfs.extra ,如果尚未安装它将挂载它。

 #!/bin/bash MOUNT_POINT=/home/bob/extra grep -q $MOUNT_POINT /proc/mounts if [ $? -eq 1 ]; then mount.ecryptfs_private extra fi 

使其可执行( chmod +x ),然后将其添加到/home/bob/.bashrc

 ... /home/bob/bin/automount_ecryptfs.extra 

然后将它添加到Gnome的启动应用程序中。

几年前我写这个答案时,这是实施解决方案的最佳方式。 我现在建议您使用mount.ecryptfs_private来查看下一个答案 。

我也在寻找一种自动挂载第二个eCryptfs卷的方法。 以下脚本集和配置修改将安全地自动挂载您登录的卷,可以是GUI或CLI。

有一个更好的解决方案正在创建过程中(虽然我认为还没有准备好自动挂载用户登录,因此这个脚本的保质期有限。):

太小硬盘上的ecryptfs – 如何在加密中添加链接?

脚本的安全性取决于您的主目录是否使用eCryptfs加密,因此脚本和带有密码的文件将解密您的密码。 如果您在登录后打开根shell打开计算机,则可以访问密码,但是使用sudo NOPASSWD可以安全地安装分区,无需输入密码或将密码保留在用户可读的文件中。

这些脚本的一个已知缺陷是您的第二个卷在注销时不会被卸载,因此它不是特别适合多用户系统。

我的解决方案实现了几个部分,两个shell脚本,一个执行实际安装,另一个作为它的包装。

这是包装脚本,它validation目录是否已经挂载,如果不是,那么它将使用sudo调用挂载脚本:

/家庭/ johnf /脚本/ automount_ecryptfs

 #!/bin/bash MOUNT_POINT=/home/johnf/slow grep -q $MOUNT_POINT /proc/mounts if [ $? -eq 1 ]; then sudo /home/johnf/scripts/mount_other_ecryptfs fi 

该脚本调用/ home / johnf / scripts / mount_other_ecryptfs,如下所示。

请注意,此脚本假定您已启用文件名加密,如果不这样做,则需要修改脚本以处理检测(请查看ecryptfs-recover-private),或者可以删除ecryptfs_fnek_sig挂载选项。

以下是/ home / johnf / scripts / mount_other_ecryptfs脚本:

 #!/bin/bash ENCRYPTED_VOLUME=/vol0/.ecryptfs/johnf/.Private/ MOUNT_POINT=/home/johnf/slow PASSFILE=/home/johnf/scripts/ecryptfs_passphrase MOUNT_PASSWORD=secret_passphrase ECRYPTFS_SIG=`head -1 ${ENCRYPTED_VOLUME}//../.ecryptfs/Private.sig` ECRYPTFS_FNEK_SIG=`tail -1 ${ENCRYPTED_VOLUME}//../.ecryptfs/Private.sig` printf "%s" $MOUNT_PASSWORD | ecryptfs-insert-wrapped-passphrase-into-keyring ${ENCRYPTED_VOLUME}/../.ecryptfs/wrapped-passphrase mount -t ecryptfs -o key=passphrase:passfile=${PASSFILE},ecryptfs_sig=${ECRYPTFS_SIG},ecryptfs_fnek_sig=${ECRYPTFS_FNEK_SIG},ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n ${ENCRYPTED_VOLUME} ${MOUNT_POINT} 

您还需要在其中创建包含密码的文件,eCryptfs mount命令将使用此文件:

/家庭/ johnf /脚本/ ecryptfs_passphrase:

 passwd=secret_passphrase 

您需要修改几个文件的权限:

 chmod +x /home/johnf/scripts/automount_ecryptfs sudo chown root:root /home/johnf/scripts/mount_other_ecryptfs /home/johnf/scripts/ecryptfs_passphrase sudo chmod a=x /home/johnf/scripts/mount_other_ecryptfs sudo chmod 400 /home/johnf/scripts/ecryptfs_passphrase 

在创建脚本之前,您需要创建一个sudoers配置,以允许使用sudo执行安装脚本而无需输入您的sudo密码。

将以下内容添加到/ etc / sudoers(或/etc/sudoers.d中的文件)中。 您需要将johnf替换为您的用户名。 必须使用安装脚本的绝对路径。

 johnf ALL = NOPASSWD: /home/johnf/scripts/mount_other_ecryptfs 

最后一步是在登录时调用automount_ecryptfs脚本。

在Ubuntu Unity(可能还有gnome)上,使用Startup Applications小程序创建一个调用/ home / johnf / scripts / automount_ecryptfs的新启动程序。

要在登录时自动挂载第二个eCryptfs卷到bash shell,您需要修改〜/ .bashrc文件。 添加以下内容:

 /home/johnf/scripts/automount_ecryptfs 

使用此配置,您现在应该自动安装第二个eCryptfs卷。

在加密的主目录中创建脚本: ~/scripts/mount_storage.sh

 #!/bin/bash sudo cryptsetup open --type luks UUID=12e26119-0ee2-4eb4-bd40-d8a3547ecf0c storage --key-file ~/keys/storage_keyfile sudo mount /dev/mapper/storage /storage 

添加到“启动应用程序”:

 sh ~/scripts/mount_storage.sh 

添加到/etc/sudoers

 %sudo ALL= NOPASSWD: /sbin/cryptsetup open --type luks UUID=12e26119-0ee2-4eb4-bd40-d8a3547ecf0c storage --key-file * %sudo ALL= NOPASSWD: /bin/mount /dev/mapper/storage /storage 

您需要创建/storage挂载点并在上面的脚本中更改UUID(使用blkid查找)。

我担心这不会成为一个受欢迎的答案……

在不绕过加密本身的安全性的情况下,不可能自动挂载任何加密分区。

想想“ 自动 ”意味着什么,并了解自动意味着他们也会看到你的数据。