延迟的 LUKS 加密驱动器安装,密码提示不明显询问密码

延迟的 LUKS 加密驱动器安装,密码提示不明显询问密码

我有一个 ubuntu MATE 设置 18.04 LTS (GNU/Linux 4.15.0-23-generic x86_64) 我想要一个加密的 $HOME,而其余部分保持未加密。此外,我决定使用带有 zstd 压缩算法的 btrfs(“为什么”超出了这个问题的范围)。

由于 PC 的使用方式,需要等待互联网连接,直到需要解密密码,此时,可能会以任何形式向用户询问密码。

一开始,我遇到了以下症状:

如果我把整个都/home/myUser加密了,我就无法登录。输入密码后,我就无能为力了……直到超时,lightdm 放弃登录。如果我使用不同的 tty,我也会无能为力,只是 $HOME 会更改为“/”

如果我在 fstab 中将挂载目录更改为内部的某个位置$HOME,我可以正常登录,但是当我想要访问加密目录时,系统从未提示我填写密码(尽管执行 ls 时该目录是可见的)。

经过调查,我发现:

  1. 如果我成功登录,
  2. 尝试访问/home/myUser/crypt(见下文)
  3. 然后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 文本。

答案1

为了重复使用登录时输入的密码并加密您的家,同时仅输入一次密码,一个可能的解决方案是使用pam_mount
https://wiki.archlinux.org/index.php/pam_mount

首先,你可以使用以下方式安装apt install libpam-mount

然后,您需要配置 pam_mount 以重新使用密码。
为此,创建一个文件,/etc/security/pam_mount.conf.xml内容如下:

<volume user="user" fstype="crypt" path="/dev/disk/by-partuuid/96au7f24-gbshmec6wwabhh30" mountpoint="/dev/mapper/user_home"/>
<volume user="user" fstype="auto" path="/dev/mapper/user_home" mountpoint="/home/user"/>

您可能只使用一个卷标签就可以完成所有操作,但我无法做到这一点,因为我需要进行绑定挂载。

请注意,您可能需要使用一些选项,设置为标签的属性volume,例如:

options="bind,rw,user,exec,suid,noauto,lazytime,relatime"

您可以在手册页中了解有关每个内容的更多信息mount

最后创建文件/etc/pam.d/system-login并写入以下内容:

#%PAM-1.0

auth       required   pam_tally.so         onerr=succeed file=/var/log/faillog
auth       required   pam_shells.so
auth       requisite  pam_nologin.so
auth       optional   pam_mount.so
auth       include    system-auth

account    required   pam_access.so
account    required   pam_nologin.so
account    include    system-auth

password   optional   pam_mount.so
password   include    system-auth

session    optional   pam_loginuid.so
session    optional   pam_keyinit.so       force revoke
session [success=1 default=ignore]  pam_succeed_if.so  service = systemd-user quiet
session    optional   pam_mount.so
session    include    system-auth
session    optional   pam_motd.so          motd=/etc/motd
session    optional   pam_mail.so          dir=/var/spool/mail standard quiet
-session   optional   pam_systemd.so
session    required   pam_env.so

我不清楚它们各自的具体功能,但这就是我所需要的,以便安装能够按照我的要求成功。

相关内容