如何使用操作系统用户程序性地(Python)认证用户名/密码
我正在写一个Python程序,想让用户能够登录。我不想自己做身份验证,而是想利用操作系统(Linux)提供的机制。也就是说,当用户在我的应用程序中输入用户名和密码(这些应该是有效的操作系统用户)时,我需要通过操作系统来验证这些信息。请问该怎么做呢?可能需要用到subprocess模块,但我试过之后没有成功。
2 个回答
2
你可以让你的脚本读取 /etc/passwd
和 /etc/shadow
这两个文件,这些文件里包含了Linux系统中用户名和密码的详细信息。不过要注意,脚本需要有权限去读取这些文件,这在不同情况下可能会有不同的限制。
这里有两篇不错的文章,详细解释了这些文件的格式,里面的信息可以帮助你的脚本读取和理解这些文件:
顺便提一下,当提到 加密密码 时,是指使用DES算法进行加密的。你可能需要使用 pyDes 或其他Python实现的DES算法,这样你的脚本才能生成一个加密密码,并与 /etc/shadow
中的密码进行比较。
5
试试通过PAM来实现,使用Python PAM或者类似的工具。