3.2. 身份验证 Management
3.2.1. 用户认证服务功能
#include <security/pam_modules.h>
int pam_sm_authenticate(
pamh,
flags,
argc,
argv);
pam_handle_t *pamh;
int flags;
int argc;
const char **argv;
3.2.1.1. DESCRIPTION
pam_sm_authenticate
函数是服务模块对 pam_authenticate(3)接口的实现。
此功能执行验证用户的任务。
有效标志(可能与* PAM_SILENT *进行逻辑或)为:
-
PAM_SILENT
- 不要发出任何消息。
-
PAM_DISALLOW_NULL_AUTHTOK
- 如果此身份验证机制的身份验证令牌数据库为用户提供* NULL 条目,则返回 PAM_AUTH_ERR 。没有此标志,这样的 NULL *令牌将导致成功,而不会提示用户。
3.2.1.2. 返回值
-
PAM_AUTH_ERR
- Authentication failure.
-
PAM_CRED_INSUFFICIENT
- 由于某些原因,应用程序没有足够的凭据来验证用户身份。
-
PAM_AUTHINFO_UNAVAIL
- 模块无法访问身份验证信息。这可能是由于网络或硬件故障等引起的。
-
PAM_SUCCESS
- 身份验证令牌已成功更新。
-
PAM_USER_UNKNOWN
- 身份验证服务不知道提供的用户名。
-
PAM_MAXTRIES
- 一个或多个身份验证模块已达到尝试对用户进行身份验证的限制。不要再试一次。
3.2.2. 服务功能以更改凭证
#include <security/pam_modules.h>
int pam_sm_setcred(
pamh,
flags,
argc,
argv);
pam_handle_t *pamh;
int flags;
int argc;
const char **argv;
3.2.2.1. DESCRIPTION
pam_sm_setcred
函数是服务模块对 pam_setcred(3)接口的实现。
该功能执行相对于相应授权方案更改用户凭据的任务。通常,身份验证模块可能会访问比其身份验证令牌更多的有关用户的信息。此功能用于使此类信息可供应用程序使用。仅在用户通过身份验证之后但未构建会话之前,才应将其称为。
有效标志(可能与* PAM_SILENT *进行逻辑或)为:
-
PAM_SILENT
- 不要发出任何消息。
-
PAM_ESTABLISH_CRED
- 初始化用户的凭据。
-
PAM_DELETE_CRED
- 删除与身份验证服务关联的凭据。
-
PAM_REINITIALIZE_CRED
- 重新初始化用户凭证。
-
PAM_REFRESH_CRED
- 延长用户凭证的寿命。
独立于pam_sm_setcred
()返回代码的,用于评估pam_setcred
()函数调用的导航* auth 堆栈的方式与评估pam_authenticate
()库调用时的导航方式完全相同。通常,如果在评估pam_authenticate
()时忽略了堆栈条目,那么当 libpam 评估pam_setcred
()函数调用时,堆栈条目将被忽略。否则,来自每个模块特定pam_sm_setcred
()调用的返回代码将被视为 required *。
3.2.2.2. 返回值
-
PAM_CRED_UNAVAIL
- 该模块无法检索用户的凭据。
-
PAM_CRED_EXPIRED
- 用户的凭据已过期。
-
PAM_CRED_ERR
- 该模块无法设置用户的凭据。
-
PAM_SUCCESS
- 用户凭证已成功设置。
-
PAM_USER_UNKNOWN
- 该身份验证模块不认识该用户。
这些非* PAM_SUCCESS 返回值通常会导致凭证堆栈 failing *。第一个此类错误将以pam_setcred
()的返回值为主。