su dans un script bash

Snarf snarf at dahwa.fr
Ven 30 Sep 09:13:22 UTC 2011


Le vendredi 30 septembre 2011 à 11:08, Clément Février écrivait:
> Bonjour,

> 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"
oulala, je prends un xanax, je vais hurler dans les toilettes  et je reviens

.
.
.
.


voila, ça va mieux ;p

> Mais cette commande me retourne :
> su : doit être lancé à partir d'un terminal

Bah oui, c'est juste super unsecure et dangeureux ;p su ne se laissera
pas faire. Comme bash qui dropera ses privileges si il voit qu'il
interprete un script avec le SUID root ;p


> Je peux éventuellement ajouter /bin/su à /etc/sudoers puis lancer :
> sudo su
> su $pseudo -c "echo plop"
> exit


> Est-ce possible d'éviter cette étape et de passer directement le mot de
> passe en argument à su ?

que veux tu faire exactement ? en general, ce genre ce cas est tres
specifique. 

A priori, ajouter ta_commande aux sudoers avec l'option NOPASSWD sera
plus propre. Mais fait attention a ce que fait ta_commande, elle sera
executée en root 

exemple 
-------------------- cut here --------------------
some_user ALL = NOPASSWD: /bin/cat
-------------------- cut here --------------------

apres le user pourra faire une sudo cat sans demande de passwd 



Snarf

-- 
Ah ouais ? Hé bien si moi j'ai l'air d'un pédé, alors tout le monde dans ce
vaisseau a l'air d'un pédé ! C'est ce qui arrive quand on s'habille en
collants.
-- Spock




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