我需要对主机和NIS上的用户名进行简单的身份验证。
我用Python编写这段代码
我尝试使用PAM进行身份验证。为此,我下载了一个名为Python Pam的Python模块。
我使用的代码:
import pam
pam.authenticate('root',<password>,<service>)
其中<service>
是我在/etc/pam.d/中创建的配置文件
该文件包含以下代码
#%PAM-1.0
auth requisite pam_unix.so
此代码适用于某些主机提供正确答案,但不适用于其他主机
即使我使用login或sshd替换<service>
,如
pam.authenticate('root',<password>,'sshd')
对于某些主机上的正确密码,它仍然返回False。
所以有人知道为什么这不起作用。我不需要使用pam或任何模块。在unix中是否有任何可以从Python调用的命令,它只能验证用户名?并且最好适用于所有基于Unix的系统,包括Linux,Solaris,HP-UX,AIX。
感谢
答案 0 :(得分:1)
两者
pam.authenticate('myusername', 'mypassword', 'sshd')
和
pam.authenticate('myusername', 'mypassword')
登录在我的机器上运行正常。 pam
模块的文档几乎不存在,因此如果您正确配置了服务,我很难说。
答案 1 :(得分:1)
答案就在于您创建的/etc/pam.d/
文件中的第三个参数。
在不起作用的计算机上尝试此命令。是的,你必须是root或sudoer root。
# ldconfig -v |grep pam_unix.so
很可能符号链接不会导致来自pam_unix.so
的真正的pam共享库。添加它或将配置文件参数更改为ld
可用于查找链接的内容。