On 30/09/2011 11:08, Clément Février wrote:
Je cherche à utiliser su dans un script bash pour exécuter une commande.
Le mot de passe de l'utilisateur ne sera pas saisi durant l'exécution du
script. J'ai donc mis cette ligne dans mon script :
echo -e "${mdp}" | su $pseudo -c "echo plop"
hardcoder les mots de passe des users dans un script est une très
mauvaise idée, je ne pense que ce soit nécessaire de détailler pourquoi ici.
Mais cette commande me retourne :
su : doit être lancé à partir d'un terminal
Ce qui est rassurant, su ne se laisse pas faire.
Puis, le script continue sa vie sans exécuter la commande.
Je peux éventuellement ajouter /bin/su à /etc/sudoers puis lancer :
sudo su
su $pseudo -c "echo plop"
exit
"sudo su" is evil … soit tu utilises l'un, soit l'autre, mais le mélange
des deux donne des environnements hybrides qui peuvent résulter sur de
grosses bêtises:
http://doc.ubuntu-fr.org/sudo-annexe#differences_entre_sudo_-i_et_sudo_-s_et_pourquoi_il_est_preferable_de_ne_jamais_lancer_sudo_su
Enfin tu ne sembles pas connaître l'option "-u" de sudo qui te
permettrait ce genre de choses:
sudo -u $pseudo $command
et c'est pour $command qu'il faut ajuster les droits dans /etc/sudoers,
et si possible uniquement pour les utilisateurs concernés.
Est-ce possible d'éviter cette étape et de passer directement le mot de
passe en argument à su ?
Un mot de passe hardcodé est toujours une mauvaise idée.
Bonne journée
Ju
--
I never let my schooling interfere with my education.
- Mark Twain
--
Liste de diffusion ubuntu-fr [email protected]
Pour s'abonner ou se désabonner :
https://lists.ubuntu.com/mailman/listinfo/ubuntu-fr
Charte de la liste: http://doc.ubuntu-fr.org/groupes/ubuntu-fr-ml/charte