{{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