su dans un script bash

Clément Février clement at forumanalogue.fr
Ven 30 Sep 10:24:12 UTC 2011


Quelle réactivité !

Vous aurez remarqué que le script, c'est pas mon truc, je préfère le c++

On 30/09/2011 11:28, Avell Diroll wrote:
> 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.

www-data crée un utilisateur via le script, c'est pourquoi le mot de
passe est présent dans le script, ensuite, le script doit créer un
compte mail avec : /usr/bin/maildirmake Maildir
Donc la commande doit être lancé par l'utilisateur qui vient d'être créé.

> "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

Ouai, je me suis rendu compte du problème assez rapidement, mais j'ai
arrangé mon code en fonction.

> 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.

Grâce aux messages précédents, j'ai commencé à construire la ligne à
mettre dans sudoers, mais je ne suis pas sûr de comprendre.

www-data ALL = NOPASSWD: (le_nouvel_utilisateur)/usr/bin/maildirmake

et donc dans mon script :

cd /home/du/nouvel/utilisateur
sudo -u $pseudo /usr/bin/maildirmake Maildir

Si j'ai bien compris, le premier terme correspond à l'utilisateur qui
lance le script, tout du moins le "sudo -u", ici www-data, pour toutes
les machine (ALL), pas de mot de passe (NOPASSD) pour la commande
/usr/bin/maildirmake (ou /usr/bin/maildirmake Maildir ?) exécutée par
le_nouvel_utilisateur, donc le compte qui vient d'être créer par www-data.
"le_nouvel_utilisateur" étant variable, comment faire ?

Clément




Plus d'informations sur la liste de diffusion ubuntu-fr