GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire retroattivamente uno script come root?

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

Linux
  1. Come eseguire un programma specifico come root senza una richiesta di password?

  2. Come funzionano gli interni di Sudo?

  3. Come eseguire un comando che prevede il reindirizzamento o il piping con Sudo?

  4. Come eseguire "find -exec {};?

  5. Come far funzionare uno script Python come un servizio o un demone in Linux

Come eseguire uno script Python in PHP

Come eseguire comandi Sudo senza password

Come eseguire uno script Bash

Come eseguire Dolphin come root?

Come eseguire un alias con Sudo in Linux

Come eseguire sudo comandi senza password