Hur åtgärdar man felet 'sudo: ingen tty finns och inget askpass-program är specificerat'?

Jag försöker kompilera några källor med hjälp av en makefile. I makefilen finns det ett antal kommandon som måste köras som sudo.

När jag kompilerar källorna från en terminal går allt bra och make pausas första gången ett sudo-kommando körs och väntar på lösenord. När jag skriver in lösenordet återupptas make och avslutas.

Men jag skulle vilja kunna kompilera källorna i NetBeans. Så jag startade ett projekt och visade Netbeans var källorna finns, men när jag kompilerar projektet ger det felet:

sudo: no tty present and no askpass program specified

Första gången den träffar ett sudo-kommando.

Jag har letat upp problemet på internet och alla lösningar jag hittat pekar på en sak: att inaktivera lösenordet för den här användaren. Eftersom användaren i fråga här är root. Jag vill inte göra det.

Finns det någon annan lösning?

Om du ger användaren rätt att använda kommandot utan att fråga efter lösenordet bör problemet lösas. Öppna först en skalkonsol och skriv:

sudo visudo

Redigera sedan filen och lägg till i slutet:

username ALL = NOPASSWD: /fullpath/to/command, /fullpath/to/othercommand

t.ex.

john ALL = NOPASSWD: /sbin/poweroff, /sbin/start, /sbin/stop

tillåter användaren john att sudo poweroff, start och stop utan att bli tillfrågad om lösenord.

Titta längst ner på skärmen för att se vilka tangenttryckningar du måste använda i visudo - detta är förresten inte vi - och avsluta utan att spara vid första tecknet på något problem. Hälsovarning: att korrumpera denna fil kommer att få allvarliga konsekvenser, redigera med försiktighet!

Kommentarer (8)

Försök:

ssh -t remotehost "sudo "

Detta tar bort ovanstående fel.

Kommentarer (5)

sudo läser som standard lösenordet från den anslutna terminalen. Ditt problem är att det inte finns någon terminal ansluten när det körs från Netbeans-konsolen. Så du måste använda ett alternativt sätt att skriva in lösenordet: det kallas askpass-programmet.

Programmet askpass är inte ett särskilt program, utan alla program som kan be om ett lösenord. I mitt system fungerar till exempel x11-ssh-askpass bra.

För att göra det måste du ange vilket program som ska användas, antingen med miljövariabeln SUDO_ASKPASS eller i filen sudo.conf (se man sudo för mer information).

Du kan tvinga sudo att använda programmet askpass genom att använda alternativet -A. Som standard kommer det bara att använda det om det inte finns en ansluten terminal.

Kommentarer (6)