2010-07-06 85 views
11

¿Cómo creo un usuario en Linux usando Python? Quiero decir, sé sobre el módulo de subproceso y pensé en llamar a 'adduser' y pasar todos los parámetros a la vez, pero el comando 'adduser' hace algunas preguntas como contraseña, nombre completo, teléfono y demás. ¿Cómo respondería a estas preguntas usando un subproceso? He visto un módulo llamado pexpect en esta pregunta: Can I use Python as a Bash replacement?. ¿Hay algún otro módulo estándar?Cómo crear un usuario en Linux usando python

Respuesta

19

Use useradd, no hace ninguna pregunta pero acepta muchas opciones de línea de comandos.

3

Podrías simplemente usar los binarios integrados así que solo llama a useradd o algo por el módulo de subproceso. Sin embargo, no sé si hay otros módulos que se enganchen en Linux para proporcionar tal funcionalidad.

7

En Ubuntu, se puede utilizar el paquete de python-libuser

+0

Es este un paquete ubuntu-solamente? Si necesito ejecutarlo en otras distribuciones, ¿tendré que instalar este paquete manualmente? – Salsa

+1

Probablemente esté mejor con 'useradd' para la compatibilidad de distribución cruzada, pero tenga en cuenta que incluso' useradd' no está garantizado para estar disponible en todas las distribuciones. Puppy Linux creo que no viene con useradd por defecto, por ejemplo. – unutbu

2
import os 
import crypt 

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

¿cuál es el número 22? ¿Sigue siendo esta la forma correcta de encriptar en 2017? – answerSeeker

+0

22 es una sal. Puedes usar valores aleatorios. Si desea mayor seguridad, puede usar sha-256 o sha-512 – mcolak

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

¿Cuál es el número 22? Además, ¿el subproceso sería mejor que el sistema oss? – answerSeeker

+0

@answerSeeker es sal. sal es una cadena de 2 caracteres que se utilizará para seleccionar una de 4096 variaciones de DES. (de pydoc) – yanpas

+1

perdón por el necrobump, pero crypt puede generar una sal para usted, sin necesidad de especificar. sal = crypt.mksalt (crypt.METHOD_SHA512) salthash = crypt.crypt (contraseña, sal) ver [aquí] (https://docs.python.org/3/library/crypt.html#crypt. mksalt) para más información. –

Cuestiones relacionadas