3.5. 身份验证令牌 Management
3.5.1. 修改认证令牌的服务功能
#include <security/pam_modules.h>
int pam_sm_chauthtok(
pamh,
flags,
argc,
argv);
pam_handle_t *pamh;
int flags;
int argc;
const char **argv;
3.5.1.1. DESCRIPTION
pam_sm_chauthtok
函数是服务模块对 pam_chauthtok(3)接口的实现。
此功能用于(重新)设置用户的身份验证令牌。
有效标志(可能与* PAM_SILENT *进行逻辑或)为:
-
PAM_SILENT
- 不要发出任何消息。
-
PAM_CHANGE_EXPIRED_AUTHTOK
- 此参数向模块指示仅当用户的身份验证令牌(密码)已过期时才应对其进行更改。该标志是可选的,并且必须与以下两个标志之一组合。但是请注意,以下两个选项是互斥。
-
PAM_PRELIM_CHECK
- 这表明正在探测模块的就绪状态,以更改用户的身份验证令牌。如果模块要求通过某个网络访问另一个系统,则应尝试在收到该标志后验证它是否可以连接到该系统。如果模块无法构建,则准备好更新用户的身份验证令牌,它应该返回* PAM_TRY_AGAIN *,此信息将传递回应用程序。
如果在密码堆栈中使用了控制值* sufficient ,那么控制值后面的模块的 PAM_PRELIM_CHECK *部分将不会始终执行。
-
PAM_UPDATE_AUTHTOK
- 这通知模块这是调用,应该更改授权令牌。如果该标志与* PAM_CHANGE_EXPIRED_AUTHTOK *进行逻辑或运算,则仅在令牌实际过期时才更改该令牌。
PAM 库连续两次调用此函数。第一次使用* PAM_PRELIM_CHECK ,然后,如果模块未返回 PAM_TRY_AGAIN ,则随后使用 PAM_UPDATE_AUTHTOK *。仅在第二次调用中更改授权令牌。
3.5.1.2. 返回值
-
PAM_AUTHTOK_ERR
- 模块无法获取新的身份验证令牌。
-
PAM_AUTHTOK_RECOVERY_ERR
- 模块无法获取旧的身份验证令牌。
-
PAM_AUTHTOK_LOCK_BUSY
- 由于身份验证令牌当前已锁定,因此无法更改。
-
PAM_AUTHTOK_DISABLE_AGING
- 身份验证令牌老化已禁用。
-
PAM_PERM_DENIED
- Permission denied.
-
PAM_TRY_AGAIN
- 初步检查失败。表示需要立即返回到应用程序。
-
PAM_SUCCESS
- 身份验证令牌已成功更新。
-
PAM_USER_UNKNOWN
- 密码服务未知的用户。