Come consentire l'esecuzione senza richiedere la password utilizzando sudo?


15

Sto scrivendo un'applicazione Java in cui devo eseguire un'esecuzione da riga di comando e ottenere un risultato, ma quando eseguo il comando, richiede la password sudo. Finora ho provato:

$ sudo -s
$ vim /etc/sudoers
# User privilege specification
root         ALL=(ALL:ALL) NOPASSWD: ALL
javauser     ALL=(ALL:ALL) NOPASSWD: ALL

:wq
$ 4 -r--r-----   1 root root     615 2011-10-26 09:23 sudoers

Una volta eseguito il comando, mi viene nuovamente chiesto "password [javauser] per javauser:". Ma ho già menzionato noPASSWD.

whoamiritorna alexe lo sto aggiungendo come questo nel sudoersfile

# User privilege specification
root    ALL=(ALL:ALL) ALL
alex ALL=NOPASSWD: ALL


# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

La corsa continua a chiedermi la mia password, qualche idea?


Sembra che ci sia già una domanda molto simile: askubuntu.com/questions/39281/… - hai provato la risposta da lì?
Sergey,

Assicurati che nel tuo codice java usi "sudo / absolute / path / to / command" nella tua chiamata di sistema. Btw. per motivi di sicurezza è necessario utilizzare sudo visudoinvece di vimmodificare il file sudoers. In questo modo, se commetti un errore, il programma ti avvisa a riguardo.
con-f-use

Puoi trovare qui quello che ho provato esattamente: gist.github.com/1315951

Risposte:


28

Devi fare quanto segue, sul tipo di terminale sudo visudoe aggiungere una riga come questa alla fine del file specificando i comandi che vuoi eseguire senza digitare la password sudo (ti suggerisco di usare ogni comando che vuoi usare nel programma e non solo consentire l'esecuzione di tutti i programmi)

<yourusername> ALL=NOPASSWD: <command1>, <command2>

Ora puoi eseguire i comandi specificati senza password purché digiti quel comando sudo.

cioè: diciamo che vuoi correre shutdown -r nowsenza dover digitare sudo password ogni volta e il tuo nome utente è 'joedoe'

  1. digitare sudo visudosu un terminale

  2. Aggiungi joedoe ALL=NOPASSWD: /usr/sbin/shutdown -r nowcome nuova riga alla fine del file , utilizza percorsi assoluti per il programma che stai tentando di utilizzare.

  3. sul tuo programma è quindi possibile utilizzare sudo shutdown -r nowsenza digitare la password sudo.

Puoi trovare il percorso assoluto di un programma usando which <program name>su un terminale.

È un desiderio molto sporco che lascia il tuo sistema aperto per altri pericoli, ma immagino che tu sappia cosa stai facendo e lo desideri.

modificare

Devi davvero assicurarti che le autorizzazioni che stai impostando siano alla fine del file in modo che nulla venga sovrascritto dalle autorizzazioni dei gruppi.


Sembra che l'abbia già fatto.
con-f-use

Se lo ha già fatto, perché gli stai spiegando che dovrebbe usare sudo visudoe non vimmodificare il file sudoers? Se lo facesse, funzionerebbe.
Bruno Pereira,

1
@goOgle stai scrivendo sudodavanti al comando all'interno del tuo codice? devi farlo anche se hai forzato nopasswd nel file sudoers. cioè: usa sudo <command>non solo <command>.
Bruno Pereira,

1
Per me cmd = "whoami" ritorna brunoe cmd = "sudo whoami"restituisceroot
Bruno Pereira,

3
Trovato! Posso riprodurlo se la mia riga non è alla fine alla fine del sudoersfile. Dopo l'assegnazione dei gruppi, ecc. Davvero l'ultima riga! Sposta la linea in modo che sia l'ultima nel file! (spero che fosse così).
Bruno Pereira,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.