2

我需要对主机和 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

此代码适用于某些给出正确答案的主机,但不适用于其他主机
即使我<service>用 login 或 sshd 替换为

pam.authenticate('root',<password>,'sshd')

对于某些主机上的正确密码,它仍然返回 False。

那么有人知道为什么这不起作用。我不需要使用 pam 或任何模块。我可以从 Python 调用的 unix 中是否有任何命令可以验证用户名?并且最好在所有基于 unix 的系统上工作,包括 Linux、Solaris、HP-UX、AIX。
谢谢

4

2 回答 2

1

两个都

 pam.authenticate('myusername', 'mypassword', 'sshd')

 pam.authenticate('myusername', 'mypassword')

登录在我的机器上工作正常。该pam模块的文档几乎不存在,因此我很难说您是否正确配置了服务。

于 2011-01-03T20:33:59.137 回答
1

答案在于/etc/pam.d/您创建的文件中的第三个参数。

在它不起作用的机器上尝试这个命令。是的,您必须是 root 或 sudoer root。

# ldconfig -v |grep pam_unix.so

符号链接很可能不会从pam_unix.so. 添加它或将配置文件参数更改为ld可用于查找链接的内容。

于 2012-08-22T23:38:47.183 回答