如何以编程方式(python)使用操作系统用户authentication用户名/密码

我正在写一个Python程序,允许用户login到它。 我不想实现我自己的身份validation,但宁愿利用操作系统(Linux)的机制。 也就是说,当用户试图通过input用户名/密码对(这应该是一个有效的OS用户)login我的应用程序,我需要通过操作系统authentication对。 怎么做 ? 它可能需要subprocess模块,但我试过没有运气。

尝试使用PAM通过Python PAM或类似的

这应该可以通过让脚本读取/etc/passwd/etc/shadow文件,其中包含有关Linux系统上的用户名和密码的详细信息。 请注意,脚本将不得不有读取权限的文件,这取决于情况可能或不可能。

这里有两篇很好的文章解释了这些文件的格式,它们会告诉你一切你需要知道的事情,以便你的脚本能够阅读和理解它们:

  • 了解/ etc / passwd文件格式
  • 了解/ etc / shadow文件格式

顺便说一下,当谈到加密密码时 ,这意味着它已经使用DES算法加密了。 您可能需要使用pyDes或DES算法的其他python实现,以便您的脚本创建一个可以与/etc/shadow密码进行比较的加密密码。