script : connexion avec un autre utilisateur.

Avell Diroll avelldiroll at gmail.com
Sam 17 Juil 15:06:02 UTC 2010


On 17/07/10 15:36, Clément Février wrote:
> je suis entrain d'écrire un script pour automatiser certaines taches.
> Pour cela, j'ai besoin de me connecter avec un autre utilisateur.
> L'idée du script est en gros :
> #!/bin/sh
> $password
> su - $user
> maildirmake Maildir
> exit
> exit 0

hardcoder un mot de passe n'est _jamais_ une bonne idée ... cela pose 
des problèmes de sécurité, de pérennité du script (l'user peut changer 
de mot de passe à tous moment), ...

Pour remédier à cela on peut utiliser sudo :
sudo -i -u user script.sh

(Il n'a alors plus besoin de batailler avec su à l'intérieur du script)

Si l'on veut que la commande sudo -i -u ne demande pas de mot de passe, 
il faut configurer cela le fichier /etc/sudoers (attention, ce dernier 
ne s'édite qu'avec la commande visudo)

Si l'on veut que la commande /path/to/script.sh puisse être lancée par 
l'utilisateur "chef" en se substituant aux utilisateurs "esclave1", 
"esclave2" et "esclave3" sans avoir à entrer de mot de passe, il faut 
ajouter les lignes suivantes au fichier /etc/sudoers:

######################################################
User_Alias CHEF = chef
Cmnd_Alias SCRIPT = /path/to/script.sh
Runas_Alias ESCLAVES = esclave1, esclave2, esclave3
CHEF ALL=(ESCLAVES) NOPASSWD: SCRIPT
######################################################

CHEF, ESCLAVES et SCRIPT sont des variables dont on peut choisir le nom 
comme on veut.

Il suffit alors à "chef" de lancer la commande suivante :
sudo -i -u esclave1 /path/to/script.sh


Bonne continuation

Ju




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