Es mēģinu kompilēt dažus avotus, izmantojot make failu. Make failā ir virkne komandu, kas jāpalaiž kā sudo
.
Kad es kompilēju avotus no termināļa, viss iet labi, un make tiek apturēts, kad pirmo reizi tiek palaista sudo
komanda, gaidot paroli. Kad es ievadu paroli, make atsāk darbu un pabeidz darbu.
Bet es gribētu, lai man būtu iespēja kompilēt avotus NetBeans. Es sāku projektu un parādīju NetBeans, kur atrast avotus, bet, kad es kompilēju projektu, tas dod kļūdu:
sudo: no tty present and no askpass program specified
Pirmajā reizē tā trāpa uz sudo
komandu.
Esmu meklējis šo problēmu internetā, un visi man atrastie risinājumi norāda uz vienu: atslēgt šī lietotāja paroli. Tā kā lietotājs, par kuru šeit ir runa, ir root. Es nevēlos to darīt.
Vai ir kāds cits risinājums?
Ja lietotājam tiek piešķirta iespēja izmantot šo komandu bez paroles pieprasīšanas, problēma būtu jāatrisina. Vispirms atveriet čaulas konsoli un ierakstiet:
sudo visudo
Pēc tam rediģējiet šo failu, lai pievienotu pašās beigās:
username ALL = NOPASSWD: /fullpath/to/command, /fullpath/to/othercommand
piemēram,
john ALL = NOPASSWD: /sbin/poweroff, /sbin/start, /sbin/stop
ļaus lietotājam john
izmantot sudo poweroff
, start
un stop
bez paroles pieprasīšanas.
Skatiet ekrāna apakšā, lai uzzinātu, kādi taustiņi jāizmanto visudo (starp citu, tas nav vi), un izejiet no programmas bez saglabāšanas, tiklīdz parādās pirmās problēmas pazīmes. Brīdinājums: šī faila sabojāšana radīs nopietnas sekas, rediģējiet uzmanīgi!
Izmēģiniet:
ssh -t remotehost "sudo <cmd>"
Tas novērsīs iepriekš minētās kļūdas.
sudo
pēc noklusējuma nolasa paroli no pievienotā termināļa. Jūsu problēma ir tā, ka nav pievienots termināls, kad tas tiek palaists no netbeans konsoles. Tāpēc jums ir jāizmanto alternatīvs paroles ievadīšanas veids: to sauc par programmu askpass.
Programma askpass nav īpaša programma, bet gan jebkura programma, kas var pieprasīt paroli. Piemēram, manā sistēmā darbojas x11-ssh-askpass
.
Lai to izdarītu, ir jānorāda, kuru programmu izmantot, vai nu ar vides mainīgo SUDO_ASKPASS
, vai sudo.conf
failā (sīkāku informāciju skatiet man sudo
).
Jūs varat piespiest sudo
izmantot programmu askpass, izmantojot opciju -A
. Pēc noklusējuma tā to izmantos tikai tad, ja nav pievienots termināls.