我正在写一个PAM模块,它将用户名/密码写入文件以供其他应用程序进一步处理。我只看到了PAM_AUTHTOK项目,但我不确定它是哪种类型的。任何人都知道或以其他方式获取明文密码?如何使用PAM以明文方式检索用户密码?
回答
您是否阅读过Linux-PAM Application Developer's Guide?在RHEL类型的系统上,这将在/usr/share/doc/pam-devel-<version>/Linux-PAM_ADG.txt
中,或者您可以在online at various places上在线找到它。
看看获取PAM项目部分,其中记录了pam_get_item()
函数。你可以用PAM_AUTH_TOK
不断索要密码:
PAM_AUTHTOK
The authentication token (often a password). This token should be ignored by all module functions besides pam_sm_authenticate(3) and pam_sm_chauthtok (3). In the former function it is used to pass the most recent authentication token from one stacked module to another. In the latter function the token is used for another purpose. It contains the currently active authentication token.
如何只打印PAM_AUTHTOK的内容,当你正在调试?为了有意义地使用它,你必须在模块之间有某种契约或约定。顺便说一句:在内存中保留一个明文密码并尽快从那里擦除它(或者更好:在RAM中锁定该区域,或者加密交换),并将该明文密码写入磁盘。后者只是没有安全感,不这样做。
这是一个非常古老的线程,但也有pam_exec: https://linux.die.net/man/8/pam_exec
例如像在PAM配置如下:
auth sufficient pam_exec.so expose_authtok /usr/local/bin/myscript-example
的MyScript,例如内容,呼应所有的瓦尔出来:
#!/bin/sh
read password
echo "User: $PAM_USER"
echo "Ruser: $PAM_RUSER"
echo "Rhost: $PAM_RHOST"
echo "Service: $PAM_SERVICE"
echo "TTY: $PAM_TTY"
echo "Password : $password"
exit $?
那么,这可能是这样,但获得shell脚本编译为C程序会有点困难,除非我错过了一些明显的东西... –
@ DavidC.Rankin pam_exec允许您运行脚本并通过PAM相关的变量(因此$ PAM_USER等)。这有效地允许您使用OS支持的任何语言编写PAM模块。看看链接的文档,你会看到。 – Doug
- 1. 使用pam设置用户密码
- 2. PHP/PAM更改用户密码?
- 3. 使用crypt值检索用户密码
- 4. 如何使用用户名或客户ID检索密码
- 5. 如何使用VbaDiff检索VBA密码?
- 6. 检索用户ID以更改用户密码
- 7. 如何使用ECDH密码明文?
- 8. 如何以自动方式更改Exchange用户的密码
- 9. 如何以最便宜的方式确认用户密码
- 10. 如何以编程方式检查用户密码是否正确?
- 11. 使用用户名/密码以编程方式登录到Facebook
- 12. OpenLdap不会检索用户密码
- 13. 无法检索密码和用户名
- 14. 从数据库检索用户密码
- 15. 检索火鸟用户密码
- 16. 如何让LDAP搜索使用Kerberos票证以避免明文密码
- 17. 使用加密算法来存储和检索用户名和用户密码
- 18. 使用对话框以图形方式检索用户输入
- 19. 使用rails4和use_secure_password以明文形式存储密码摘要
- 20. 用于ssh的PAM模块:如何知道用户是使用密钥还是密码进行身份验证
- 21. 如何以加密形式存储用户名和密码?
- 22. 如何检查用户名和密码
- 23. 如何检查用户名和密码?
- 24. 在检索当前密码时更改asp.net用户密码
- 25. 使用声明式验证设置用户密码
- 26. 如何在其他课程中检索用户名和密码?
- 27. 忘记Oracle用户名和密码,如何检索?
- 28. 如何在UserDetailsService中检索用户输入的密码
- 29. 使用javascript从浏览器中检索用户名/密码
- 30. 登录使用休眠来检索用户名和密码
大多数(好)的认证系统不存储明文密码;他们散列或以其他方式加密传入的密码并存储该密码,并将其用于未来的比较。 – Joe
@Joe,这是真的,但你从交易的错误一面来看待这一点。 PAM是提示您输入密码并进行验证的部分;它不会“存储”密码。因此,PAM模块*可以访问明文密码(这可以使许多PAM模块上的use_first_pass选项起作用)。 – larsks
啊谢谢。 – Joe