我修改了示例python脚本:
service = 'passwd'
if len(sys.argv) == 3:
user = sys.argv[1]
password = sys.argv[2]
else:
print 'error'
auth = PAM.pam()
auth.start(service)
if user != None:
auth.set_item(PAM.PAM_USER, user)
auth.set_item(PAM.PAM_CONV, pam_conv)
try:
auth.authenticate()
auth.acct_mgmt()
except PAM.error, resp:
print 'Go away! (%s)' % resp
except:
print 'Internal error'
else:
print 'Good to go!'
这有效,但要求我输入密码。我想改为验证作为参数传递的密码(sys.argv [2])。文档是不存在的,所以我该怎么做?
答案 0 :(得分:2)
缺少示例第一行。 提供的'pam_conv'函数向用户询问密码。 您必须定义自己的函数,返回一个常量密码:
def pam_conv(auth, query_list, userData):
return [(the_password,0)]
答案 1 :(得分:1)
当我找到交互式密码提示的解决方案时,我只找到了这个解决方案 python expect lib