我创建了一个自定义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"中所述 .