У меня есть установка ubuntu MATE 18.04 LTS (GNU/Linux 4.15.0-23-универсальный x86_64), я хочу иметь зашифрованный $HOME, в то время как остальное остается незашифрованным. Кроме того, я решил использовать btrfs с zstd алгоритмом сжатия ("почему" выходит за рамки этого вопроса).
Из-за того, как ПК будет использоваться. Существует потребность ожидать Интернета, пока пароль дешифрования не необходим, в которой точке, пароль можно спросить пользователю в любой форме.
Сначала, я встретился с этими признаками:
Если я оставляю целое /home/myUser
зашифрованный, я не могу войти в систему. После того, как я заполню пароль, меня оставляют, зависая.... Пока тайм-аута не происходит, и lightdm бросает входить в систему. Если я использую другой tty, меня также оставляют, зависая кроме $HOME, изменяется на "/"
Если я изменяюсь в fstab каталог монтирования к где-нибудь внутри $HOME
, Я могу обычно входить в систему, но мне никогда не дают подсказку для заполнения пароля, когда я хочу получить доступ к зашифрованному каталогу (хотя каталог видим при выполнении ls).
После расследования я узнал что:
/home/myUser/crypt
(см. ниже),systemd-tty-ask-password-agent --query
в терминале,существует пароль, ожидающий, чтобы быть заполненным.
Я также заметил, что, если вместо того, чтобы выполнить терминал, я просто останавливаю lightdm и остаюсь на tty7, текст "Вводит пароль с systemd-tty-ask-password-agent инструментом!" появляется.
В той точке я не могу возвратить к lightdm в этом tty. Вместо этого я должен использовать другой tty, чтобы войти в систему, заполниться, пароль и теперь смонтироваться завершился, и все работает правильно.
Моя цель состоит в том, чтобы иметь подсказку пароля GUI для пароля в то время, когда каталог должен быть смонтирован. Любая программа может инициировать монтирование, но мне нужен пользователь для получения подсказки явно без потребности выполнения дополнительных инструментов.
Я также пытался сделать a keyscript
использовать с crypttab, который инициировал бы командную строку и запросил бы пароль, но этому не удавалось запуститься. Я предполагаю, потому что не было никакого файла ключей.
Ниже, я использую noauto,x-systemd.automount
но я мог также использовать _netdev
и получите почти те же признаки как выше.
При использовании _netdev
, единственная разница - то, что подсказка пароля шифрования (как текст) вспышки на экране прямо прежде lightdm запускает 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 (чередуйте попытку, которая позволяет мне входить в систему):
/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
Примечание: В моих флагах запуска Linux я удалил splash
опция; из-за этого я вижу весь tty текст, пока Xorg не запускается.
Для многократного использования пароля, Вы вставляете при входе в систему и зашифровали дом, вводя пароль только однажды, одно возможное решение состоит в том, чтобы использовать pam_mount
https://wiki.archlinux.org/index.php/pam_mount
Во-первых, можно установить его использование apt install libpam-mount
Затем необходимо ли настроить pam_mount, что, как предполагается, снова использует пароль.
Для этого создайте файл в /etc/security/pam_mount.conf.xml
с содержанием следующим образом:
<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"/>
Вы можете делать все со всего одним тегом объема, но я не мог, поскольку я должен был сделать связанное монтирование.
Действительно обратите внимание, что Вы, возможно, должны использовать некоторые опции, устанавливаете как атрибуты volume
тег, такой как:
options="bind,rw,user,exec,suid,noauto,lazytime,relatime"
Можно узнать больше того, что каждый находится в mount
страницы руководства.
Наконец, создайте файл /etc/pam.d/system-login
и запишите следующее:
#%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
Я не знаю точно, что каждый из них делает индивидуально, но это - то, что я должен был иметь там, таким образом, монтирование успешно выполнится, как я хотел.