《NetBSD指南-17.4.4.交易》
发表于 : 2010-03-05 12:42
典型的PAM交易的生命周期如下所述。 注意,如果这些步骤中任何一个失败了,服务器将客户端汇报一条适当的错误信息并放弃此次交易。
- 如必要, 服务器通过一个PAM-most的独立机制获得仲裁人的凭据,通常由于这个机制被root, 或者 setuid 到root的用户启动。
- 服务器调用 pam_start(3) 来 初始化PAM库和指定其服务名称和目标帐号,以及注册一个合适的会话函数。
- 服务器获得有关交易的各类信息(诸如申请人的用户名和使用该用户名运行客户端的所在主机) 并使用pam_set_item(3)将其提交给PAM.
- 服务器调用 pam_authenticate(3) 来认证申请人。
- 服务器调用 pam_acct_mgmt(3) 来验证请求帐号的可用性及有效性。 如果密码正确但已过期, pam_acct_mgmt(3) 将返回 PAM_NEW_AUTHTOK_REQD 而不是 PAM_SUCCESS.
- 如果前一个步骤返回 PAM_NEW_AUTHTOK_REQD, 服务器现在调用 pam_chauthtok(3) 来强迫客户端更改请求帐号的认证令牌。
- 现在这个申请人已经被正确地认证了, 服务器调用 pam_setcred(3) 来建立请求帐号的凭据。 它能做这项工作是因为它扮演了仲裁人的角色,而且只有仲裁人的凭据。
- 一旦建立了正确的凭据, 服务器调用 pam_open_session(3) 来建立会话。
- 服务器现在执行任何客户端要求的服务, 提供给申请人一个shell.
- 一旦服务器完成对客户端的服务, 它调用 pam_close_session(3) 来关闭这个会话。
- 组后, 服务器调用 pam_end(3) 来 通知PAM库此会话已结束,它可以释放任何在此交易过程中分配的资源。