【问题标题】:Adding a user with random password on debian 7 (fabric)在 debian 7 (fabric) 上添加具有随机密码的用户
【发布时间】:2013-09-25 17:10:27
【问题描述】:

我想使用fabric 在debian 7 上创建一个具有随机密码的新用户。

fabfile 看起来像这样:

import hashlib
import string
import random

def new_user(user):
    passwd = random_pass()
    passwd_sha512 = "%s" % hashlib.sha512(passwd).hexdigest()
    sudo("useradd %s --password %s" % (user, passwd_sha512))


def random_pass(size=30, chars=string.ascii_letters + string.punctuation):
    return ''.join(random.choice(chars) for x in range(size))

这里有什么问题?块大小? /etc/shadow 中也缺少加密类型($6$ 用于 sha512)。

我尝试用--password $6$%s将它添加到参数中。

有人能指出正确的方向吗?

【问题讨论】:

  • 在使用 sudo() 调用它之前打印出您的命令。如果您可以复制/粘贴打印的密码并运行它,那么正如 umläute 所暗示的那样,这是一个逃避问题。但是......我会避免尝试使用其他东西(如子流程)来制定解决方法,而无需首先完全理解失败。首先确认Fabric中失败的东西也直接在命令行上失败。另外,我会假设至少“某些”字符对于密码永远无效。您应该研究什么是可接受的密码字符,然后在 random_pass 中说明这一点。

标签: python linux debian shadow fabric


【解决方案1】:

您可能会发现crypt 模块更适合计算加密密码。

【讨论】:

    【解决方案2】:

    您的密码可能包含“奇怪”字符,这会使实际的 cmd 字符串不是您所期望的。使用subprocess.call(带有字符串数组)而不是单个字符串可能会更成功。

    import subprocess
    subprocess.call(['sudo',
                     'useradd',
                     '--password', passwd_sha512,
                     user])
    

    【讨论】:

      猜你喜欢
      • 2018-12-20
      • 2011-05-18
      • 2011-04-30
      • 1970-01-01
      • 2013-10-27
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      相关资源
      最近更新 更多