In modernem Linux werden in / etc / shadow
etc. gespeicherte Passwörter mit SHA-512 verschlüsselt. Vermeiden Sie beispielsweise in einer Docker-Datei beim Erstellen eines allgemeinen Benutzers in einem Container, ein einfaches Kennwort in der Datei zu haben.
Dockerfile
RUN useradd -p 'encrypted_password' accountname
Oder
Dockerfile
RUN echo 'accountname:encrypted_password' | chpasswd -e
Ich möchte auch ein Passwort wie setzen. In diesem Fall muss das Kennwort vorab mit SHA-512 verschlüsselt werden, und es werden verschiedene Methoden aufgeführt.
Es scheint jedoch, dass ** welche der verschiedenen Methoden verwendet werden kann, sehr stark von der Ausführungsumgebung abhängt **.
Abhängig von der Version von macOS, auf der sich der Host befindet, unterstützt die "crypt" -Funktion von "python" oder "perl" SHA-512 nicht oder "openssl", "htpasswd" unterstützt sie in der neuen Version, aber "CentOS7" Es scheint, dass die Standard-Versionen nicht unterstützt werden und dass sie je nach Fall ordnungsgemäß verwendet werden müssen. Ich glaube nicht, dass es möglich ist, die Methode abhängig von der Umgebung, in der das Image erstellt wird, einzeln zu finden und zu ändern. Deshalb habe ich ein Skript erstellt, das mehrere Methoden nacheinander ausprobiert. Der Speicherort der Datei ist wie folgt
Die folgende Verwendung wird angenommen.
Beispiel für die anfängliche Wasward-Einstellung
# useradd -p "$(./passwd_sha512encrypt -u worker)" worker
Enter password for worker:
Enter password again for check. :
Einstellungsbeispiel für erstelltes Konto
# ./passwd_sha512encrypt -f -u worker | chpasswd -e
Enter password for worker:
Enter password again for check. :
In diesen Beispielen werden Sie aufgefordert, über die Standardeingabe einzugeben. Da sich die erforderlichen Informationen für "useradd", nur das verschlüsselte Passwort, und für "chpasswd", das Paar aus Kontoname und verschlüsseltem Passwort, unterscheiden, wird die Ausgabe mit der Option "-f" umgeschaltet.
Ich glaube jedoch nicht, dass es möglich ist, die Tastatur in Container-Builds mehrmals einzugeben. Es ist realistisch, damit verschlüsselte Objekte zu speichern. Ich habe auch ein optionales Argument (-o Ausgabedatei
) festgelegt, um es in eine Datei auszugeben. Detaillierte Informationen finden Sie weiter unten.
Hilfeanzeige
% ./passwd_sha512encrypt -h
[Usage] % passwd_sha512encrypt [options] [username] [rawpassword]
[Options]
-o output : Set outputfile (default: stdout)
-u username : Set username
-p rawpassword : Set destenation
-f : Output username:encrupted_password
(Default output is encrupted_password only)
-q : Skip type-miss check
-v : verbose output
-d : debug output
-h : Show Help (this message)
Suchen Sie intern nach den Verzeichnissen in der Umgebungsvariablen "PATH" in der Reihenfolge "openssl", "htpassword", "PHP", "Python" (in der Reihenfolge von Version 3 → Version 2), "perl", Stellen Sie fest, ob SHA-512 unterstützt wird, und führen Sie es aus.
Wenn keiner von ihnen unterstützt wird, schlägt dies fehl. in diesem Fall. ** Die mit der Option -o
angegebene Ausgabedatei wird nicht erstellt **, daher unterscheidet sich das Verhalten von der Umleitung der Ausgabe dieses Skripts mit einer Shell. Da keine Datei der Größe 0 erstellt wird, ist es meiner Meinung nach einfach, die Verarbeitung zu beenden, indem die Dateiabhängigkeit mit "Makefile" verwendet wird.
Recommended Posts