Ich muss in der Lage sein, Benutzerkonten unter meinem Linux (Fedora 10) zu erstellen und automatisch ein Kennwort über ein Bash-Skript zuzuweisen (oder bei Bedarf auf andere Weise).
Es ist einfach, den Benutzer über Bash zu erstellen, z.
[whoever@server ]# /usr/sbin/useradd newuser
Ist es möglich, in Bash ein Passwort zuzuweisen, das funktionell ähnlich ist, aber automatisch:
[whoever@server ]# passwd newuser
Changing password for user testpass.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[whoever@server ]#
expect
Skript gelöst werden .Antworten:
Sie können den Befehl passwd ausführen und eine Pipeline-Eingabe senden. Also mach so etwas wie:
quelle
echo
Vorteil dieser Methode ist, dass sie sicher ist (vorausgesetzt, sie ist in die verwendete Shell integriert, was üblicherweise der Fall ist), zumindest was das betrifft/proc/
.echo -e "password\npassword\n" | passwd
am 13.04echo 'myuser:mypass' | chpasswd
. Hoffentlich hilft das.Sie können auch chpasswd verwenden :
Sie ändern also das Passwort für den Benutzer
username
innew_password
.quelle
$ apropos chpasswd
...chpasswd (8) - update passwords in batch mode
busybox
, währendpasswd
dies nicht der Fall ist (es gibt keine--stdin
Option).Ich habe mich das Gleiche gefragt und wollte mich nicht auf ein Python-Skript verlassen.
Dies ist die Zeile zum Hinzufügen eines Benutzers mit einem definierten Kennwort in einer Bash-Zeile:
quelle
useradd -p $(openssl passwd -1 $PASS) $USER
ist moderner, da Back-Ticks veraltet sind und$()
empfohlen werden.useradd -m -p <password> -s /bin/bash <user>
, -m Crates-Ausgangsverzeichnis, -s gibt an, dass Benutzer die Shell defualt, ersetzenpassword
unduser
für Ihre Anforderungen verwenden.useradd -m -p $(openssl passwd -1 -salt $SALT $PASS)
. Ich denke, dass dies bei späteren Ubuntus erforderlich ist.Der folgende Code funktionierte in Ubuntu 14.04. Versuchen Sie es, bevor Sie es in anderen Versionen / Linux-Varianten verwenden.
quelle
--gecos
Ich mochte Tralemonkeys Ansatz,
echo thePassword | passwd theUsername --stdin
obwohl er für mich nicht ganz so funktioniert hat, wie er geschrieben wurde. Dies funktionierte jedoch für mich.-e
ist\n
als neue Zeile zu erkennen .sudo
ist Root-Zugriff für Ubuntu.Die doppelten Anführungszeichen dienen zum Erkennen
$
und Erweitern der Variablen.Der obige Befehl übergibt das Passwort und eine neue Zeile zweimal an
passwd
, waspasswd
erforderlich ist.Wenn keine Variablen verwendet werden, funktioniert dies wahrscheinlich.
Einfache Anführungszeichen sollten hier ausreichen.
quelle
Das Folgende funktioniert für mich und wurde unter Ubuntu 14.04 getestet. Es ist ein Einzeiler, für den keine Benutzereingaben erforderlich sind.
Entnommen aus @Tralemonkey
quelle
Sie können die Option -p verwenden.
Leider müssen Sie das Passwort selbst hashen (wo passwd das für Sie erledigt). Leider scheint es kein Standarddienstprogramm zum Hashing einiger Daten zu geben, sodass Sie diese selbst schreiben müssen.
Hier ist ein kleines Python-Skript, das ich erstellt habe, um die Verschlüsselung für Sie durchzuführen. Angenommen, Sie haben es pcrypt genannt, dann schreiben Sie Ihre obige Befehlszeile an:
Ein paar Warnungen zu beachten.
und hier ist pcrypt:
quelle
Single Liner zum Erstellen eines Sudo-Benutzers mit Home-Verzeichnis und Passwort.
quelle
--stdin
funktioniert nicht unter Debian. Es sagt:Das hat bei mir funktioniert:
Hier finden wir einige andere gute Möglichkeiten:
quelle
Sie können Expect in Ihrem Bash-Skript verwenden.
Von http://www.seanodonnell.com/code/?id=21
quelle
Ich weiß, dass ich dieses Jahr später komme, aber ich kann nicht glauben, dass niemand Usermod vorgeschlagen hat.
Zur Hölle, nur für den Fall, dass jemand dies auf einem älteren HPUX tun möchte, können Sie es verwenden
usermod.sam
.Das -F wird nur benötigt, wenn die Person, die das Skript ausführt, der aktuelle Benutzer ist. Natürlich müssen Sie Perl nicht verwenden, um den Hash zu erstellen. Sie können stattdessen openssl oder viele andere Befehle verwenden.
quelle
Hier ist ein Skript, das es für Sie erledigt .....
Sie können eine Liste von Benutzern (oder nur einen Benutzer) hinzufügen, wenn Sie möchten, alles auf einmal und jeder hat ein anderes Passwort. Als Bonus erhalten Sie am Ende des Skripts eine Liste der Kennwörter der einzelnen Benutzer. .... Wenn Sie möchten, können Sie einige Benutzerwartungsoptionen hinzufügen
mögen:
zu dem Skript, das das Passwortalter festlegt und so weiter.
=======
===========
Hoffe das hilft.
Prost, Carel
quelle
Ich habe in meinem eigenen Shell-Skript getestet.
$new_username
bedeutet neu erstellter Benutzer$new_password
bedeutet neu PasswortFür CentOS
Für Debian / Ubuntu
Für OpenSUSE
quelle
Tralemonkeys Lösung hat fast auch für mich funktioniert ... aber nicht ganz. Am Ende habe ich es so gemacht:
2 wichtige Details, die seine Lösung nicht enthielt, das
-n
Echo verhindert,\n
dass dem zu verschlüsselnden Passwort ein hinzugefügt wird, und die einfachen Anführungszeichen schützen den Inhalt in meinem Fall davor, von der Shell (Bash) interpretiert zu werden.Übrigens habe ich diesen Befehl als Root auf einem CentOS 5.6-System ausgeführt, falls sich jemand wundert.
quelle
Die Lösung, die sowohl auf Debian als auch auf Red Hat funktioniert. Abhängig von Perl, verwendet Sha-512-Hashes:
Verwendung:
Es kann effektiv als Einzeiler verwendet werden, aber Sie müssen das Passwort, den Salt und den Benutzernamen an den richtigen Stellen selbst angeben:
quelle
Von IBM ( https://www.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.cmds1/chpasswd.htm ):
Erstellen Sie eine Textdatei, sagen Sie text.txt, und füllen Sie sie wie folgt mit Benutzer: Kennwort-Paaren:
Speichern Sie die Datei text.txt und führen Sie sie aus
Das ist es. Die Lösung ist (a) skalierbar und (b) beinhaltet nicht das Drucken von Passwörtern in der Befehlszeile.
quelle
quelle
Für RedHat / CentOS ist hier der Code, der einen Benutzer erstellt, die Passwörter hinzufügt und den Benutzer zu einem Sudoer macht:
quelle
Verwendung:
./my_add_user.sh USER PASSWD
Code:
quelle