Kuidas parandada 'sudo: tty puudub ja askpass programmi pole määratud' viga?

Püüan kompileerida mõningaid allikaid kasutades makefile'i. Makefile'is on hulk käske, mida tuleb käivitada `sudo'-na.

Kui ma kompileerin allikad terminalist, läheb kõik hästi ja make peatub esimesel korral, kui sudo käsk käivitatakse, oodates parooli. Kui ma sisestan parooli, jätkub make ja lõpetab.

Aga ma tahaksin, et ma saaksin allikad kompileerida NetBeansis. Niisiis, ma alustasin projekti ja näitasin netbeansile, kust allikad leida, aga kui ma projekti kompileerin, siis annab ta vea:

sudo: no tty present and no askpass program specified

Esimesel korral tabab ta sudo käsku.

Olen uurinud seda probleemi internetist ja kõik leitud lahendused viitavad ühele asjale: selle kasutaja parooli keelamine. Kuna antud kasutaja on siinkohal root. Ma ei taha seda teha.

Kas on mingi muu lahendus?

Probleemi peaks lahendama see, kui kasutajale antakse luba kasutada seda käsku ilma parooli küsimata. Avage esmalt shell-konsool ja sisestage:

sudo visudo

Seejärel redigeerige seda faili, et lisada kõige lõppu:

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

nt

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

lubab kasutajal john sudo poweroff, start ja stop ilma parooli küsimata.

Vaadake ekraani allosas, milliseid klahvivajutusi peate visudos kasutama - see ei ole muide vi - ja lahkuge ilma salvestamata esimese probleemi ilmnemisel. Tervisehoiatus: selle faili rikkumisel on tõsised tagajärjed, redigeerige ettevaatlikult!

Kommentaarid (8)

Proovige:

ssh -t remotehost "sudo "

See eemaldab ülaltoodud vead.

Kommentaarid (5)

sudo loeb vaikimisi parooli lisatud terminalist. Teie probleem seisneb selles, et netbeans'i konsoolist käivitamisel ei ole terminali lisatud. Seega pead sa kasutama alternatiivset viisi parooli sisestamiseks: seda nimetatakse askpass programmiks.

Programm askpass ei ole mingi konkreetne programm, vaid mis tahes programm, mis saab küsida parooli. Näiteks minu süsteemis töötab x11-ssh-askpass suurepäraselt.

Selleks tuleb määrata, millist programmi kasutada, kas keskkonnamuutuja SUDO_ASKPASS abil või failis sudo.conf (vt man sudo täpsemalt).

Saate sundida sudo kasutama programmi askpass, kasutades valikut -A. Vaikimisi kasutab ta seda ainult siis, kui ei ole lisatud terminali.

Kommentaarid (6)