On cherche ici définir sous quel compte utilisateur la commande sera executée plutôt que d'utiliser l'utilisateur courant.
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"
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"