su dans un script bash
Ool
olas at no-log.org
Ven 30 Sep 14:59:50 UTC 2011
Le 30/09/2011 12:32, Clément Février a écrit :
> 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
>>
>
>
> www-data ALL = (ALL) NOPASSWD: /usr/bin/maildirmake
ça me parait super super dangereux en fait..
Plus d'informations sur la liste de diffusion ubuntu-fr