{{tag>sysadmin linux bash commande}}
====== Exécuter une commande sous un autre utilisateur ======
On cherche ici définir sous quel compte utilisateur la commande sera executée plutôt que d'utiliser l'utilisateur courant.
===== sudo =====
Sur la plupart des systèmes GNU/Linux, la commande **sudo** est disponible. Elle permet de faire cela simplement:
sudo -u utilisateur_cible "commande arg_1 arg_n"
===== su =====
Si sudo n'est pas disponible su permet de le faire:
su - utilisateur_cible -c "commande arg_1 arg_n"
Si l'utilisateur n'a pas de shell renseigné par défaut (cas de www-data par exemple) la commande **su** retourne le message d'erreur:
This account is currently not available.
Dans ce cas il faut définir le shell à utiliser via l'option **%%-s%%**:
su - utilisateur_cible -s /bin/bash -c "commande arg_1 arg_n"
===== Références =====
* https://serverfault.com/questions/388016/bash-scripting-su-to-www-data-for-single-command