PAM audit_log_acct_message()失败:不允许操作&用户身份验证失败

时间:2013-03-12 20:38:38

标签: python linux authentication ubuntu pam

我在auth.log文件中的Ubuntu(13.04开发分支)上使用pam_python对vsftpd的用户进行身份验证时收到此错误,

vsftpd[1]: PAM audit_log_acct_message() failed: Operation not permitted

然后vsftpd说在尝试连接时密码错误。 以下是auth.log文件的完整部分:

vsftpd[1]: pam_auth.py(9): pam_sm_authenticate()
vsftpd[1]: pam_auth.py(9): get_user_base_dir()
vsftpd[1]: pam_auth.py(9): auth_user()
vsftpd[1]: pam_auth.py(9): get_user_base_dir()
vsftpd[1]: pam_auth.py(9): verify_password()
vsftpd[1]: pam_auth.py(5): LOGIN: dev
vsftpd[1]: PAM audit_log_acct_message() failed: Operation not permitted

现在,这根本不正常,当帐户LOGIN: dev经过适当的身份验证时会输出dev,因此它应该对我进行身份验证(或者python脚本应该发出错误)..这里是另一台具有完全相同配置的服务器的健康输出:

vsftpd[11037]: pam_auth.py(9): pam_sm_authenticate()
vsftpd[11037]: pam_auth.py(9): get_user_base_dir()
vsftpd[11037]: pam_auth.py(9): auth_user()
vsftpd[11037]: pam_auth.py(9): get_user_base_dir()
vsftpd[11037]: pam_auth.py(9): verify_password()
vsftpd[11037]: pam_auth.py(5): LOGIN: dev
vsftpd[11037]: pam_auth.py(9): pam_sm_acct_mgmt()
vsftpd[11037]: pam_auth.py(9): get_user_base_dir()
vsftpd[11037]: pam_auth.py(9): pam_sm_setcred()
vsftpd[11037]: pam_auth.py(9): get_user_base_dir()
vsftpd[11037]: pam_auth.py(5): /home/dev/downloads/

这个服务器唯一不同的是,它运行的是不同的内核(它来自与平时不同的数据中心),内核通常是:

Linux sb16 3.2.13-grsec-xxxx-grs-ipv6-64 #1 SMP Thu Mar 29 09:48:59 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

然而,我无法让pam工作的服务器上的内核是:

Linux sb17 3.8.0-12-generic #21-Ubuntu SMP Thu Mar 7 19:08:49 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

肯定会出现问题,但我可以在任何地方看到的唯一错误是audit_log_acct_message() failed消息。
当直接尝试python脚本时,它也输出成功:

$ pam_auth.py dev test
success

可能导致这种情况的原因是什么?我该如何解决它?绕过它?

2 个答案:

答案 0 :(得分:0)

我有同样的错误。

我从kernel.org编译了我的内核 我在最近4小时内尝试了很多内核。

现在我可以说Kernel 3.6.11是最后一个适合我的内核。 内核3.7.0,3.8.0和3.8.2不起作用。

使用内核3.6.2和3.6.11一切正常。

我使用的是OpenSuSe 12.2-1.5。 最新的包裹。 PAM版本为3.2.2

答案 1 :(得分:0)

这有效:

  • 安装新内核。
  • 从源代码编译vsftpd

(我从源代码安装了所有内核,所以也许你还需要内核源代码。)

现在应该工作。

如果您收到“响应:500 OOPS:priv_sock_get_cmd”错误, 在你的/etc/vsftpd.conf中输入“seccomp_sandbox = NO”。

希望有所帮助。

最好的问候 本尼迪克特

(这是使用OpenSuSe 12.2和内核3.8.2测试的)