我创建了一个自定义PAM模块,使用我的自定义身份验证方法登录Linux . 我的模块完成身份验证后,它会从db接收Linux用户帐户的实际用户名和密码(明文) .

现在我正在尝试使用以下命令设置用户名和密码:

pam_set_item(pamh, PAM_USER, user)pam_set_item(pamh, PAM_AUTHTOK, passwd) ,做完 pam_start("m_pamconf", user, &conv, &pamh) .

“m_pamconf”是我的pam配置文件,其中包含:

auth    pam_unix.so nullok_secure  use_first_pass

用户名已成功设置,但密码似乎不起作用,因为我收到了密码提示(当然,如果它需要我提供的密码,则不会发生这种情况) .

任何帮助表示赞赏 . 谢谢 .

当我使用 try_first_pass 标志时,我收到密码提示,如果我改为使用 use_first_pass ,模块只是失败并在调试日志中给出以下错误:

auth could not identify password for [username]

这是我的/etc/pam.d/sudo:

#%PAM-1.0

# my pam test
auth    requisite       pam_test.so

session    required   pam_env.so readenv=1 user_readenv=0
session    required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-auth
@include common-account
@include common-session-noninteractive

第一行使用我创建的模块,我尝试使用 pam_start("mypamd", user, &conv, &pamh) ,然后 pam_authenticate(pamh, 0) 使用pam_unix.so的auth方法验证用户,如上面"m_pamconf"中所述 .