2010-07-06 11 views
11

Wie erstelle ich einen Benutzer in Linux mit Python? Ich meine, ich kenne das Subprozess-Modul und dachte darüber nach, 'adduser' aufzurufen und alle Parameter gleichzeitig zu übergeben, aber der Befehl 'adduser' stellt einige Fragen wie Passwort, vollständiger Name, Telefon und so weiter. Wie würde ich diese Fragen im Subprozess beantworten? Ich habe Modul namens Pexpect in dieser Frage gesehen: Can I use Python as a Bash replacement?. Gibt es ein anderes Standardmodul?Erstellen eines Benutzers in Linux mit Python

Antwort

19

Verwenden Sie useradd, es stellt keine Fragen, aber akzeptiert viele Befehlszeilenoptionen.

3

Sie könnten einfach die eingebauten Binaries verwenden, also rufen Sie einfach useradd oder etwas durch das Unterprozessmodul auf. Allerdings weiß ich nicht, ob es andere Module gibt, die sich in Linux einklinken, um solche Funktionalität zu bieten.

7

auf Ubuntu, könnten Sie die python-libuser Paket verwenden

+0

Ist das ein ubuntu-only-Paket? Muss ich dieses Paket manuell installieren, wenn ich es auf anderen Distributionen ausführen muss? – Salsa

+1

Sie sind wahrscheinlich besser dran mit 'useradd' für die Kompatibilität mit anderen Distributionen, aber beachten Sie, dass nicht garantiert ist, dass' useraddd 'auf allen Distributionen verfügbar ist. Puppy Linux Ich glaube, dass zum Beispiel standardmäßig useradd nicht dabei ist. – unutbu

2
import os 
import crypt 

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

wofür ist die Nummer 22? Ist das noch der richtige Weg, 2017 zu verschlüsseln? – answerSeeker

+0

22 ist ein Salz. Sie können zufällige Werte verwenden. Wenn Sie zusätzliche Sicherheit wollen, können Sie sha-256 oder sha-512 verwenden. – 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

Wie lautet die Nummer 22? Außerdem wäre subprocess besser als os.system? – answerSeeker

+0

@answerSucher es ist Salz. salt ist eine 2-stellige Zeichenfolge , die zur Auswahl einer der 4096 Varianten von DES verwendet wird. (von pydoc) – yanpas

+1

Entschuldigung für den Necrobump, aber Crypt kann ein Salz für Sie generieren, keine Notwendigkeit zu spezifizieren. Salz = crypt.mksalt (crypt.METHOD_SHA512) salthash = crypt.crypt (Passwort, Salz) siehe [hier] (https://docs.python.org/3/library/crypt.html#crypt. mksalt) für weitere Informationen. –

Verwandte Themen