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:
Bewerk dan dat bestand en voeg helemaal aan het einde toe:
bv
zal de gebruiker
john
sudopoweroff
,start
enstop
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!
Probeer het:
Dit zal de bovenstaande fouten verwijderen.
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 hetsudo.conf
bestand (zieman 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.