我正在尝试在系统启动时自动解密Private
用户内部的目录$HOME
。系统是 Debian GNU/Linux 10(实际上是 Raspbian,但我认为它在这方面没有什么不同),它使用无DM启动 Xorg。
编辑 1:我现在尝试在虚拟机中安装带有 Nodm 的干净 Debian 11,并且遇到了与下面描述的完全相同的问题。
Nodm 自动登录非特权用户,并运行$HOME/.xsession
启动脚本。
我有以下脚本,由.xsession 调用:
#!/bin/bash -x
# Original by Michael Halcrow, IBM
# Extracted to a stand-alone script by Dustin Kirkland
# Edited on 2021-10-28 by Lucio Crusca
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PD="Private"
WPF="$HOME/.ecryptfs/wrapped-passphrase"
MPSF="$HOME/.ecryptfs/$PD.sig"
if /sbin/mount.ecryptfs_private ; then
exit 0
fi
if [ -f "$WPF" -a -f "$MPSF" ]; then
if [ $(wc -l < "$MPSF") = "1" ]; then
if printf "%s\0" "$LP" | ecryptfs-unwrap-passphrase "$WPF" - | ecryptfs-add-passphrase -; then
echo Ok
else
echo incorrect LP
exit 1
fi
else
if printf "%s\0" "$LP" | ecryptfs-insert-wrapped-passphrase-into-keyring "$WPF" - ; then
echo Ok
else
echo incorrect LP
exit 1
fi
fi
/sbin/mount.ecryptfs_private
else
echo Setup error
exit 1
fi
exit 0
它是 的精简版/usr/bin/ecryptfs-mount-private
。它只执行相同的命令,但它期望 LP 环境变量包含密码,而不是以交互方式询问密码。
我将此脚本保存为$HOME/el-mount.sh
。当我的系统启动并启动 NoDM 时,它会执行 .xsession,然后调用我的脚本,将stdout
和重定向stderr
到日志文件进行调试。这个东西不起作用,因为它输出以下内容:
...
+ /sbin/mount.ecryptfs_private
mount: No such file or directory
但是,如果我通过连接到系统ssh
并运行相同的el-mount.sh
脚本,以在 NoDM 中配置的相同用户身份登录,该脚本可以完美运行。如果您想知道,LP 变量在两种情况下都正确设置(已在日志文件中检查)。
我已经尝试从 NoDM 切换到 lightdm-autologin-greeter,但得到的结果是一样的。
mount.ecryptfs_private
在自动登录期间调用时如何工作?
答案1
我终于搞清楚了。问题是Debian 错误 870126这仍然是开放的。除非有人修复它,否则你必须通过手动添加来解决这个问题:
session optional pam_keyinit.so force revoke
(/etc/pam.d/nodm
或其他pam
配置文件,取决于您的显示管理器)。