GNU/Linux >> Linux Esercitazione >  >> Linux

Modo per fare in modo che uno script di shell venga sempre eseguito come root?

Voglio sapere come creare (se possibile) uno script bash che venga eseguito come root su Debian indipendentemente dall'utente che lo esegue, senza richiedere alcun tipo di autenticazione.

Questo file eseguirà tutti i suoi comandi come se fosse l'utente root, ma solo il vero utente root potrà leggerlo o scriverci sopra.

Ne ho bisogno perché voglio eseguire comandi come swapoff , swapon , apt , ecc... Ma tramite un'altra applicazione e voglio che non mi chieda alcuna password.

I comandi saranno corretti (quei comandi di root avranno i loro parametri nel file, non come input), quindi le implicazioni sulla sicurezza non sono esattamente la mia preoccupazione, ma accetto anche spiegazioni.

Risposta accettata:

Il modo di basso livello per fare in modo che un programma venga sempre eseguito con un particolare UID è il bit setuid sul file binario. Ecco come ad es. sudo e su ottenere i loro permessi di root, anche se di solito vengono avviati da usi normali.
Ma in generale, i sistemi simili a Unix non supportano gli script setuid , vedi:Consenti setuid sugli script di shell

Tuttavia, quello che puoi fare è configurare sudo o qualche altro strumento simile per consentire agli utenti di eseguire alcuni file particolari con i privilegi appropriati. Ad esempio, questo consentirebbe viceadmin per eseguire /usr/local/bin/sudoswapon con qualsiasi argomento e senza autenticazione:

viceadmin ALL = NOPASSWD:/usr/local/bin/sudoswapon

Ora, da sudo si occupa della modifica stessa dei privilegi, sudoswapon può essere uno script di shell.

Hai ragione a notare che lo script dovrebbe fare attenzione a come gestisce gli argomenti della riga di comando e che tutti verranno applicati i trucchi del linguaggio della shell. Fortunatamente, sudo filtra la maggior parte delle variabili di ambiente, almeno se env_reset l'opzione è impostata.


Linux
  1. Come si esegue uno script all'accesso in *nix?

  2. Qualche modo per eseguire i comandi della shell su Android a livello di codice?

  3. Esecuzione di script di shell in parallelo

  4. Come eseguire uno script di shell all'avvio

  5. Come eseguire lo script Python come servizio?

Come eseguire il comando / script della shell di Linux in background

Come eseguire lo script della shell come servizio SystemD in Linux

Come creare ed eseguire uno script di shell in Ubuntu 22.04

Esegui il comando shell in jenkins come utente root?

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

Qual è il modo più veloce per eseguire uno script?