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.