使用ctypes,py3的Python PAM模块
项目描述
python-pam
Python pam模块支持py3(和py2)的Linux类型系统(!windows)
命令行示例
[david@Scott python-pam]$ python pam/pam.py
Username: david
Password:
Auth result: Success (0)
Pam Environment List item: XDG_SEAT=seat0
Pam Environment item: XDG_SEAT=seat0
Missing Pam Environment item: asdf=None
Open session: Success (0)
Close session: Success (0)
内联示例
[david@Scott python-pam]$ python
Python 3.9.7 (default, Oct 10 2021, 15:13:22)
[GCC 11.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pam
>>> p = pam.authenticate()
>>> p.authenticate('david', 'correctpassword')
True
>>> p.authenticate('david', 'badpassword')
False
>>> p.authenticate('david', 'correctpassword', service='login')
True
>>> p.authenticate('david', 'correctpassword', service='unknownservice')
False
>>> p.authenticate('david', 'correctpassword', service='login', resetcreds=True)
True
>>> p.authenticate('david', 'correctpassword', encoding='latin-1')
True
>>> print('{} {}'.format(p.code, p.reason))
0 Success
>>> p.authenticate('david', 'badpassword')
False
>>> print('{} {}'.format(p.code, p.reason))
7 Authentication failure
>>>
身份验证和权限
请注意,python-pam和所有执行身份验证的工具遵循以下两个规则
- 您有root(或特权访问权限):您可以检查任何账户的密码是否有效
- 您没有root权限:您只能检查运行工具的用户的用户名是否有效
如果您需要验证多个用户,您必须使用在某个阶段具有特权访问权限的身份验证堆栈。在Linux系统中,一个示例是使用SSSD。
典型的Linux安装使用/etc/shadow
与pam_unix.so
进行验证,这将启动/usr/bin/unix_chkpwd
以验证密码。这两个都是有意编写来满足上述两个规则的。您可以通过以下方式测试unix_chkpwd
的功能
将good
替换为正确的密码,将david
替换为您适当的用户名。
~$ mkfifo /tmp/myfifo
~$ (echo -ne 'good\0' > /tmp/myfifo & /usr/bin/unix_chkpwd david nullok < /tmp/myfifo ) ; echo $?
0
~$ (echo -ne 'bad\0' > /tmp/myfifo & /usr/bin/unix_chkpwd david nullok < /tmp/myfifo ) ; echo $?
7
~$ (echo -ne 'good\0' > /tmp/myfifo & /usr/bin/unix_chkpwd someotheruser nullok < /tmp/myfifo ) ; echo $?
9
项目详情
下载文件
下载适用于您平台上的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源分发
python-pam-2.0.2.tar.gz (11.4 kB 查看散列)
构建分发
python_pam-2.0.2-py3-none-any.whl (10.7 kB 查看散列)
关闭
python-pam-2.0.2.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 97235235ba9b82dbae8068d1099508455949b275f77273ca22fdbd8b1fb5d950 |
|
MD5 | 1ee6201b3a696d3e022d67643547496c |
|
BLAKE2b-256 | 6ada879f1c849e886b783239b8a4710daac73535ba2cfcf672ee4548543e3a74 |
关闭
python_pam-2.0.2-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 4ac51dd8953ac59aa45505882b565eef6a22e0423dcf25d63369902080416c20 |
|
MD5 | 4b9adc75fa9638b7e8dd62f311f1bbc0 |
|
BLAKE2b-256 | 9b2d9fbb3bd686a474d76fbd0b79abdcc016f3da760b1d1c2048bf4c611a4939 |