
La commande runuser est utilisée pour exécuter un shell avec un utilisateur et un ID de groupe spécifiés. Cette commande modifie les identifiants d'utilisateur et de groupe. Lorsque vous souhaitez exécuter certaines commandes en tant qu'un autre utilisateur, cette commande peut être utilisée pour changer d'utilisateur. Cette commande est similaire à la commande su, mais elle ne demande pas de mot de passe. Ainsi, seul l'utilisateur privilégié, c'est-à-dire l'utilisateur root, peut exécuter cette commande avec succès et peut passer à n'importe quel utilisateur sans avoir besoin de mot de passe.
Cette commande est très utile lorsqu'elle est utilisée dans des scripts shell. C'est parce qu'il s'agit d'une commande non interactive. La commande su ne peut pas être utilisée pour les scripts shell car elle demande un mot de passe lorsqu'elle est exécutée en tant qu'utilisateur autre que root. Mais en cas de commande runuser, elle échoue et se termine avec une erreur (pour un utilisateur non privilégié). Comme la commande runuser n'exécute pas les crochets PAM et les modules d'authentification, elle a moins de frais généraux que su.
commande runuser
Voici un exemple d'utilisateur root exécutant la commande runuser :
[root@redhat-server /]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@redhat-server /]# runuser jack
[jack@redhat-server /]$ id
uid=501(jack) gid=501(jack) groups=501(jack),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh
Vous pouvez vérifier l'utilisateur actuel avec la commande id. Désormais, lorsqu'un utilisateur non privilégié essaie d'exécuter cette commande :
[jack@redhat-server /]$ runuser jones
runuser: cannot set groups: Operation not permitted
Avec l'option -l ou --login, le nouveau shell peut devenir un shell de connexion comme dans le cas de la commande su. runuser - la commande a le même effet. Il modifie également les variables d'environnement. Les variables comme PWD et PATH changent leurs valeurs avec cette option.
[root@redhat-server ~]# runuser - jones
[jones@redhat-server ~]$ id
uid=502(jones) gid=502(jones) groups=502(jones),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[jones@redhat-server ~]$ pwd
/home/jones
Vous pouvez fournir votre shell personnalisé si vous ne voulez pas de shell par défaut avec l'option -s :
[root@redhat-server ~]# echo $SHELL
/bin/bash
[root@redhat-server ~]# runuser -s /bin/sh jones
sh-3.2$ echo $SHELL
/bin/sh
sh-3.2$ id
uid=502(jones) gid=502(jones) groups=502(jones),504(javaproject) context=root:system_r:unconfined_t:SystemLow-SystemHigh