Підкажіть пароль під час завантаження із системою служби


16

Це стосується Arch Linux (та, можливо, інших використовуваних дистрибутивів systemd). Я хочу встановити розділ TrueCrypt під час завантаження. Зі старим sysvinit, це було досить прямо вперед зі сценарієм, який називав rc.local.

Я дійшов до моєї течії, захопивши нитку форуму Arch . Є ще один потік, де ця система-нитка розроблена як "мати рішення", проте мені не видно, що це насправді, і ОП має останню посаду, в якій зазначається, що він не зміг досягти своєї мети.

З цього погляду ця людина робить це, але шукала способу вимкнути повідомлення безперервного завантаження, поки він вводить пароль. Я розмістив там, а також просив, щоб він опублікував свій фактичний .serviceфайл.

Шукаючи зовсім небагато, люди згадують, що вони були успішними або що це можливо, але не уточнюйте, яке саме рішення було.

Я настільки сильний, щоб розблокувати розділ з командного рядка через systemdслужбу (що, в свою чергу, дає мені можливість автоматично демонтувати його при відключенні / перезавантаженні), але мені потрібно це робити вручну після входу в систему. Я ' буду дуже хотіти, щоб процес завантаження призупинився і запитав мене про пароль.

Ось мій поточний сценарій:

[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

Я залишив коментований матеріал [Unit], оскільки в якийсь момент я зіткнувся з пропозиціями, що він повинен бути там, але у мене були проблеми з цим. Згадане вище, здається, працює чудово після завантаження / входу в систему ... тільки не під час.


Наскільки я розумію, якщо ви не хочете, щоб вас переривали реєстрацію повідомлень, вам потрібно створити бар'єр у файлі блоку - це означає, що він вимагатиме, щоб усі сервіси, запущені до його закінчення (ініціалізація), і заблокуються будь-які служби, що працюють після нього. Це ви намагаєтесь досягти?
петерф

@peterph Я не думаю, що це має значення, якщо все, що вимагає TrueCrypt, працює до моменту отримання підказки. Інші речі не залежать від цього, оскільки це лише об'єм для зберігання файлів; таким чином, інші речі можуть завантажуватися у фоновому режимі під час введення пароля. В даний час я чекаю, щоб увійти, потім почати вручну sudo systemctl start truecrypt-vault, ввести suпароль, ввести пароль TC Volume, потім startx. Напевно, я міг запропонувати мені підказку пароля під час завантаження, щоб уникнути зайвих кроків після входу?
Генді

Це було моє значення, а власне і ваше (це навіть у темі питання) - отримати підказку під час введення пароля. Якщо ви не використовуєте подібне графічне завантаження plymouth, будь-яке запит пароля на консолі, ймовірно, буде втрачено в службах, що починаються паралельно.
петерф

Ой. Я думав, що ви запитуєте, чи потрібно мені припиняти послуги після того, як переконатися, що всі попередні сервіси почалися ... Я не впевнений і намагався відповісти якнайкраще. Я завантажуюся лише до runlevel 3 з текстовим входом та startxвручну. Немає менеджера входу. Але так, я робити потрібно зупинити завантажувальні повідомлення в той час як я вводжу текст, в іншому випадку це буде просто зникнути з екрану.
Хенді

8
Добре, systemd є агент, який може запитати пароль, тож ви можете поглянути в цьому напрямку.
петерф

Відповіді:


2
  • Напишіть сценарій обгортки і вставте його ExecStart=
  • З скрипту обгортки використовуйте systemd-ask-password <PROMPT>, читайте пароль з його stdout та подайте його до truecrypt будь-яким способом
  • Не забувайте execвикорінювати truecrypt з кінця сценарію, щоб не залишити зайвий процес башти

Це зробить systemd запит на пароль негайно (якщо ви запускаєте apache за допомогою systemctl) або використовуючи один з так званих агентів (є типові, які задають паролі на стіні або безпосередньо на консолі під час завантаження системи). Це найкраще, що ви можете зробити, щоб залишатися сумісними.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.