手册页部分 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 密钥源属性设置为 passphrase,prompt,则在 pam_sm_setcred() 上,此模块将按如下方式管理密钥:

PAM_DELETE_CRED

尝试使用 umount 取消挂载文件系统并卸载密钥。该操作通常会失败,因为仍有某些进程使用用户起始目录作为当前工作目录。force 模块选项用于首先尝试强制取消挂载。

PAM_ESTABLISH_CRED

尝试使用 PAM_AUTHTOK 的值为 ZFS 数据集装入密钥并进行挂载。

如果 PAM_AUTHTOK 不是正确的口令短语,则系统将向用户发出一次提示,要求提供备用项。该值不会存储在 PAM_AUTHTOK 中,即使它是作为用户起始目录的 ZFS 数据集的正确口令短语。它等效于:

zfs key -l rpool/export/home/$USER

如果用户没有 ZFS 文件系统,但提供了 create 模块选项,则会创建一个新的 ZFS 文件系统。在这种情况下,ZFS 加密属性将缺省为 on,除非为该模块设置了 encryption= 属性以覆盖该值。

如果未提供 create 模块选项,并且用户也没有 ZFS 文件系统,则该模块将返回 PAM_IGNORE

新创建的 ZFS 文件系统会为创建该文件系统的用户指定以下 ZFS 委托:key,keychange,mount。在这种情况下,keysource 始终设置为 passphrase,prompt

如果在更改口令时调用 pam_sm_chauthtok(3PAM),该模块将尝试更改 ZFS 数据集的口令短语,以便与 PAM_AUTHTOK 中的值匹配。该操作等效于运行以下命令:

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 数据集位置。如果没有使用 aes-256-gcm 作为 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 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)

属性类型
属性值
接口稳定性
Committed(已确定)
MT 级别
MT-Safe with exceptions(多线程安全,但存在异常)。请参见下文。

libpam(3LIB) 中的接口仅在多线程应用程序中的每个线程都使用自己的 PAM 句柄时才是多线程安全的。

另请参见

zfs(1M)umount2(2)pam.conf(4)libpam(3LIB)pam(3PAM)pam_sm_chauthtok(3PAM)pam_sm_setcred(3PAM)attributes(5)