【问题标题】:howto get PAM authentication working with Apache and mod_authnz_external?如何使用 Apache 和 mod_authnz_external 获得 PAM 身份验证?
【发布时间】:2014-03-05 13:56:51
【问题描述】:

我现在正在尝试 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。

我们将不胜感激任何帮助或提示。

谢谢!

【问题讨论】:

  • 我最终根据自己的需要更改了 pwauth (code.google.com/p/pwauth) 的源代码。但我仍然很好奇为什么我的尝试不起作用。我想我会尝试将 pwauth 源代码与我的 C 解决方案进行比较...

标签: python c++ apache perl mod-auth


【解决方案1】:

如果您使用 PAM 对系统用户进行身份验证,那么它将通过 libpam_unix.so。来自 pam_unix 的手册页:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多