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)。
調査の後、私はそれを見つけました:
/home/myUser/crypt
(以下を参照)にアクセスしてみてください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つの解決策は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
私はこれらのそれぞれが個々に何をするかを正確に知りませんが、これは私が望むようにマウントが成功するためにそこにあるために必要なものです。