#1 Le 23/02/2016, à 20: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, à 15:24)
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
#2 Le 24/02/2016, à 18: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, à 19: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, à 22:20)
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
#4 Le 26/02/2016, à 15:24
- Arbiel
Re : [Résolu] bash et les variables d'environnement
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