Je souhaite simplifier la création de paires de clés SSH pour mes
utilisateurs et j'ai donc créer (entre autre) la ligne suivante :
su utilisateur -c "ssh-keygen -qt dsa -N '' -C $USER -f ~/.ssh/$USER.dsa"
Mon problème, c'est que la variable $USER garde la valeur du compte qui
lance le su (root, dans mon cas) au lieu de prendre la valeur du compte
qui lance la commande (utilisateur, dans mon exemple).
Le plus troublant, c'est que la commande suite me renvoi le bon résultat :
su utilisateur -c "set | grep USER"
Avez-vous une explication et une solution à ce problème ? Car après avoir
bien cherché, je reste bloqué. :(
Merci d'avance pour vos avis éclairés.
--
Franck PIERRE : grand-pa@grand-pa.dyndns.org
Site SME-Fr : http://sme-fr.homelinux.net
Site photos : http://grand-pa.myphotos.cc
Ton shell va faire l'expansion du $USER en premier (les $VARIABLES entre guillemets doubles sont expansées), et su ne verra même pas qu'il y avait une variable ici.
Avez-vous une explication et une solution à ce problème ? Car après avoir bien cherché, je reste bloqué. :(
Essaye avec des guillemets simples. ou alors, met la variable qui correspond à ton utilisateur dans le shell appelant (le même que le « utilisateur » que tu met en premier argument de « su »).
Ton shell va faire l'expansion du $USER en premier (les $VARIABLES
entre guillemets doubles sont expansées), et su ne verra même pas
qu'il y avait une variable ici.
Avez-vous une explication et une solution à ce problème ? Car après
avoir bien cherché, je reste bloqué. :(
Essaye avec des guillemets simples. ou alors, met la variable qui
correspond à ton utilisateur dans le shell appelant (le même que le
« utilisateur » que tu met en premier argument de « su »).
Ton shell va faire l'expansion du $USER en premier (les $VARIABLES entre guillemets doubles sont expansées), et su ne verra même pas qu'il y avait une variable ici.
Avez-vous une explication et une solution à ce problème ? Car après avoir bien cherché, je reste bloqué. :(
Essaye avec des guillemets simples. ou alors, met la variable qui correspond à ton utilisateur dans le shell appelant (le même que le « utilisateur » que tu met en premier argument de « su »).
Ton shell va faire l'expansion du $USER en premier (les $VARIABLES entre guillemets doubles sont expansées), et su ne verra même pas qu'il y avait une variable ici.
En effet ! J'aurais dû y penser !
Essaye avec des guillemets simples. ou alors, met la variable qui correspond à ton utilisateur dans le shell appelant (le même que le « utilisateur » que tu met en premier argument de « su »).
J'avais bien pensé aux guillemets simples (quotes), mais je ne les avais mis qu'autour des variables, et pas autour de la commande.
[ ~]# su toto -c "echo '$USER'" root [ ~]# su toto -c 'echo $USER' toto
C'était bien ça. Merci beaucoup !
-- Franck PIERRE : Site SME-Fr : http://sme-fr.homelinux.net Site photos : http://grand-pa.myphotos.cc
Ton shell va faire l'expansion du $USER en premier (les $VARIABLES
entre guillemets doubles sont expansées), et su ne verra même pas
qu'il y avait une variable ici.
En effet ! J'aurais dû y penser !
Essaye avec des guillemets simples. ou alors, met la variable qui
correspond à ton utilisateur dans le shell appelant (le même que le
« utilisateur » que tu met en premier argument de « su »).
J'avais bien pensé aux guillemets simples (quotes), mais je ne les avais
mis qu'autour des variables, et pas autour de la commande.
[root@sme-v7 ~]# su toto -c "echo '$USER'"
root
[root@sme-v7 ~]# su toto -c 'echo $USER'
toto
C'était bien ça. Merci beaucoup !
--
Franck PIERRE : grand-pa@grand-pa.dyndns.org
Site SME-Fr : http://sme-fr.homelinux.net
Site photos : http://grand-pa.myphotos.cc
Ton shell va faire l'expansion du $USER en premier (les $VARIABLES entre guillemets doubles sont expansées), et su ne verra même pas qu'il y avait une variable ici.
En effet ! J'aurais dû y penser !
Essaye avec des guillemets simples. ou alors, met la variable qui correspond à ton utilisateur dans le shell appelant (le même que le « utilisateur » que tu met en premier argument de « su »).
J'avais bien pensé aux guillemets simples (quotes), mais je ne les avais mis qu'autour des variables, et pas autour de la commande.
[ ~]# su toto -c "echo '$USER'" root [ ~]# su toto -c 'echo $USER' toto
C'était bien ça. Merci beaucoup !
-- Franck PIERRE : Site SME-Fr : http://sme-fr.homelinux.net Site photos : http://grand-pa.myphotos.cc