我试图在系统启动时自动解密Private
用户内部的目录。$HOME
该系统是使用NoDM启动 Xorg 的 Debian GNU/Linux 10(实际上是 Raspbian,但我认为这与此没有什么不同)。
编辑 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
在自动登录期间调用时如何工作?