[LINUX] Le cryptage SHA-512 du mot de passe a été scripté pour pouvoir être automatisé sans trop se soucier de l'environnement d'exécution.

Motivation

Dans Linux moderne, les mots de passe stockés dans / etc / shadow etc. sont cryptés avec SHA-512. Par exemple, dans un Dockerfile, lors de la création d'un utilisateur normal dans un conteneur, évitez d'avoir un mot de passe simple dans le fichier.

Dockerfile


RUN useradd -p 'encrypted_password' accountname

Ou

Dockerfile


RUN echo 'accountname:encrypted_password' | chpasswd -e

Je souhaite également définir un mot de passe tel que. Dans ce cas, il est nécessaire de crypter le mot de passe avec SHA-512 à l'avance, et plusieurs méthodes sont répertoriées.

Cependant, il semble que ** laquelle des différentes méthodes peut être utilisée dépend beaucoup de l'environnement d'exécution **.

Par exemple, selon la version de macOS de l'hôte, la fonction crypt de python ou perl ne prend pas en charge SHA-512, ou ʻopenssl, htpasswd le prend en charge dans la nouvelle version, mais CentOS7` Il semble que les standards ne soient pas supportés, et il est nécessaire de les utiliser correctement selon les cas. Je ne pense pas qu'il soit possible de trouver et de changer la méthode une par une en fonction de l'environnement dans lequel l'image est construite, j'ai donc créé un script qui essaie plusieurs méthodes une par une. L'emplacement du fichier est le suivant

Comment utiliser

L'utilisation suivante est supposée.

Exemple de réglage initial de Wasward


# useradd -p "$(./passwd_sha512encrypt -u worker)" worker
Enter password for worker:
Enter password again for check. : 

Exemple de configuration pour un compte créé


# ./passwd_sha512encrypt -f -u worker   | chpasswd -e
Enter password for worker: 
Enter password again for check. : 

Pour ces exemples, vous serez invité à taper à partir de l'entrée standard. Puisque les informations requises sont différentes pour ʻuseradd, uniquement le mot de passe chiffré, et pour chpasswd, la paire de nom de compte et de mot de passe chiffré, la sortie est commutée avec l'option -f`.

Cependant, je ne pense pas qu'il soit possible de taper plusieurs fois au clavier dans les versions de conteneur. Il est réaliste de l'utiliser pour stocker des éléments chiffrés. J'ai également défini un argument optionnel (-o output-file) pour sortir dans un fichier. L'utilisation détaillée est ci-dessous.

affichage d'aide


% ./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)

mouvement

En interne, dans l'ordre ʻopenssl, htpassword, PHP, Python (version 3 → Version 2), perl, recherchez les répertoires inclus dans la variable d'environnement PATH` dans l'ordre, Déterminez s'il prend en charge SHA-512 et exécutez.

Si aucun d'entre eux n'est pris en charge, cela échouera. dans ce cas. ** Le fichier de sortie spécifié avec l'option -o n'est pas créé **, donc le comportement est différent de la redirection de la sortie de ce script avec un shell. Puisqu'un fichier de taille 0 n'est pas créé, je pense qu'il est facile d'arrêter le traitement en utilisant les dépendances de fichiers avec Makefile.

Recommended Posts

Le cryptage SHA-512 du mot de passe a été scripté pour pouvoir être automatisé sans trop se soucier de l'environnement d'exécution.
Tensorflow, il semble que même la valeur propre de la matrice puisse être automatiquement différenciée
Lisez l'image postée par flask afin qu'elle puisse être manipulée par opencv
J'ai essayé de l'étendre pour que la base de données puisse être utilisée avec le logiciel d'analyse de Wiire
[Django] Un simple résumé de la fonction de sortie du journal afin que même les débutants puissent la comprendre.