GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come evitare la richiesta di password per Sudo per gli script Crontab?

Ho bisogno che un nuovo utente possa eseguire sudo senza alcuna richiesta di password, perché questo utente ha in crontab un .sh che utilizza sudo per alcuni comandi.

Ho creato un nuovo utente sul mio server Ubuntu 16.04 x64

adduser my-user sudo
gpasswd -a my-user sudo

Quindi usando visuo ho aggiunto questa riga, sulla base di questa domanda

my-user ALL=(ALL) NOPASSWD : ALL

Quindi riavviato

Dopo il riavvio, ho effettuato l'accesso utilizzando my-user e ho provato a fare sudo clear, ma mi chiede la password sudo.

NOTA :Ho aggiunto crontab usando crontab -e my-user quindi suppongo che il mio script venga eseguito come my-user . In effetti, lo script crontabbed si arresta in modo anomalo dicendomi nel registro di un sudo richiesta password. Ho davvero bisogno di eseguire lo script in questo modo per poter creare file con my-suer come proprietario.

Per favore, dimmi se alcuni passaggi/righe non erano necessari e come rendere in grado my-user per eseguire sudo senza richiesta password.

Grazie

PS:ho visto questa domanda, ma non riesco a farla funzionare quindi ho bisogno di una spiegazione più precisa, perché la mia situazione è diversa:sto eseguendo uno script crontab e mi serve non chiedere la password sudo

Risposta accettata:

A volte eseguendo un processo dal crontab di root potrebbe causare problemi con la proprietà iniziale del file e rwx modalità; quelli potrebbero non essere conservati correttamente.

In ogni caso:

1) per creare un nuovo utente, mantieni la semplicità:

 $ sudo deluser my-user  # if "my-user" is a regular user
 $ adduser my-user
 $ sudo gpasswd -a my-user sudo

2) per includere una nuova voce con un NOPASSWD tag in sudoers o in un file (ad es. /etc/sudoers.d/60_my-user_rules ), fai in modo che i due punti si attacchino al tag, ad esempio NOPASSWD:
Non l'ho mai visto prima con lo spazio intervallato e la tua regola diventa:

 my-user my-host = NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]

Aggiunta di (ALL) prima del NOPASSWD: è facoltativo poiché la regola predefinita è (ALL:ALL) comunque. Potresti tuttavia voler eseguire non solo il tuo cmd/script con il privilegio di root, ma anche eseguirlo come un determinato utente (spec-user ) o come membro di un determinato gruppo (spec-group ) o entrambi. In tal caso, la regola diventa:

 my-user my-host = ([spec-user][:spec-group]) NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]

Ciò in realtà limiterà la tua disposizione sudo senza password a un utente, un host e un comando. Puoi rafforzare questa regola specificando i parametri facoltativi per quel comando. In tal caso la regola si applicherà solo a quel/i parametro/i esatto/i.
Per gli script, puoi rafforzare ulteriormente questa regola assicurandoti che la regola si applichi solo se lo script non è stato modificato in alcun modo . Questo è un modo per evitare il dirottamento degli script. Questo viene fatto tramite alias cmd e specificando SHA-sum in /etc/sudoers.d/60_my-user_rules .

HTH. Segnala se riscontri problemi con quella risposta.

Correlati:backup completo dell'iPhone senza iTunes?
Ubuntu
  1. Come fare in modo che sudo ricordi la password più a lungo

  2. Come modificare il timeout della password di Sudo

  3. Come reimpostare la password per sudo in Debian

  4. Come rimuovere il requisito della password di Ubuntu??

  5. Come posso fare in modo che sudo chieda la password di root?

Come specificare il limite di tempo per una sessione di sudo in Ubuntu 20.04 LTS

Come eseguire comandi Sudo senza password

Come modificare il timeout della password di Sudo in Ubuntu

Come installare l'ambiente di sviluppo Python 3 per Ubuntu Linux

Come configurare Pkexec per non richiedere la password?

Come eseguire sudo comandi senza password