我有用C编写的程序.它使用2个参数用户名/密码,并尝试使用PAM验证此用户.当我是root用户时它工作正常.当我是'普通'用户时,它适用于该用户,但不适用于另一个用户.我认为,这是由于使用了影子密码..
作为我正在使用的服务:
retval = pam_start("test", username, &local_conversation, &local_auth_handle);
Run Code Online (Sandbox Code Playgroud)
我将它添加到/etc/pam.d/test
#%PAM-1.0
auth required pam_unix.so shadow nullok
account required pam_unix.so
session required pam_unix.so
Run Code Online (Sandbox Code Playgroud)
请问你能帮帮我吗?非常感谢!
pam_start()接受一个结构参数(http://linux.die.net/man/3/pam_conv),您可以在其中设置用于获取密码的回调方法.由于我在调用pam_start之前已经有密码,所以我想知道是否有办法传递该信息而不是设置回调.