「Dm-crypt/ログイン時にマウント」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
63行目: 63行目:
 
}}
 
}}
   
== アンマウント後ロック ==
+
== アンマウント後ロックする ==
   
アンマウント後もデバイスはアンロックされたままで、パスワードを再入力することなくマウントできます。デバイスがアンロックされたときに起動し ({{ic|1=BindsTo=dev-mapper-home\x2d''username''.device}})、デバイスがアンマウントされた後に終了 ({{ic|1=Requires,Before=home-''username''.mount}})、その過程でデバイスをロックする ({{ic|1=ExecStop=cryptsetup close}}) サービスを作成して [[有効化]] できます:
+
アンマウント後もデバイスはアンロックされたままであり、パスワードを再入力せずにマウントすることができてしまいます。デバイスがアンロックされたときに起動し ({{ic|1=BindsTo=dev-mapper-home\x2d''username''.device}})、その途中でデバイスをロックし ({{ic|1=ExecStop=cryptsetup close}})、デバイスがアンマウントされた後に終了する ({{ic|1=Requires,Before=home-''username''.mount}}) ようなサービスを作成して[[有効化]]することができます:
   
 
{{hc|/etc/systemd/system/cryptsetup-''username''.service|2=
 
{{hc|/etc/systemd/system/cryptsetup-''username''.service|2=
88行目: 88行目:
 
}}
 
}}
   
{{Note|{{ic|dev-''PARTITION''}} は、{{ic|systemd-escape -p /dev/''PARTITION''}} の結果です。}}
+
{{Note|{{ic|dev-''PARTITION''}} は、{{ic|systemd-escape -p /dev/''PARTITION''}} の出力結果です。}}

2023年11月5日 (日) 11:25時点における版

関連記事

PAM および systemd を設定して、所有者がログインしたときに dm-crypt 暗号化されたホーム パーティションを自動的にマウントし、ログアウト時にアンマウントするようにすることができます。

このチュートリアルでは、dm-crypt/root 以外のファイルシステムの暗号化 で説明されているように、暗号化されたパーティションがすでに作成されていることを前提としています。

ノート:
  • ユーザーアカウントと LUKS のパスワードは同じにする必要があります。
  • すべての例で、username をユーザー名に、1000 をユーザー ID に、PARTITION を次のように置き換えます。暗号化されたパーティションのデバイスの名前。

ログイン時にロックを解除する

pam_exec は、ログイン時にデバイスのロックを解除するために使用できます。/etc/pam.d/system-login を編集し、auth include system-auth の後に太字で強調された以下の行を追加します。

/etc/pam.d/system-login
...

auth       include    system-auth
auth       optional   pam_exec.so expose_authtok /etc/pam_cryptsetup.sh

...

次に、前述のスクリプトを作成します。

/etc/pam_cryptsetup.sh
#!/bin/sh

CRYPT_USER="username"
PARTITION="/dev/sdXY"
NAME="home-$CRYPT_USER"

if [ "$PAM_USER" = "$CRYPT_USER" ] && [ ! -e "/dev/mapper/$NAME" ]; then
    /usr/bin/cryptsetup open "$PARTITION" "$NAME"
fi

スクリプトを 実行可能属性 にします。

自動マウントとアンマウント

systemd-logind は、ユーザーに対して少なくとも 1 つのセッションがアクティブである限り、user@1000.service を維持します。最初のログイン成功後に自動的に開始され、最後のセッションからのログアウト後に停止されます。したがって、マップされたボリュームの systemd.mount(5) ユニットを作成して 有効化 し、それを user@1000.service に接続して、次のことを行い、自動的にマウントおよびアンマウントされるようにします。

/etc/systemd/system/home-username.mount
[Unit]
Requires=user@1000.service
Before=user@1000.service

[Mount]
Where=/home/username
What=/dev/mapper/home-username
Type=btrfs
Options=defaults,relatime,compress=zstd

[Install]
RequiredBy=user@1000.service

アンマウント後にロックする

アンマウント後もデバイスはアンロックされたままであり、パスワードを再入力せずにマウントすることができてしまいます。デバイスがアンロックされたときに起動し (BindsTo=dev-mapper-home\x2dusername.device)、その途中でデバイスをロックし (ExecStop=cryptsetup close)、デバイスがアンマウントされた後に終了する (Requires,Before=home-username.mount) ようなサービスを作成して有効化することができます:

/etc/systemd/system/cryptsetup-username.service
[Unit]
DefaultDependencies=no
BindsTo=dev-PARTITION.device
After=dev-PARTITION.device
BindsTo=dev-mapper-home\x2dusername.device
Requires=home-username.mount
Before=home-username.mount
Conflicts=umount.target
Before=umount.target

[Service]
Type=oneshot
RemainAfterExit=yes
TimeoutSec=0
ExecStop=/usr/bin/cryptsetup close home-username

[Install]
RequiredBy=dev-mapper-home\x2dusername.device
ノート: dev-PARTITION は、systemd-escape -p /dev/PARTITION の出力結果です。