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 23/02/2016, à 21:21

Arbiel

[Résolu] bash et les variables d'environnement

Bonsoir

Toujours avare de frappe, je veux enregistrer dans un fichier /tmp/… mon mot de passe chiffré ainsi que la clé de chiffrement (recalculée à chaque session) pour ne pas avoir à le saisir systématiquement.

J'ai écrit pour cela, sans chiffrement du mot de passe, une première version de mon script bash, que je nomme "sudo.sh" :

#! /bin/bash
function ai_ai () {
# 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, pas encore chiffré
	local ai_fmp=${AI_FMP:-/tmp/.lathraios}
	local tmpf=$(tempfile) && touch "${tmpf}" ;
# programme de saisie du mot de passe, appelé par la variable d'environnement SUDO_ASKPASS de sudo
	local ask=$(tempfile) ;
	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}" 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 "${ask}" ;
# refus
	! ${valid} && return 1 ;
# execution de la commande passée en paramètre à sudo.sh
	[ $((${ai_nbp})) -eq 0 ] || eval sudo "${@}"
}
ai_ai "${@}" ;

Je pense que les commentaires sont suffisamment explicites pour en comprendre le fonctionnement.

Mes scripts sont enregistrés dans un répertoire "/…/scripts bash" que j'ai ajouté en fin de la variable d'environnement $PATH, sudo.sh compris.

J'ai par ailleurs défini des alias, tels que

alias s='sudo.sh '
alias sblkid='s blkid '
alias slvcreate='s lvcreate '
alias slvdisplay='s lvdisplay '
…

Ces alias fonctionnent. Par contre, mes lanceurs

Exec=sudo.sh mon_script.sh paramètres ;

ne fonctionnent pas et sudo me répond

sudo: mon_script.sh: command not found

Par contre en écrivant

Exec=sudo.sh "\"/…/scripts bash/mon_script.sh\"" paramètres ;

mes lanceurs fonctionnent.

Merci d'avance à quiconque voudra bien m'expliquer pourquoi la variable $PATH n'est pas prise en compte.

Arbiel

Dernière modification par Arbiel (Le 26/02/2016, à 16:24)


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

#2 Le 24/02/2016, à 19:03

helias

Re : [Résolu] bash et les variables d'environnement

Bonjour Arbiel,
Je ne sais pas trop non plus , j'avais d'abord pensé qu'il l’interprétait comme un paramètre, mais je me demande sutout si ce n'est pas dû au droit root ?
Je veux dire, le chemin d'accès ne serait plus le même que $user si tu lance le sudo.sh en premier non ?

Bon courage pour la suite,
Hélias

Hors ligne

#3 Le 25/02/2016, à 20:34

Arbiel

Re : [Résolu] bash et les variables d'environnement

Bonsoir

En écrivant

Exec=sudo.sh bash mon_script.sh

mes lanceurs fonctionnent.

Mais cela ne répond effectivement pas à ma question, qui reste d'actualité, et à laquelle je désespère un peu de recevoir une réponse.

Et l'invocation de bash, qui permet au lanceur de fonctionner, vient contredire ton hypothèse, par ailleurs fort plausible, relative au passage à l'utilisateur root.  bash ne devrait donc pas trouver mon script, pas plus du moins que le sudo de la dernière ligne de mon script.

Arbiel

Dernière modification par Arbiel (Le 25/02/2016, à 23:20)


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

#4 Le 26/02/2016, à 16:24

Arbiel

Re : [Résolu] bash et les variables d'environnement

Bonjour

Il s'agit en fait d'un problème de politique de sécurité. relatif à sudo

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