Sto scrivendo uno script di shell, che deve essere eseguito con i privilegi di root.
Posso verificare se un utente ha i privilegi di root con sudo -nv || echo "no sudo"
, ma questo non mi aiuta, se le sue credenziali sono ancora memorizzate nella cache da sudo
, ma non ha chiamato il mio copione con esso. Quindi non ho modo di reagire a un utente, non chiamando il mio script con sudo.
Potrei mettere sudo
davanti a ogni comando che ne ha bisogno, quindi basta controllare se l'utente ha i privilegi di root, ma mi sembra che dovrebbe esserci una soluzione migliore.
Sto cercando un comando, che posso inserire nel mio script, che chieda all'utente i privilegi di root e, se fornito, esegua il resto dello script, come se l'utente lo chiamasse con i privilegi di root in primo luogo.
Cosa voglio:
#!/bin/bash
if ! command; then # what I'm looking for
echo "This script needs root privileges."
exit 1
fi
mv /bin/cmd1 /bin/cmd2 # requires root
Modificato 2 volte
Risposta accettata:
Verifica se sei root e, in caso contrario, riavvia con sudo
, ad esempio:
#! /bin/bash
if [[ $EUID -ne 0 ]];
then
exec sudo /bin/bash "$0" "[email protected]"
fi