2010-07-06 76 views
11

如何在Linux中使用Python创建用户?我的意思是,我知道子进程模块,并想过调用'adduser'并一次传递所有参数,但'adduser'命令会提出一些问题,如密码,全名,电话和内容。我将如何使用子流程回答这个问题? 我在这个问题中看到过模块pexpect:Can I use Python as a Bash replacement?。有没有其他标准模块?如何在Python中使用python创建用户

回答

19

使用useradd,它不会提出任何问题,但会接受许多命令行选项。

3

您可以使用内置的二进制文件,只需通过子进程模块调用useradd或其他东西即可。但是我不知道是否有任何其他模块挂钩到Linux中以提供此类功能。

7

在Ubuntu,你可以使用python-libuser

+0

这是一个只有Ubuntu的软件包?如果我需要在其他发行版上运行它,我是否需要手动安装此软件包? – Salsa 2010-07-07 13:30:16

+1

为了交叉分发的兼容性,你可能最好使用'useradd',但是请注意,即使'useradd'也不能保证在所有发行版上可用。 Puppy Linux我相信默认情况下不会使用useradd,例如。 – unutbu 2010-07-07 14:05:39

2
import os 
import crypt 

password ="[email protected]" 
encPass = crypt.crypt(password,"22") 
os.system("useradd -p "+encPass+" johnsmith") 
+1

22的数字是多少?这仍然是2017年加密的正确方法吗? – answerSeeker 2017-02-25 14:20:26

+0

22是一种盐。您可以使用随机值。如果您想要额外的安全性,您可以使用sha-256或sha-512 – mcolak 2017-02-27 07:00:22

2
def createUser(name,username,password): 
    encPass = crypt.crypt(password,"22") 
    return os.system("useradd -p "+encPass+ " -s "+ "/bin/bash "+ "-d "+ "/home/" + username+ " -m "+ " -c \""+ name+"\" " + username) 
+0

22的数字是多少?此外,子进程会比os.system更好吗? – answerSeeker 2017-02-25 14:38:24

+0

@answerSeeker它是盐。 salt是一个2个字符的字符串 ,它将用于选择DES的4096个变体之一。 (来自pydoc) – yanpas 2017-04-28 15:08:14

+1

对于necrobump感到遗憾,但隐窝可以为你生成一种盐,不需要指定。 盐= crypt.mksalt(crypt.METHOD_SHA512) salthash = crypt.crypt(密码,盐) 见[这里](https://docs.python.org/3/library/crypt.html#crypt。 mksalt)获取更多信息。 – 2018-01-29 17:32:44