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?