#1 Le 14/02/2017, à 13:48
- remi82
"Cacher" un mot de passe dans un shell
Bonjour,
J'utilise plusieurs scripts shell dans lesquelles j'indique en dur les mots de passe.
Par exemple avec la commande mount.
Je voulais savoir s'il existait un technique pour "cacher" le mot de passe ?
Je ne cherche pas forcément LA solution idéale.
En cherchant sur le net, j'ai vu du md5, mcrypt, etc... mais je n'ai pas trouvé et/ou réussi à obtenir ce que je cherche à faire.
Merci par avance.
Hors ligne
#2 Le 14/02/2017, à 15:03
- erresse
Re : "Cacher" un mot de passe dans un shell
Bonjour,
Je peux te suggérer un "truc" qui n'a rien de sécurisé, mais qui pourrait peut-être te suffire :
- Pour "cacher" une information aux yeux de quelqu'un lisant le script, tu peux faire écrire la ligne (ou une partie de la ligne) qui la contient avec la même couleur de police et de fond. On ne verra donc pas qu'il y a quelque chose d'écrit à cet endroit...
Oui, je sais, l'algorithme de cryptage est un peu faiblard avec cette astuce, mais on n'a pas forcément besoin de plus.
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#3 Le 14/02/2017, à 15:28
- remi82
Re : "Cacher" un mot de passe dans un shell
Bonjour erresse,
Effectivement, c'est une idée comme une autre. J'aurai préféré avec du cryptage ou autre.
Je te remercie.
Hors ligne
#4 Le 14/02/2017, à 15:36
- Arbiel
Re : "Cacher" un mot de passe dans un shell
Bonjour
Je chiffre mes partitions système et données, ce qui me donne une certaine latitude pour y enregistrer des fichiers confidentiels, en particulier mon mot de passe de connexion, sans que cela ne représente, à mon huméle avis, une faille trop importante de sécurité.
J'ai écrit un script "sudo" dans ~/bin, ainsi exécuté en priorité sur la commande sudo.
#! /bin/bash
############################################################################
# Sudo avec éventuelle mémorisation puis lecture du mot de passe sur un fichier
##############################################################################
shopt -s expand_aliases
[ -x ~/.bash_aliases ] && source ~/.bash_aliases;
function sudo () {
# paramètres pour le dialogue de saisie du mot de passe par zenity
local ai_titre="Authentification nécessaire"
local ai_ivc="Arrêt"
local ai_acc="Continuer"
# fichier de mémorisation du mot de passe, non chiffré
local ai_fmp=${AI_FMP:-~/.lathraios}
local ai_sudo="$(whereis -b sudo | cut -d " " -f 2)"
local tmpf=$(tempfile -m 660 -p ap_mp) && touch "${tmpf}" ;
# programme de saisie du mot de passe, appelé par la variable d'environnement SUDO_ASKPASS de sudo
local ask=$(tempfile -m 777 -p ap_su -s .sh) ;
local ai_nbp="${#}"
# enregistrement du programme de saisie du mot de passe dans le fichier $ask et d'affichage sur /dev/stdout
cat 1>"${ask}" <<AUIE
#! /bin/bash
touch "${ai_fmp}" ;
[ -s "${ai_fmp}" ] && cat "${ai_fmp}" || { zenity --password --title="${ai_titre}" --ok-label="${ai_acc}" --cancel-label="${ai_ivc}" 1>"${tmpf}" && chmod =400 "${tmpf}" && cat "${tmpf}"|| cat /dev/null ; } ;
AUIE
chmod u+x "${ask}" ;
valid=true ;
env SUDO_ASKPASS="${ask}" ${ai_sudo} -Av || valid=false ;
# mémorisation du mot de passe correct dans le fichier $ai_fmp
${valid} && ! [ -s "${ai_fmp}" ] && mv -T "${tmpf}" "${ai_fmp}" ;
rm "${tmpf}" "${ask}"
! ${valid} && return 1 ;
# exécution de la commande passée en paramètre à sudo
[ $((${ai_nbp})) -eq 0 ] || ${ai_sudo} "${@}"
}
sudo "${@}";
Comme on peut le voir, le dialogue utilisateur est géré par zenity.
L'adresse du mot de passe peut être passée dans la variable d'environnement AI_FMP, qui. par défaut, est le fichier ~/.lathraios (va savoir pourquoi ?). Le mot de passe est mémorisé en clair dans ce fichier, qui peut bien évidemment être dans /tmp, éventuellement en mémoire, ce qui le fait disparaître à chaque arrêt du PC.
Je constate à la relecture que je lis mon fichier d'alias, mais il me semble que je n'en utilise aucun, ce qui permet de supprimer les lignes qui précèdent la fonction.
Dis-moi si cela répond en quelque chose à ta demande.
Arbiel
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#5 Le 14/02/2017, à 16:32
- remi82
Re : "Cacher" un mot de passe dans un shell
Bonjour Arbiel,
J'avoue que là, je suis un peu largué. Je vais étudier tranquillement ton exemple et te tiens au courant.
Je te remercie.
Hors ligne
#6 Le 14/02/2017, à 17:38
- Arbiel
Re : "Cacher" un mot de passe dans un shell
Si tu ne veux pas te casser la tête, tu fais ainsi
- vérifie que tu as installé zenity (sudo apt-get install zenity ou qqch de comparable ou synaptic)
- définis un répertoire ~/bin dans ton espace personnel
- enregistre le script sous le nom sudo dans ~/bin (ou sous un autre nom si tu ne veux pas utiliser ce script à la place de la commande sudo lorsque tu passes des commandes par le terminal)
- enregistre ton mot de passe dans le fichier ~/.lathraios (fichier caché dans ton répertoire personnel)
- redémarre (pour que ton répertoire ~/bin se retrouve dans PATH)
- modifie ton script en remplaçant sudo par le nom que tu as choisi pour le script.
J'ai envisagé de chiffrer le fichier qui contient le mot de passe, mais il faut un mot de passe pour le déchiffrer. Cela ne m'a pas paru intéressant car je ne sais pas le déchiffrer autrement qu'en l'enregistrant en clair dans un fichier.
Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04, GNOME 3.36.8
24.04 en cours de tests
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.
Hors ligne
#7 Le 14/02/2017, à 17:59
- remi82
Re : "Cacher" un mot de passe dans un shell
Je vais essayer et te tiens au courant.
Je te remercie pour ton aide.
Hors ligne