su dans un script bash
Clément Février
clement at forumanalogue.fr
Ven 30 Sep 10:32:23 UTC 2011
Trouvé !
www-data ALL = (ALL) NOPASSWD: /usr/bin/maildirmake
Ça fonctionne très bien. Merci !
Clément
On 30/09/2011 12:24, Clément Février wrote:
> 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