Demander un mot de passe pendant le démarrage avec le service systemd

Ceci est pertinent pour Arch Linux (et peut-être d'autres dissortingbutions utilisant systemd ). Je veux monter une partition TrueCrypt au démarrage. Avec l'ancien sysvinit , c'était assez simple avec un script appelé par rc.local .

J'ai eu mon courant en détournant un fil de discussion Arch . Il y a un autre fil de discussion où l'on parle de «solution», mais ce n'est pas évident pour moi, et l'OP a le dernier post indiquant qu'il n'a pas été en mesure d'atteindre son objective.

D'après son apparence, cette personne le fait, mais cherchait un moyen de désactiver les messages de démarrage en continu pendant qu'il taperait le mot de passe. J'ai posté là aussi pour lui requestr de postr son file .service actuel.

En cherchant un peu, les gens mentionnent qu'ils ont été couronnés de succès ou que c'est possible, mais ne précisent pas exactement la solution.

Je suis en mesure de déverrouiller la partition à partir de la command line via un service systemd (qui à mon tour me donne la possibilité de le démonter automatiquement à l'arrêt / redémarrage), mais je dois le faire manuellement une fois connecté. 'aime vraiment le process de démarrage pour faire une pause et me requestr le mot de passe.

Voici mon script actuel:

 [Unit] Description=Truecrypt Setup for vault #DefaultDependencies=no #Conflicts=umount.target #Before=umount.target #After=systemd-readahead-collect.service systemd-readahead-replay.service #After=cryptsetup.target [Service] Type=oneshot RemainAfterExit=yes #StandardInput=tty-force ExecStart=/bin/sh -c '/usr/bin/truecrypt -t --protect-hidden=no -k "" --filesystem=none --slot=1 -p `systemd-ask-password "Enter password for truecrypt volume: "` /dev/sda4' ExecStop=/usr/bin/truecrypt --filesystem=none -d /dev/sda4 [Install] WantedBy=multi-user.target 

J'ai laissé les choses commentées dans [Unit] , car à un certain moment, je me suis heurtée à des suggestions selon lesquelles il devrait être là, mais j'ai eu des problèmes avec cela. Ce qui précède semble fonctionner correctement après le démarrage / connection … juste pas pendant.

  • Ecrire un script d'emballage et le mettre dans ExecStart=
  • Dans le script wrapper, utilisez systemd-ask-password <PROMPT> , lisez le mot de passe à partir de sa sortie standard et transmettez-le à truecrypt de la manière requirejse
  • N'oubliez pas d'exécuter truecrypt à la fin de votre script afin de ne pas laisser traîner un process bash supplémentaire

Cela fait que systemd interroge le mot de passe immédiatement (si vous démarrez apache en utilisant systemctl) ou en utilisant l'un des soi-disant agents (il y en a d'autres qui requestnt des passwords en utilisant le mur ou directement sur la console). C'est la meilleure chose que vous pouvez faire pour restr conforme.

J'ai trouvé ce message sur Unix StackExchange: rc.local avec read ne fera pas écho
Je pense que vous pourriez essayer la solution utilisée