PAM 消费方必须与 PAM 库 libpam 链接。应用程序使用模块提供的任何服务之前,必须通过调用 pam_start(3PAM) 初始化其 PAM 库的实例。调用 pam_start() 可初始化必须传递给所有后续 PAM 调用的句柄。应用程序完成使用 PAM 服务后,系统将调用 pam_end() 以清除 PAM 库已使用的任何数据。
PAM 应用程序与 PAM 模块之间的通信是通过项进行的。例如,以下各项有助于进行初始化:
PAM_USER-当前验证的用户
PAM_AUTHTOK-口令
PAM_USER_NAME-用户名提示
PAM_TTY-用户借此进行通信的终端
PAM_RHOST-用户借此进入系统的远程主机
PAM_REPOSITORY-对用户帐户系统信息库的任何限制
PAM_RESOURCE-对资源的任何控制
有关可用项的完整列表,请参见 pam_set_item(3PAM)。应用程序可以通过 pam_set_item(3PAM) 对项进行设置。应用程序可以通过 pam_get_item(3PAM) 检索模块已设置的值。但是,应用程序不能检索 PAM_AUTHTOK 和 PAM_OLDAUTHTOK。无法设置 PAM_SERVICE 项。