su dans un script bash
Avell Diroll
avelldiroll at gmail.com
Ven 30 Sep 09:28:19 UTC 2011
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
Plus d'informations sur la liste de diffusion ubuntu-fr