如何使用操作系统用户程序性地(Python)认证用户名/密码

8 投票
2 回答
4393 浏览
提问于 2025-04-17 02:02

我正在写一个Python程序,想让用户能够登录。我不想自己做身份验证,而是想利用操作系统(Linux)提供的机制。也就是说,当用户在我的应用程序中输入用户名和密码(这些应该是有效的操作系统用户)时,我需要通过操作系统来验证这些信息。请问该怎么做呢?可能需要用到subprocess模块,但我试过之后没有成功。

2 个回答

2

你可以让你的脚本读取 /etc/passwd/etc/shadow 这两个文件,这些文件里包含了Linux系统中用户名和密码的详细信息。不过要注意,脚本需要有权限去读取这些文件,这在不同情况下可能会有不同的限制。

这里有两篇不错的文章,详细解释了这些文件的格式,里面的信息可以帮助你的脚本读取和理解这些文件:

顺便提一下,当提到 加密密码 时,是指使用DES算法进行加密的。你可能需要使用 pyDes 或其他Python实现的DES算法,这样你的脚本才能生成一个加密密码,并与 /etc/shadow 中的密码进行比较。

5

试试通过PAM来实现,使用Python PAM或者类似的工具。

撰写回答