GNU/Linux >> Linux Esercitazione >  >> Linux

Posso fare in modo che uno script venga sempre eseguito come root?

Fai molta attenzione:gli script combinati con setuid sono pericolosi!

Innanzitutto, dai un'occhiata a questa domanda/risposte, in particolare a questa risposta e all'avviso di sicurezza.

Se vuoi ancora eseguire il tuo script con setuid set, allora puoi scrivere un breve programma C come wrapper e impostare setuid bit sul binario compilato.

Esempio di wrapper:

int main(void) {        
    setuid(0);
    clearenv();
    system("/absolute/path/to/your/script.sh");
}

Un'altra soluzione usando sudo (citato qui):

  1. Come root, impedisci l'accesso in scrittura (e forse anche altro) al tuo script:

    chown root /absolute/path/to/your/script.sh
    chmod 700 /absolute/path/to/your/script.sh
    
  2. Verifica che nessuno tranne root possa sostituire lo script , per esempio. modificando i diritti di accesso della cartella principale:

    chown root /absolute/path/to/your/
    chmod 755 /absolute/path/to/your/
    
  3. Modifica i diritti di accesso sudo in /etc/sudoers con visudo :

    ALL    ALL = (root) NOPASSWD: /absolute/path/to/your/script.sh
    

    Maggiori dettagli sulle impostazioni (ad es. limitazione dell'accesso a utenti o gruppi specifici) sono disponibili nella manpage sudoers.

Successivamente, tutti gli utenti possono eseguire lo script come root senza password:

sudo /absolute/path/to/your/script.sh

Questo è simile all'utilizzo della soluzione wrapper/setuid sopra.


Il modo più semplice e sicuro è utilizzare i bit SETUID nei permessi dei file. In questo modo i permessi dei comandi saranno elevati ai permessi del proprietario dei file.

per evitare che lo script venga modificato, non impostare la scrittura per tutti i bit.


Linux
  1. Uno script Bash può essere agganciato a un file?

  2. Uno script può essere eseguibile ma non leggibile?

  3. Come eseguire retroattivamente uno script come root?

  4. Esegue lo script bash dall'URL

  5. Impossibile rimuovere una directory in Unix

Come eseguire un comando in uno script della shell?

Impossibile creare menuconfig

Come eseguire uno script bash?

Un file .sh può essere un malware?

Perché non posso eliminare questo file come root?

Esiste un file che esiste sempre e un utente "normale" non può visualizzarlo?