Runuser : comment exécuter une commande Linux avec un autre utilisateur ?
Qu'avons-nous dans la boîte ?
Sous Linux, comment exécuter une commande en tant qu’un autre utilisateur ? C’est ce que l’on va voir avec ce tutoriel avec la commande runuser !
Vous connaissez probablement la commande « sudo » qui sert à exécuter une commande avec des privilèges élevés à partir d’un utilisateur standard. Ceci évite d’utiliser le compte root pour les tâches d’administration. Comment faire si l’on souhaite exécuter une commande avec un autre utilisateur spécifique ?
1. Exécuter en tant que… avec runuser
Sous Linux, pour effectuer une action de type « Exécuter en tant que… » en se mettant dans la peau d’un autre utilisateur, il convient d’utiliser la commande runuser.
Pour utiliser cette commande, il y a plusieurs syntaxes possibles. Par exemple :
runuser -l NomUtilisateur -c '/chemin/vers/commande argument1 argument2' runuser -u NomUtilisateur -- commande argument1 argument2
Pour utiliser runuser, il est nécessaire de spécifier le nom d’utilisateur cible (que l’on souhaite utiliser pour exécuter la commande) et la commande à exécuter, avec ses éventuels arguments. L’option « -l » sert à spécifier l’identifiant de connexion, quasi-similaire à « -u » mais c’est la manière dont runuser va interagir avec le compte qui va changer. Ensuite, l’option « -c » sert à spécifier la commande à exécuter.
On va prendre l’exemple suivant : exécuter un script PHP en tant qu’utilisateur « www-data » qui est l’utilisateur associé au serveur Web Apache2 sur différentes distributions, notamment Debian et Ubuntu. Prenons l’exemple du script « /var/www/monsite/script-synchro.php » que l’on souhaite exécuter avec cet utilisateur.
runuser -u www-data -- php /var/www/monsite/script-synchro.php
Avec le compte www-data, il est indispensable d’utiliser cette syntaxe. Sinon, l’erreur « This account is currently not available. » s’affichera. Avec un autre compte, associé à un autre utilisateur du système par exemple, on pourra utiliser la première syntaxe évoquée en début d’article.
Par exemple :
runuser -l tutobox -c 'ls /var/www/monsite'
A vous d’utiliser l’une ou l’autre de ces deux syntaxes, en fonction de vos besoins. Si une méthode ne fonctionne pas, utilisez la seconde.
Enfin, sachez que pour utiliser runuser avec un utilisateur autre que root, il faut ajouter le préfixe « sudo » devant la commande. Ainsi, on obtient tout simplement :
sudo runuser -l tutobox -c 'ls /var/www/monsite'
Enfin, sachez qu’il y a aussi la possibilité d’utiliser la commande « su » plutôt que « runuser ». Si l’on reprend l’exemple précédent, ceci donne la commande suivante :
su - tutobox -c "ls /var/www/monsite"
2. Conclusion
Suite à la lecture de cet article de la boite à tutoriels, vous êtes capable d’exécuter une commande « en tant que » sur une machine Linux. Ici, c’est runuser qui a était utilisée, mais on peut aussi utiliser su et même sudo pour élever ses privilèges.
Ressources :