Debian
由 nodm/lightdm 啟動的 .xsession 中的 mount.ecryptfs_private 抱怨“掛載:沒有這樣的文件或目錄”
我試圖在系統啟動時自動解密
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
在自動登錄期間呼叫時如何工作?
我終於整理好了。問題是仍然存在的Debian 錯誤 870126。在有人修復它之前,您必須通過手動添加來解決它:
session optional pam_keyinit.so force revoke
到
/etc/pam.d/nodm
(或其他pam
配置文件,取決於您的顯示管理器)。