Python PAM 非交互式身份验证

Posted

技术标签:

【中文标题】Python PAM 非交互式身份验证【英文标题】:Python PAM non-interactive authentication 【发布时间】:2013-08-20 13:44:56 【问题描述】:

我已经修改了示例 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])。文档不存在,我该怎么办?

【问题讨论】:

【参考方案1】:

示例第一行丢失。 提供的“pam_conv”函数向用户询问密码。 您必须定义自己的函数返回一个常量密码:

def pam_conv(auth, query_list, userData):
    return [(the_password,0)]

【讨论】:

【参考方案2】:

当我在寻找交互式密码提示的解决方案时,我只找到了这个解决方案 python expect lib

【讨论】:

以上是关于Python PAM 非交互式身份验证的主要内容,如果未能解决你的问题,请参考以下文章

PAM“pam_unix.so”身份验证有时会失败

PAM 身份验证问题

Linux服务器安全策略配置-PAM身份验证模块

pam_tally2身份验证模块

XML-RPC 的非交互式身份验证/授权?

psql:致命:用户的 PAM 身份验证失败