Comando Linux runuser: esegue la shell con l’ID utente/gruppo specificato
Il comando runuser viene utilizzato per eseguire una shell con l’utente e l’ID gruppo specificati. Questo comando modifica l’ID utente e gruppo. Quando si desidera eseguire alcuni comandi come utente diverso, questo comando può essere utilizzato per cambiare utente. Questo comando è come il comando su, ma non richiede la password. Quindi solo l’utente privilegiato, ad esempio l’utente root, può eseguire questo comando con successo e passare a qualsiasi utente senza bisogno di password.
Questo comando è molto utile se usato negli script di shell. Questo perché è un comando non interattivo. Il comando Su non può essere utilizzato per gli script di shell perché richiede una password quando viene eseguito come qualsiasi utente diverso da root. Ma nel caso del comando runuser, fallisce semplicemente con un errore (per utenti senza privilegi). Poiché il comando runuser non esegue hook PAM e moduli di autenticazione, ha un sovraccarico inferiore rispetto a su.
il comando runuser
Ecco un esempio dell’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 login proprio come con il comando su. runuser – il comando ha lo stesso effetto. Cambia anche le variabili di 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 una shell personalizzata se non desideri 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