mount.ecryptfs_private в.xsession, запущенном nodm/lightdm, жалуется на «mount:нет такого файла или каталога»

Я пытаюсь автоматически расшифровать каталог Privateвнутри пользователя $HOMEпри запуске системы. Это система Debian GNU/Linux 10 (, на самом деле Raspbian, но я предполагаю, что в этом отношении она ничем не отличается ), которая использует NoDM для запуска Xorg.

РЕДАКТИРОВАТЬ 1:Я попытался установить чистый Debian 11 с Nodm на виртуальной машине и столкнулся с точно такой же проблемой, описанной здесь ниже.

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работать при вызове во время автоматического входа в систему?

0
задан 29 October 2021 в 17:19
1 ответ

Наконец-то разобрался. Проблема заключается в ошибке Debian 870126 , которая все еще открыта. Пока кто-нибудь не исправит это, вам придется обойти это, вручную добавив:

 session    optional   pam_keyinit.so force revoke

в/etc/pam.d/nodm(или другой файл конфигурации pam, в зависимости от вашего диспетчера дисплея).

0
ответ дан 2 November 2021 в 12:48

Теги

Похожие вопросы