
Ich erstelle ein Skript zur vollständigen Automatisierung der VPS-Einrichtung und muss das Root-Passwort ändern. Ich möchte es nicht eingeben müssen, da das Skript über SSH ausgeführt wird.
Gibt es eine Möglichkeit, einen beliebigen Wert zur Befehlseingabe umzuleiten passwd
?
BEARBEITEN
Ich weiß, dass passwd < passwd_file.txt
das Passwort zweimal enthalten sein muss ... Ich wüsste gern, ob es einen eleganteren Weg gibt, da es ein wenig umständlich erscheint, für diesen Zweck eine temporäre Datei zu verwenden.
Antwort1
Sie sagen nicht, welche UNIX-Version Sie verwenden, aber unter Linux zeigt die Manpage von passwd(1):
--stdin
This option is used to indicate that passwd should read the new
password from standard input, which can be a pipe.
Sie müssen also lediglich Folgendes ausführen:
echo 'somepassword' | passwd --stdin
Bearbeiten, um hinzuzufügen: Portabler ist chpasswd
Folgendes, das (zumindest) sowohl auf Red Hat als auch auf Ubuntu vorhanden ist:
echo 'someuser:somepassword' | chpasswd
Siehe die Manpage.
Antwort2
Ich glaube, Sie werden es schwer haben, das zu tun, was Sie wollen. Der passwd
Befehl unternimmt große Anstrengungen, um genau die von Ihnen beschriebene Situation zu vermeiden, um alle Passwort-Rate-Schemata zu behindern und viele potenzielle Sicherheitsprobleme zu umgehen.
Können Sie den Befehl verwenden useradd
? Typisches Linux useradd
hat eine Option "-p" oder "--password", mit der Sie dasverschlüsseltPasswort auf einen bestimmten Wert. Sie können das verschlüsselte Passwort aus der Datei abrufen /etc/shadow
.
Die andere Möglichkeit besteht darin, mit der Datei herumzuspielen /etc/shadow
. Es sollte nicht zu schwer sein, sed
das gesalzene, verschlüsselte Root-Passwort zu ändern.
Antwort3
Ja! Habe den Weg gefunden. printf
Hat mich gerettet:
HOST=...
echo "Root password? " && read -r ROOT_PASSWORD
...
ssh root@$HOST <<EOF
printf "$ROOT_PASSWORD\n$ROOT_PASSWORD\n" | passwd
EOF
Das ist für mich der beste Ausweg: sauber und absolut sicher, da das Passwort niemals im Klartext auf den lokalen oder Remote-Host gelangt (nur über eine SSH-Verbindung).
Antwort4
Sie könnten tmux um passwd wickeln:
tmux new-session -ds chpwd passwd
tmux send-keys -t chpwd NEWPASSWORD$'\n'
tmux send-keys -t chpwd NEWPASSWORD$'\n'
Natürlich als Root ausführen.