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:
/home/myUser/crypt
(voir ci-dessous)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é.
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.