web-dev-qa-db-ja.com

パスワードプロンプトでパスワードが表示されないので、LUKS暗号化ドライブの遅延マウント

Ubuntu MATE setup 18.04 LTS(GNU/Linux 4.15.0-23-generic x86_64)があります。残りは暗号化されないまま、暗号化された$ HOMEが必要です。さらに、zstd圧縮アルゴリズムでbtrfsを使用することにしました(「理由」はこの質問の範囲外です)。

PCの使用方法によります。復号化パスワードが必要になるまでインターネットを待つ必要があります。その時点で、パスワードはどのような形式でもユーザーに尋ねられます。

最初は、次の症状が発生しました。

/home/myUser全体を暗号化したままにすると、ログインできません。パスワードを入力した後、ハングします。タイムアウトが発生し、lightdmがログインを放棄するまで。別のttyを使用する場合、$ HOMEが「/」に変更されることを除いてハングします。

Fstabで$HOME内のどこかにマウントディレクトリを変更すると、通常ログインできますが、暗号化されたディレクトリにアクセスするときにパスワードを入力するプロンプトが表示されることはありません(実行中にディレクトリが表示されますがls)。

調査の後、私はそれを見つけました:

  1. ログインに成功したら、
  2. /home/myUser/crypt(以下を参照)にアクセスしてみてください
  3. 次に、ターミナルでsystemd-tty-ask-password-agent --queryを実行します。

入力待ちのパスワードがあります。

また、ターミナルを実行する代わりに、lightdmを停止してtty7に留まる場合、「systemd-tty-ask-password-agentツールでパスワードを入力してください!」というテキストが表示されることにも気付きました。が表示されます。
その時点で、そのttyでlightdmに戻ることはできません。代わりに、別のttyを使用してログインし、パスワードを入力する必要があります。マウントが完了し、すべてが正常に実行されています。

私の目的は、ディレクトリをマウントする必要があるときにGUIパスワードを要求することです。どのプログラムでもマウントを開始できますが、追加のツールを実行する必要なく、ユーザーにプロンプ​​トを視覚的に表示する必要があります。

コマンドプロンプトとパスワードのプロンプトを開始するcrypttabで使用するkeyscriptを作成しようとしましたが、起動に失敗していました。キーファイルがなかったからだと思います。


以下では、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オプションを削除しました。そのため、Xorgが開始されるまで、すべてのttyテキストが表示されます。

1
brunoais

ログイン時に挿入したパスワードを再利用してホームを暗号化するには、一度だけパスワードを入力して、1つの解決策は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"/>

1つのボリュームタグだけですべてを実行できる場合がありますが、バインドされたマウントを実行する必要があるため、できませんでした。

以下のような、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

私はこれらのそれぞれが個々に何をするかを正確に知りませんが、これは私が望むようにマウントが成功するためにそこにあるために必要なものです。

0
brunoais