我有一个 ubuntu MATE setup 18.04 LTS (GNU/Linux 4.15.0-23-generic x86_64) 我想要一个加密的 $HOME 而其余的保持未加密。此外,我决定将 btrfs 与 zstd 压缩算法一起使用(“为什么”超出了这个问题的范围)。
由于 PC 的使用方式。需要等待互联网,直到需要解密密码,此时,可以以任何形式向用户询问密码。
起初,我遇到了这些症状:
如果我将整个/home/myUser
加密,我将无法登录。填写密码后,我一直挂着....直到超时发生并且 lightdm 放弃登录。如果我使用不同的 tty,除了 $HOME 更改为“/”之外,我也会挂起
如果我更改,在 fstab 中将挂载目录更改为内部某处$HOME
,我可以正常登录,但是当我想访问加密目录时,我从来没有提示填写密码(尽管在执行 ls 时该目录是可见的)。
经过调查,我发现:
- 如果我成功登录,
- 尝试访问
/home/myUser/crypt
(见下文) - 然后
systemd-tty-ask-password-agent --query
在终端中运行,
有一个密码等待填写。
我还注意到,如果不是运行终端,我只是停止 lightdm 并停留在 tty7 上,文本“请使用 systemd-tty-ask-password-agent 工具输入密码!” 出现。
那时,我无法回到那个 tty 中的 lightdm。相反,我必须使用不同的 tty 登录,填写密码,现在挂载已完成,一切运行正常。
我的目标是在需要挂载目录时为密码提供 GUI 密码提示。任何程序都可以启动挂载,但我需要用户在不需要运行额外工具的情况下明显地获得提示。
我还尝试keyscript
使用 crypttab 来启动命令提示符并提示输入密码,但它无法启动。我猜是因为没有密钥文件。
下面,我正在使用,noauto,x-systemd.automount
但我也可以使用_netdev
并获得与上述几乎相同的症状。
使用_netdev
时,唯一的区别是在 lightdm 启动 Xorg 之前,屏幕上会闪烁加密密码提示(文本)。
/etc/fstab
/dev/mapper/encryptedHome /home/myUser btrfs user,noauto,x-systemd.automount,x-systemd.device-timeout=10,compress=zstd,lazytime,relatime 0 0
/etc/fstab(允许我登录的替代尝试):
/dev/mapper/encryptedHome /home/myUser/crypt btrfs user,noauto,x-systemd.automount,x-systemd.device-timeout=10,compress=zstd,lazytime,relatime 0 0
/etc/crypttab
encryptedHome UUID="92ab7f24-c744-4f1a-8363-c1fa157d1c12" - luks,noauto
注意:在我的 linux 启动标志中,我删除了该splash
选项;因此,在 Xorg 启动之前,我会看到所有 tty 文本。
为了重复使用您在登录时插入的密码并加密您的家庭,同时只输入一次密码,一种可能的解决方案是使用pam_mount
https://wiki.archlinux.org/index.php/pam_mount
首先,您可以使用安装它
apt install libpam-mount
然后,您需要配置 pam_mount 应该重用密码的内容。
为此,创建一个文件,
/etc/security/pam_mount.conf.xml
其内容如下:您可能只需一个卷标签就可以完成所有操作,但我无法做到,因为我需要进行绑定安装。
请注意,您可能需要使用一些选项,设置为
volume
标签的属性,例如:mount
您可以在手册页中了解更多关于每一项的内容。最后,创建文件
/etc/pam.d/system-login
并编写以下内容:我不确切地知道这些中的每一个分别做了什么,但这是我需要的,这样安装就会如我所愿地成功。