Debian

由 nodm/lightdm 啟動的 .xsession 中的 mount.ecryptfs_private 抱怨“掛載:沒有這樣的文件或目錄”

  • November 2, 2021

我試圖在系統啟動時自動解密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,然後呼叫我的腳本、重定向stdoutstderr到一個日誌文件進行調試。這件事不起作用,因為它輸出了這個:

...
+ /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配置文件,取決於您的顯示管理器)。

引用自:https://serverfault.com/questions/1082119