0

我现在正在尝试 2 天来编写一个自定义 PAM 脚本,该脚本在 Linux 下使用 sys 用户进行身份验证并通过。

我用 C、Python 和 Perl 做了例子,但我对它们都有同样的问题。

当我在我的 shell 中测试脚本时,一切正常。

我用

# ./script;echo $?

并得到 0 或 1 回来。

但是一旦我尝试将它与 mod_authz_external 和 Apache 一起使用,它就会停止工作。

即使使用有效用户,我也会得到 1 并且无法登录。

似乎 PAM 有问题,也可能是 Apache 环境有问题。

我在某处读到我必须设置环境变量才能使用 PAM,但我不知道如何。

以下是 C、Perl 和 Python 中的示例:

C: http: //pastebin.com/v9Yn9xvK

Perl: http: //pastebin.com/cqzqztYg

Python: http: //pastebin.com/32cvvCjS

选择你喜欢的任何东西,它们的工作原理都是一样的……返回退出代码 0 或 1。

每一个帮助或提示将不胜感激。

谢谢!

4

1 回答 1

0

如果您使用 PAM 对系统用户进行身份验证,那么它将通过 libpam_unix.so。从 pam_unix 的联机帮助页:

提供了一个辅助二进制文件 unix_chkpwd(8),用于在用户密码存储在读保护数据库中时检查用户密码。这个二进制文件非常简单,只会检查调用它的用户的密码。

因此,如果您想从网络服务器对用户进行身份验证,您很可能以用户 'apache' 或类似的身份运行。pam_unix 可以为您做的就是验证用户“apache”,这很可能不是您想要的。pwauth 必须以某种方式绕过此限制。

于 2014-08-18T19:43:53.380 回答