Estou tentando descriptografar o Private
diretório dentro de um usuário $HOME
automaticamente na inicialização do sistema. O sistema é um Debian GNU/Linux 10 (na verdade um Raspbian, mas presumo que não seja diferente para este fim) que usa NoDM para iniciar o Xorg.
EDIT 1: Já tentei instalar um Debian 11 limpo com Nodm em uma máquina virtual e enfrento exatamente o mesmo problema descrito aqui abaixo.
O Nodm registra automaticamente o usuário sem privilégios e executa o $HOME/.xsession
script de inicialização.
Tenho o seguinte script, que está sendo chamado pelo .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
É uma versão simplificada do /usr/bin/ecryptfs-mount-private
. Ele executa apenas os mesmos comandos, mas espera que a variável de ambiente LP contenha a senha em vez de pedir a senha interativamente.
Salvei este script como $HOME/el-mount.sh
. Quando meu sistema inicializa e o NoDM é iniciado, ele executa .xsession que por sua vez chama meu script, redirecionando stdout
e stderr
para um arquivo de log para depuração. A coisa não funciona, na medida em que produz isso:
...
+ /sbin/mount.ecryptfs_private
mount: No such file or directory
No entanto, se eu me conectar ao sistema via ssh
e executar o mesmo el-mount.sh
script, logado como o mesmo usuário configurado no NoDM, o script funciona perfeitamente. Apenas no caso de você se perguntar, a variável LP está definida corretamente em ambos os casos (já verificada no arquivo de log).
Eu já tentei mudar de NoDM para lightdm-autologin-greeter, mas obtive o mesmo resultado.
Como faço para mount.ecryptfs_private
trabalhar quando chamado durante o login automático?
Finalmente resolvi. O problema é o bug Debian 870126 que ainda está aberto. Até que alguém o conserte, você terá que contornar isso adicionando manualmente:
para
/etc/pam.d/nodm
(ou outropam
arquivo de configuração, dependendo do seu gerenciador de exibição).