Toho lze dosáhnout velmi snadno:
#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"
Když aktuální uživatel není root, spusťte skript znovu pomocí sudo
.
Všimněte si, že používám sudo
zde místo su
. To proto, že umožňuje zachovat argumenty. Pokud používáte su
, váš příkaz by musel být su -c "$0 [email protected]"
což by poškodilo vaše argumenty, pokud mají mezery nebo speciální znaky shellu.
Pokud je váš shell bash, můžete se vyhnout externímu volání na whoami
:
(( EUID != 0 )) && exec sudo -- "$0" "[email protected]"
Můžete také zkontrolovat UID:
if [ $(id -u) != 0 ]; then
echo "You're not root"
# elevate script privileges
fi
Můžete zavolat samotný skript a zkontrolovat:
#! /bin/bash
if [ "root" != "$USER" ]; then
su -c "$0" root
exit
fi
...