Příkaz runuser se používá ke spuštění shellu se zadaným ID uživatele a skupiny. Tento příkaz změní ID uživatele a skupiny. Pokud chcete spouštět některé příkazy jako jiný uživatel, lze tento příkaz použít ke změně uživatele. Tento příkaz je jako příkaz su, ale nevyžaduje zadání hesla. Tento příkaz tedy může úspěšně spustit pouze privilegovaný uživatel, tj. uživatel root, který se může změnit na libovolného uživatele bez potřeby hesla.
Tento příkaz je docela užitečný při použití ve skriptech shellu. Je to proto, že se jedná o neinteraktivní příkaz. Příkaz su nelze použít pro skripty shellu, protože při spuštění jako jiný uživatel než root vyžaduje zadání hesla. Ale v případě příkazu runuser prostě selže a skončí s chybou (pro neprivilegovaného uživatele). Protože příkaz runuser nespouští háky PAM a ověřovací moduly, má menší režii než su.
příkaz runuser
Zde je příklad uživatele root spouštějícího příkaz 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
Aktuálního uživatele můžete zkontrolovat pomocí příkazu id. Nyní, když se neprivilegovaný uživatel pokusí provést tento příkaz:
[jack@redhat-server /]$ runuser jones
runuser: cannot set groups: Operation not permitted
S volbou -l nebo --login může být nový shell vytvořen jako přihlašovací shell stejně jako v případě příkazu su. runuser - příkaz má stejný účinek. Mění také proměnné prostředí. Proměnné jako PWD a PATH touto volbou mění své hodnoty.
[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
Můžete poskytnout svůj vlastní shell, pokud nechcete výchozí shell s volbou -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