Sto cercando di compilare alcuni sorgenti usando un makefile. Nel makefile c'è un mucchio di comandi che devono essere eseguiti come sudo
.
Quando compilo i sorgenti da un terminale tutto va bene e il make viene messo in pausa la prima volta che viene eseguito un comando sudo
in attesa della password. Una volta digitata la password, make riprende e completa.
Ma vorrei essere in grado di compilare i sorgenti in NetBeans. Così, ho iniziato un progetto e ho mostrato a netbeans dove trovare i sorgenti, ma quando compilo il progetto dà l'errore:
sudo: no tty present and no askpass program specified
La prima volta colpisce un comando sudo
.
Ho cercato il problema su internet e tutte le soluzioni che ho trovato puntano ad una cosa: disabilitare la password per questo utente. Dato che l'utente in questione è root. Non voglio farlo.
C'è qualche altra soluzione?
Concedere all'utente di usare quel comando senza richiedere la password dovrebbe risolvere il problema. Per prima cosa aprite una console shell e digitate:
sudo visudo
Poi modifica quel file per aggiungere alla fine:
username ALL = NOPASSWD: /fullpath/to/command, /fullpath/to/othercommand
ad esempio
john ALL = NOPASSWD: /sbin/poweroff, /sbin/start, /sbin/stop
permetterà all'utente john
di sudo poweroff
, start
e stop
senza che gli venga richiesta la password.
Guarda in fondo allo schermo per le sequenze di tasti che devi usare in visudo - questo non è vi a proposito - e esci senza salvare al primo segno di qualsiasi problema. Attenzione: corrompere questo file avrà gravi conseguenze, modificatelo con cura!
Prova:
ssh -t remotehost "sudo <cmd>"
Questo rimuoverà gli errori di cui sopra.
sudo
di default leggerà la password dal terminale collegato. Il tuo problema è che non c'è nessun terminale collegato quando viene eseguito dalla console di Netbeans. Quindi devi usare un modo alternativo per inserire la password: questo è chiamato il programma askpass.
Il programma askpass non è un programma particolare, ma qualsiasi programma che può chiedere una password. Per esempio nel mio sistema x11-ssh-askpass
funziona bene.
Per farlo devi specificare quale programma usare, o con la variabile d'ambiente SUDO_ASKPASS
o nel file sudo.conf
(vedi man sudo
per dettagli).
Si può forzare sudo
ad usare il programma askpass usando l'opzione -A
. Per default lo userà solo se non c'è un terminale collegato.