Tom*_*man 22 encryption automount ecryptfs
当我登录时,会自动为我挂载一个加密的 /home 目录。我有第二个内部硬盘驱动器,我已经使用磁盘工具对其进行了格式化和加密。我希望它在我登录时自动挂载,就像我加密的 /home 目录一样。我该怎么做呢?
这里有几个非常相似的问题,但答案不适用于我的情况。最好在这里关闭/合并我的问题并编辑下面的第二个问题,但我认为它可能已被放弃(因此永远不会被标记为已接受)。
此解决方案不是一种安全的方法,它绕过了加密。
这个需要编辑fstab,这需要在启动时输入一个额外的密码。它不像挂载 /home 那样自动。
这个问题非常相似,但不适用于加密驱动器。该解决方案无法满足我的需求。
这是一个,但它用于 NTFS 驱动器,我的是 ext4。
如果解决方案需要,我可以重新格式化和重新加密第二个驱动器。我已将所有数据备份到别处。
joh*_*hnf 10
几年前我写这个答案时,这是实施解决方案的最佳方式。我现在建议您使用 mount.ecryptfs_private 来查看下一个答案。
我也在寻找一种自动挂载第二个 eCryptfs 卷的方法。以下脚本和配置修改集合将在登录时安全且自动地将您的卷挂载到 GUI 或 CLI。
有一个更好的解决方案正在创建中(尽管我认为还没有准备好在用户登录时自动安装,因此该脚本的保质期有限。):
太小的硬盘上的 ecryptfs - 如何将链接添加到加密中?
脚本的安全性取决于您的主目录是否使用 eCryptfs 进行加密,这样脚本和带有用于解开密码短语的密码的文件都会被加密。如果您在登录后让您的计算机解锁并打开 root shell,则可以访问密码,但是使用 sudo NOPASSWD 允许安全安装分区,而无需输入密码或将密码短语留在用户可读的文件中。
这些脚本的一个已知缺陷是您的第二个卷不会在注销时卸载,因此它不是特别适合多用户系统。
我的解决方案由几个部分实现,两个 shell 脚本,一个执行实际安装,另一个用作它的包装器。
这是验证目录是否已安装的包装脚本,如果没有,则它将使用 sudo 调用安装脚本:
/home/johnf/scripts/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
Run Code Online (Sandbox Code Playgroud)
该脚本调用 /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}
Run Code Online (Sandbox Code Playgroud)
您还需要创建一个包含密码的文件,该文件将由 eCryptfs mount 命令使用:
/home/johnf/scripts/ecryptfs_passphrase:
passwd=secret_passphrase
Run Code Online (Sandbox Code Playgroud)
您需要修改几个文件的权限:
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
Run Code Online (Sandbox Code Playgroud)
在创建脚本之前,您需要创建一个 sudoers 配置以允许使用 sudo 执行挂载脚本,而无需输入您的 sudo 密码。
将以下内容添加到 /etc/sudoers(或 /etc/sudoers.d 中的文件)。您需要用您的用户名替换 johnf。必须使用安装脚本的绝对路径。
johnf ALL = NOPASSWD: /home/johnf/scripts/mount_other_ecryptfs
Run Code Online (Sandbox Code Playgroud)
最后一步是在登录时调用 automount_ecryptfs 脚本。
在 Ubuntu Unity(可能还有 gnome)上,使用 Startup Applications 小程序创建一个新的启动程序,该程序调用 /home/johnf/scripts/automount_ecryptfs。
要在登录到 bash shell 时自动挂载第二个 eCryptfs 卷,您需要修改 ~/.bashrc 文件。添加以下内容:
/home/johnf/scripts/automount_ecryptfs
Run Code Online (Sandbox Code Playgroud)
有了这个配置,你现在应该自动挂载你的第二个 eCryptfs 卷。
rco*_*oup 10
以@johnf 的回答为基础,但改用mount.ecryptfs_private:
/home/bob/(例如在 SSD 上),使用 Ubuntu 的普通加密主目录魔术。/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
Run Code Online (Sandbox Code Playgroud)
mount.ecryptfs_private extra
Run Code Online (Sandbox Code Playgroud)
运行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)
Run Code Online (Sandbox Code Playgroud)
卸载:
sudo umount /media/hdd/bob_extra
Run Code Online (Sandbox Code Playgroud)
Create /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
Run Code Online (Sandbox Code Playgroud)
使其可执行 ( chmod +x),然后将其添加到/home/bob/.bashrc:
...
/home/bob/bin/automount_ecryptfs.extra
Run Code Online (Sandbox Code Playgroud)
然后也将它添加到 Gnome 的启动应用程序中。
您不再需要上述解决方案。
先决条件:
注意:此方法不如手动安装加密驱动器安全。如果有人可以物理访问您的计算机,您对 root 密码不小心,或者您的计算机有多个用户/访客帐户,则此方法不安全;当您注销但不关闭系统时,辅助驱动器会保持安装状态,因此其他用户可以看到其内容。
您现在拥有一个加密的硬盘驱动器,它会在您的计算机启动时自动安装。