page contents

如何在Python中使用第三方库来修改用户密码?

在Python中,可使用 pwd 和 crypt 等标准库(并非严格意义第三方库)结合来修改用户密码,在类Unix系统上较为适用。若真要使用第三方库, pwgen 库可用于生成强密码,结合 subprocess 调用系统命令修改密码。以下为示例:

attachments-2026-03-lPKU0gxE69a8dbe458d31.png在Python中,可使用 pwd 和 crypt 等标准库(并非严格意义第三方库)结合来修改用户密码,在类Unix系统上较为适用。若真要使用第三方库, pwgen 库可用于生成强密码,结合 subprocess 调用系统命令修改密码。以下为示例:

使用标准库结合方式
import pwd
import spwd
import crypt
import subprocess

def change_password(username, new_password):
    # 获取用户信息
    try:
        user = pwd.getpwnam(username)
    except KeyError:
        print(f"用户 {username} 不存在")
        return

    # 生成加密密码
    salt = crypt.mksalt(crypt.METHOD_SHA512)
    encrypted_password = crypt.crypt(new_password, salt)

    # 修改密码
    try:
        sp = spwd.getspnam(username)
        new_sp = (username, encrypted_password, sp[2], sp[3], sp[4], sp[5], sp[6])
        with open('/etc/shadow', 'r') as f:
            lines = f.readlines()
        with open('/etc/shadow', 'w') as f:
            for line in lines:
                if line.startswith(username + ':'):
                    f.write(':'.join(new_sp) + '\n')
                else:
                    f.write(line)
        print(f"用户 {username} 的密码已成功修改")
    except Exception as e:
        print(f"修改密码时出错: {e}")
你可以使用以下方式调用这个函数:

# 示例调用
change_password('testuser', 'newpassword123')
使用 pwgen 库结合 subprocess 方式
首先确保安装了 pwgen 库,可使用 pip install pwgen 安装。
import subprocess
from pwgen import pwgen
def change_password_with_pwgen(username):
    # 生成随机强密码
    new_password = pwgen(12, symbols=True)
    # 生成加密密码,假设使用mkpasswd命令

    generate_pass_command = f"echo {new_password} | mkpasswd -m sha -s - stdin"
    encrypted_password = subprocess.check_output(generate_pass_command, shell=True).decode('utf - 8').strip()
    # 修改密码
    change_pass_command = f"usermod --password {encrypted_password} {username}"
    try:
        subprocess.run(change_pass_command, shell=True, check=True)
        print(f"用户 {username} 的密码已成功修改为: {new_password}")
    except subprocess.CalledProcessError as e:
        print(f"修改密码时出错: {e}")

调用示例:
# 示例调用
change_password_with_pwgen('testuser')
第一种方法直接操作 /etc/shadow 文件,需要谨慎使用,操作不当可能导致系统问题。第二种方法通过 subprocess 调用系统命令,相对安全,但依赖系统命令 usermod 和 mkpasswd 等,不同系统可能有差异。同时,两种方法都需要以管理员权限运行Python脚本。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2026-03-05 09:28
  • 阅读 ( 38 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1920 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2228 文章
  3. Pack 1920 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章