linux-pam / 1.1.2 / reference / mwg-expected-of-module-chauthtok.html

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

    • 密码服务未知的用户。