pam_zfs_key - ZFS の PAM ユーザー資格モジュール
pam_zfs_key.so.1 [create] [homes=]
pam_zfs_key モジュールは pam_sm_setcred(3PAM) および pam_sm_chauthtok(3PAM) を実装します。
pam_zfs_key モジュールはユーザーのホームディレクトリの場所にマウントされた暗号化ファイルシステムの ZFS 暗号化パスフレーズのロードと変更を許可する機能を提供します。認証サービスモジュールでは pam_sm_authenticate() と pam_sm_setcred() の両方を実装する必要があります。
このモジュールの pam_sm_authenticate() は常に PAM_IGNORE を返します。それらが別の場所に存在する場合、モジュールオプション homes= を使用して、それを指定できます。それは ZFS データセット名で、マウントポイントではなく、通常は /export/home/ になります。
ZFS データセット名の最後のコンポーネントは、PAM_USER の値、つまりユーザーログイン名に一致している必要があります。ユーザーホームディレクトリが、暗号化が有効にされているローカル ZFS ファイルシステムで、ZFS keysource プロパティーが passphrase,prompt に設定されている場合、pam_sm_setcred() でこのモジュールは次のように鍵を管理します。
ファイルシステムを umount し、鍵をロード解除しようとします。現在の作業ディレクトリとしてユーザーのホームディレクトリにまだプロセスがあるため、これは失敗することがあります。force モジュールオプションは、まず強制的なアンマウントを試みるために提供されています。
PAM_AUTHTOK の値を使用して、ZFS データセットの鍵をロードし、それをマウントしようとします。
PAM_AUTHTOK が正しいパスフレーズでない場合、ユーザーは 1 回代替を入力するように求められます。ユーザーホームディレクトリである ZFS データセットの正しいパスフレーズである場合でも、この値は PAM_AUTHTOK に保存されません。は、次のようなスクリプトと等価です。
zfs key -l rpool/export/home/$USER
ユーザーの ZFS ファイルシステムが存在せず、create モジュールオプションが指定されている場合、新しいファイルシステムが作成されます。モジュールに encryption= プロパティーが設定され、オーバーライドされていないかぎり、この例では、ZFS 暗号化プロパティーのデフォルトは on に設定されます。
create モジュールオプションが指定されておらず、ユーザーの ZFS ファイルシステムが存在しない場合、モジュールは PAM_IGNORE を返します。
新しく作成された ZFS ファイルシステムには、それが作成されたユーザーに ZFS 委任 (key,keychange,mount) が指定されます。これらの例では、keysource は常に passphrase,prompt に設定されます。
たとえば、パスワードの変更時に pam_sm_chauthtok(3PAM) が呼び出されると、このモジュールは PAM_AUTHTOK の値に一致するように ZFS データセットのパスフレーズを変更しようと試みます。これは次を実行することと同等です。
zfs key -c rpool/export/home/$USER
パスワード変更は通常ユーザーとして実行するため、これにはユーザーに keychange 委任が必要です。
次のマウントオプションがサポートされています。
新しい ZFS データセットを作成します
create の ZFS 暗号化プロパティーを設定します
PAM_DELETE_CRED の実行時にデータセットの MS_FORCE で、umount2(2) を試みます。
ユーザーホームディレクトリの ZFS データセットの代替の場所。デフォルトは rpool/export/home です。
エラーメッセージや警告を提供しないでください。
次の例ではデフォルトモードで pam_zfs_key を使用します。
gdm auth requisite pam_authtok_get.so.1 gdm auth required pam_dhkeys.so.1 gdm auth required pam_unix_cred.so.1 gdm auth required pam_unix_auth.so.1 gdm auth optional pam_zfs_key.so.1 other password required pam_dhkeys.so.1 other password requisite pam_authtok_get.so.1 other password requisite pam_authtok_check.so.1 other password required pam_authtok_store.so.1 other password optional pam_zfs_key.so.1使用例 2 代替の ZFS データセットの指定
次の例では、ホームディレクトリファイルシステムの代替の ZFS データセットの場所を指定しています。エントリが存在しない場合、ZFS 暗号化プロパティー設定として aes-256-gcm を使用して、新しいエントリを作成してください。
gdm auth requisite pam_authtok_get.so.1 gdm auth required pam_dhkeys.so.1 gdm auth required pam_unix_cred.so.1 gdm auth required pam_unix_auth.so.1 gdm auth optional pam_zfs_key.so.1 homes=tank/users \ create encryption=aes-256-gcm使用例 3 ZFS データセットのマウントを必須にする
次の例では、ZFS データセットのマウントを必須にし、パスフレーズが常にログインパスワードと同期するようにします。
gdm auth requisite pam_authtok_get.so.1 gdm auth required pam_dhkeys.so.1 gdm auth required pam_unix_cred.so.1 gdm auth required pam_unix_auth.so.1 gdm auth required pam_zfs_key.so.1 other password required pam_dhkeys.so.1 other password requisite pam_authtok_get.so.1 other password requisite pam_authtok_check.so.1 other password requisite pam_zfs_key.so.1 other password required pam_authtok_store.so.1
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
libpam(3LIB) のインタフェースは、マルチスレッドアプリケーション内部の各スレッドが独自の PAM ハンドルを使用する場合にのみ、「MT- 安全」です。
zfs(1M), umount2(2), pam.conf(4), libpam(3LIB), pam(3PAM), pam_sm_chauthtok(3PAM), pam_sm_setcred(3PAM), attributes(5)