Il comando runuser viene utilizzato per eseguire una shell con l'utente e l'ID gruppo specificati. Questo comando cambia gli ID utente e gruppo. Quando si desidera eseguire alcuni comandi come un altro utente, questo comando può essere utilizzato per modificare l'utente. Questo comando è come il comando su, ma non richiede la password. Quindi, solo l'utente privilegiato, ovvero l'utente root può eseguire questo comando con successo e può passare a qualsiasi utente senza bisogno di password.
Questo comando è abbastanza utile quando viene utilizzato negli script di shell. Questo perché è un comando non interattivo. Il comando Su non può essere utilizzato per gli script di shell poiché richiede una password quando viene eseguito come qualsiasi altro utente diverso da root. Ma in caso di comando runuser, fallisce ed esce con un errore (per utenti non privilegiati). Poiché il comando runuser non esegue hook PAM e moduli di autenticazione, ha un sovraccarico inferiore rispetto a su.
comando runuser
Ecco un esempio di utente root che esegue il comando 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
Puoi controllare l'utente corrente con il comando id. Ora, quando un utente senza privilegi tenta di eseguire questo comando:
[jack@redhat-server /]$ runuser jones
runuser: cannot set groups: Operation not permitted
Con l'opzione -l o --login, la nuova shell può essere trasformata in una shell di accesso proprio come nel caso del comando su. runuser - il comando ha lo stesso effetto. Cambia anche le variabili d'ambiente. Variabili come PWD e PATH cambiano i loro valori con questa opzione.
[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
Puoi fornire la tua shell personalizzata se non vuoi una shell predefinita con l'opzione -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