Hoe 'sudo op te lossen: geen tty aanwezig en geen askpass programma opgegeven' fout?

Ik probeer wat broncode te compileren met behulp van een makefile. In de makefile staat een aantal commando's die als sudo moeten worden uitgevoerd.

Wanneer ik de broncode vanaf een terminal compileer, gaat alles goed en wordt make gepauzeerd wanneer een sudo commando voor de eerste keer wordt uitgevoerd, wachtend op een wachtwoord. Zodra ik het wachtwoord intyp, wordt make hervat en voltooid.

Maar ik zou graag de broncode in NetBeans willen kunnen compileren. Dus, ik heb een project gestart en netbeans laten zien waar ik de broncode kan vinden, maar als ik het project compileer geeft het de foutmelding:

sudo: no tty present and no askpass program specified

De eerste keer dat het een sudo commando raakt.

Ik heb het probleem opgezocht op het internet en alle oplossingen die ik heb gevonden wijzen naar één ding: het uitschakelen van het wachtwoord voor deze gebruiker. Aangezien de gebruiker in kwestie hier root is. Ik wil dat niet doen.

Is er een andere oplossing?

De gebruiker toestemming geven om dat commando te gebruiken zonder om een wachtwoord te vragen zou het probleem moeten oplossen. Open eerst een shell console en type:

sudo visudo

Bewerk dan dat bestand en voeg helemaal aan het einde toe:

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

bv

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

zal de gebruiker john sudo poweroff, start en stop toestaan zonder dat hij om een wachtwoord gevraagd wordt.

Kijk onderaan het scherm voor de toetsaanslagen die je moet gebruiken in visudo - dit is trouwens geen vi - en sluit af zonder op te slaan bij het eerste teken van een probleem. Gezondheidswaarschuwing: het corrumperen van dit bestand zal ernstige gevolgen hebben, bewerk het met zorg!

Commentaren (8)

Probeer het:

ssh -t remotehost "sudo "

Dit zal de bovenstaande fouten verwijderen.

Commentaren (5)

sudo leest standaard het wachtwoord uit de aangesloten terminal. Uw probleem is dat er geen terminal is aangesloten wanneer het wordt uitgevoerd vanaf de netbeans console. Je moet dus een alternatieve manier gebruiken om het wachtwoord in te voeren: dat heet het programma askpass.

Het askpass programma is niet een bepaald programma, maar elk programma dat om een wachtwoord kan vragen. In mijn systeem werkt bijvoorbeeld x11-ssh-askpass prima.

Om dat te doen moet je opgeven welk programma gebruikt moet worden, ofwel met de omgevingsvariabele SUDO_ASKPASS of in het sudo.conf bestand (zie man sudo voor details).

Je kan sudo dwingen om het askpass programma te gebruiken door de optie -A te gebruiken. Standaard zal het alleen gebruikt worden als er geen terminal is aangesloten.

Commentaren (6)