web-dev-qa-db-fra.com

Montage retardé du lecteur LUKS avec mot de passe Invite ne demandant visiblement pas le mot de passe

J'ai un ubuntu MATE setup 18.04 LTS (GNU/Linux 4.15.0-23-generic x86_64) Je veux avoir un $ HOME chiffré tandis que le reste n'est pas chiffré. De plus, j'ai décidé d'utiliser btrfs avec l'algorithme de compression zstd (le "pourquoi" n'entre pas dans le cadre de cette question).

En raison de la façon dont le PC sera utilisé. Il est nécessaire d’attendre que le mot de passe de décryptage soit utilisé sur Internet, auquel cas le mot de passe peut être demandé à l’utilisateur sous n’importe quelle forme.

Au début, j'ai rencontré ces symptômes:

Si je laisse l'ensemble /home/myUser chiffré, je ne parviens pas à me connecter. Après avoir rempli le mot de passe, je suis suspendu ... Jusqu'à ce que le délai d'attente soit écoulé et que lightdm cesse de se connecter. Si j'utilise un tty différent, je suis également suspendu, sauf que $ HOME est remplacé par "/"

Si je change, dans fstab le répertoire de montage quelque part à l'intérieur de $HOME, je peux me connecter normalement mais je ne reçois jamais l'invite pour renseigner le mot de passe lorsque je souhaite accéder au répertoire crypté (bien que le répertoire soit visible lors de cette opération) ls).

Après enquête, j'ai découvert que:

  1. si je me connecte avec succès,
  2. essayez d'accéder à /home/myUser/crypt (voir ci-dessous)
  3. puis exécutez systemd-tty-ask-password-agent --query dans un terminal,

il y a un mot de passe en attente d'être rempli.

J'ai également remarqué que, si au lieu d'utiliser le terminal, j'arrêtais simplement lightdm et restais sur tty7, le texte "Entrez un mot de passe avec l'outil systemd-tty-ask-password-agent!" apparaît.
À ce stade, je ne peux plus revenir à lightdm dans ce tty. Au lieu de cela, je dois utiliser un autre terminal pour me connecter, entrer le mot de passe et maintenant, le montage est terminé et tout fonctionne correctement.

Mon objectif est d'avoir un mot de passe d'interface graphique pour le mot de passe au moment où le répertoire doit être monté. N'importe quel programme peut initier le montage, mais j'ai besoin que l'utilisateur obtienne l'invite de manière visible sans avoir besoin d'exécuter d'outils supplémentaires.

J'ai également essayé de créer un keyscript à utiliser avec crypttab, qui initialiserait les commandes Invite et Demander le mot de passe, mais le démarrage a échoué. Je suppose parce qu'il n'y avait pas de fichier de clés.


Ci-dessous, j'utilise noauto,x-systemd.automount mais je peux aussi utiliser _netdev et avoir presque les mêmes symptômes que ci-dessus.
Lorsque vous utilisez _netdev, la seule différence est que le mot de passe de chiffrement Invite (sous forme de texte) clignote à l'écran juste avant que lightdm ne lance 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 (essai alternatif qui me permet de me connecter):

/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

Note: Dans mes drapeaux de démarrage Linux, j'ai supprimé l'option splash; à cause de cela, je vois tout le texte tty jusqu'à ce que Xorg soit démarré.

1
brunoais

Pour pouvoir réutiliser le mot de passe que vous avez entré lors de la connexion et obtenir votre maison cryptée, en entrant votre mot de passe une seule fois, une solution possible consiste à utiliser pam_mount
https://wiki.archlinux.org/index.php/pam_mount

Tout d'abord, vous pouvez l'installer avec apt install libpam-mount

Ensuite, vous devez configurer pam_mount pour pouvoir réutiliser le mot de passe.
Pour cela, créez un fichier dans /etc/security/pam_mount.conf.xml avec le contenu suivant:

<volume user="user" fstype="crypt" path="/dev/disk/by-partuuid/96au7f24-gbshmec6wwabhh30" mountpoint="/dev/mapper/user_home"/>
<volume user="user" fstype="auto" path="/dev/mapper/user_home" mountpoint="/home/user"/>

Vous pouvez peut-être tout faire avec une seule balise de volume, mais je ne pouvais pas, car je devais faire un montage lié.

Notez que vous devrez peut-être utiliser certaines options, définies comme attributs de la balise volume, telles que:

options="bind,rw,user,exec,suid,noauto,lazytime,relatime"

Vous pouvez en apprendre davantage sur ce qu’est chacun dans les pages de manuel mount.

Enfin, créez le fichier /etc/pam.d/system-login et écrivez ce qui suit:

#%PAM-1.0

auth       required   pam_tally.so         onerr=succeed file=/var/log/faillog
auth       required   pam_shells.so
auth       requisite  pam_nologin.so
auth       optional   pam_mount.so
auth       include    system-auth

account    required   pam_access.so
account    required   pam_nologin.so
account    include    system-auth

password   optional   pam_mount.so
password   include    system-auth

session    optional   pam_loginuid.so
session    optional   pam_keyinit.so       force revoke
session [success=1 default=ignore]  pam_succeed_if.so  service = systemd-user quiet
session    optional   pam_mount.so
session    include    system-auth
session    optional   pam_motd.so          motd=/etc/motd
session    optional   pam_mail.so          dir=/var/spool/mail standard quiet
-session   optional   pam_systemd.so
session    required   pam_env.so

Je ne sais pas exactement ce que chacune de ces personnes fait individuellement, mais c'est ce que je devais avoir là-bas pour que le montage réussisse comme je le voulais.

0
brunoais