Eu tenho uma configuração ubuntu MATE 18.04 LTS (GNU/Linux 4.15.0-23-generic x86_64). Quero ter um $HOME criptografado enquanto o restante permanece não criptografado. Além disso, decidi usar btrfs com algoritmo de compactação zstd (o "porquê" está fora do escopo desta questão).
Devido a como o PC será usado. É necessário aguardar a Internet até que a senha de descriptografia seja necessária; nesse ponto, a senha pode ser solicitada ao usuário de qualquer forma.
No começo, encontrei estes sintomas:
Se eu deixar tudo /home/myUser
criptografado, não consigo fazer o login. Depois de preencher a senha, fico pendurado .... Até que o tempo limite aconteça e o lightdm desista de fazer login. Se eu usar um tty diferente, também fico pendurado, exceto que $HOME é alterado para "/"
Se eu mudar, em fstab o diretório de montagem para algum lugar dentro $HOME
de , posso fazer o login normalmente, mas nunca recebo a solicitação para preencher a senha quando desejo acessar o diretório criptografado (embora o diretório esteja visível ao fazer ls).
Após investigação, descobri que:
- se eu logar com sucesso,
- tente acessar
/home/myUser/crypt
(veja abaixo) - em seguida, execute
systemd-tty-ask-password-agent --query
em um terminal,
há uma senha esperando para ser preenchida.
Também notei que, se em vez de executar o terminal, eu apenas parar o lightdm e permanecer no tty7, o texto "Insira a senha com a ferramenta systemd-tty-ask-password-agent!" parece.
Nesse ponto, não consigo voltar ao lightdm naquele tty. Em vez disso, tenho que usar um tty diferente para fazer login, preencher a senha e agora a montagem foi concluída e tudo está funcionando corretamente.
Meu objetivo é ter um prompt de senha da GUI para a senha no momento em que o diretório precisa ser montado. Qualquer programa pode iniciar a montagem, mas preciso que o usuário obtenha o prompt visivelmente sem a necessidade de executar ferramentas extras.
Também tentei fazer um keyscript
para usar com o crypttab, que iniciaria o prompt de comando e solicitaria a senha, mas não estava iniciando. Eu acho que porque não havia nenhum arquivo de chave.
Abaixo, estou usando, noauto,x-systemd.automount
mas também poderia usar _netdev
e obter quase os mesmos sintomas acima.
Ao usar _netdev
, a única diferença é que o prompt de senha de criptografia (como texto) pisca na tela logo antes de o lightdm iniciar o Xorg.
/etc/fstab
/dev/mapper/encryptedHome /home/myUser btrfs user,noauto,x-systemd.automount,x-systemd.device-timeout=10,compress=zstd,lazytime,relatime 0 0
/etc/fstab (tentativa alternativa que me permite fazer o login):
/dev/mapper/encryptedHome /home/myUser/crypt btrfs user,noauto,x-systemd.automount,x-systemd.device-timeout=10,compress=zstd,lazytime,relatime 0 0
/etc/crypttab
encryptedHome UUID="92ab7f24-c744-4f1a-8363-c1fa157d1c12" - luks,noauto
Nota: Em meus sinalizadores de inicialização do Linux, removi a splash
opção; por causa disso, vejo todo o texto tty até que o Xorg seja iniciado.
Para reutilizar a senha que você inseriu ao fazer login e obter sua casa criptografada, digitando sua senha apenas uma vez, uma solução possível é usar pam_mount
https://wiki.archlinux.org/index.php/pam_mount
Primeiro, você pode instalá-lo usando
apt install libpam-mount
Então, você precisa configurar o pam_mount para reutilizar a senha.
Para isso, crie um arquivo em
/etc/security/pam_mount.conf.xml
com o seguinte conteúdo:Você pode fazer tudo com apenas uma tag de volume, mas não consegui porque precisava fazer uma montagem vinculada.
Observe que pode ser necessário usar algumas opções, definidas como atributos da
volume
tag, como:Você pode aprender mais sobre o que cada um é nas
mount
páginas de manual.Finalmente, crie o arquivo
/etc/pam.d/system-login
e escreva o seguinte:Eu não sei exatamente o que cada um deles faz individualmente, mas é isso que eu precisava ter lá para que a montaria funcionasse como eu queria.