Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/02/2017, à 14: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, à 16: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.
smile


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 résolu, 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, à 16: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, à 16: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
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, à 17: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, à 18: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
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, à 18: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