マニュアルページセク ション 5: 標準、環境、マクロ

印刷ビューの終了

更新: 2014 年 7 月
 
 

pam_zfs_key(5)

名前

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() でこのモジュールは次のように鍵を管理します。

PAM_DELETE_CRED

ファイルシステムを umount し、鍵をロード解除しようとします。現在の作業ディレクトリとしてユーザーのホームディレクトリにまだプロセスがあるため、これは失敗することがあります。force モジュールオプションは、まず強制的なアンマウントを試みるために提供されています。

PAM_ESTABLISH_CRED

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 委任が必要です。

次のマウントオプションがサポートされています。

create

新しい ZFS データセットを作成します

encryption

create の ZFS 暗号化プロパティーを設定します

force

PAM_DELETE_CRED の実行時にデータセットの MS_FORCE で、umount2(2) を試みます。

homes=

ユーザーホームディレクトリの ZFS データセットの代替の場所。デフォルトは rpool/export/home です。

nowarn

エラーメッセージや警告を提供しないでください。

使用例 1 デフォルトモードでの pam_zfs_key の使用

次の例ではデフォルトモードで 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) を参照してください。

属性タイプ
属性値
インタフェースの安定性
確実
MT レベル
例外付きで MT-安全。下記を参照。

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)