我尝试创建一个Python脚本来检查密码而不是我的计算机,因此我为此使用Python-Pam。问题是我不知道如何在Common-auth文件中使用脚本。
我尝试了:
auth required /home/gamzer/test-python-pam.py
,但它告诉我:
sudo: PAM unable to dlopen(/home/gamzer/test-python-pam.py): /home/gamzer/test-python-pam.py: invalid ELF header
这是我的脚本:
import pam
from getpass import getuser, getpass
if pam.authenticate(getuser(), getpass()):
print 'ok'
else:
print 'not ok'
首先 - 您不能将python代码用作PAM模块,必须是满足某些接口要求的代码。请参阅此处以获取更多信息。
另外 - 您在这里尝试的东西似乎是圆形的,使用PAM本身实现PAM功能。
您是否想
-
使用PAM检查需要验证密码的Python程序中的密码,或
-
实现一种新的身份验证方法,供系统使用?
在情况#2中,@dngrs完全正确 - 您不能那样做。
在#1的情况下,您不需要common-auth
文件中的任何内容。另外,要在Python代码中检查密码,我认为您需要创建一个PAM对象,因此看起来更像是这样:
import pam
from getpass import getuser, getpass
p = pam.pam()
if p.authenticate(getuser(), getpass()):
print 'ok'
else:
print 'not ok'
如Python-Pam Readme