'sudo: no tty present and no askpass program specified' hatası nasıl düzeltilir?

Bir makefile kullanarak bazı kaynakları derlemeye çalışıyorum. Makefile'da sudo olarak çalıştırılması gereken bir grup komut var.

Kaynakları bir terminalden derlediğimde her şey yolunda gidiyor ve bir sudo komutu ilk kez çalıştırıldığında make duraklatılıyor ve parola bekleniyor. Parolayı girdiğimde make devam ediyor ve tamamlanıyor.

Ancak kaynakları NetBeans'te derleyebilmek istiyorum. Bu yüzden bir proje başlattım ve netbeans'e kaynakları nerede bulacağını gösterdim, ancak projeyi derlediğimde hata veriyor:

sudo: no tty present and no askpass program specified

İlk kez bir sudo komutuyla karşılaştığında.

Sorunu internette araştırdım ve bulduğum tüm çözümler tek bir şeye işaret ediyor: bu kullanıcı için parolayı devre dışı bırakmak. Burada söz konusu kullanıcı root olduğu için. Bunu yapmak istemiyorum.

Başka bir çözüm var mı?

Kullanıcıya parola sormadan bu komutu kullanma izni vermek sorunu çözecektir. Önce bir kabuk konsolu açın ve şunu yazın:

sudo visudo

Ardından bu dosyayı düzenleyerek en sona ekleyin:

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

Örneğin

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

johnkullanıcısının şifre sorulmadan sudopoweroff,startvestop` yapmasına izin verecektir.

Visudo'da kullanmanız gereken tuşlar için ekranın altına bakın - bu arada bu vi değildir - ve herhangi bir sorunun ilk işaretinde kaydetmeden çıkın. Sağlık uyarısı: bu dosyayı bozmanın ciddi sonuçları olacaktır, dikkatli düzenleyin!

Yorumlar (8)

Dene:

ssh -t remotehost "sudo "

Bu, yukarıdaki hataları ortadan kaldıracaktır.

Yorumlar (5)

Varsayılan olarak sudo parolayı ekli terminalden okuyacaktır. Sizin sorununuz, netbeans konsolundan çalıştırıldığında bağlı bir terminal olmamasıdır. Bu yüzden parolayı girmek için alternatif bir yol kullanmanız gerekir: buna askpass programı denir.

askpass programı belirli bir program değil, parola sorabilen herhangi bir programdır. Örneğin benim sistemimde x11-ssh-askpass iyi çalışıyor.

Bunu yapmak için, SUDO_ASKPASS çevre değişkeniyle ya da sudo.conf dosyasında hangi programın kullanılacağını belirtmeniz gerekir (ayrıntılar için man sudo dosyasına bakın).

Aseçeneğini kullanaraksudo`yu askpass programını kullanmaya zorlayabilirsiniz. Varsayılan olarak, yalnızca bağlı bir terminal yoksa kullanacaktır.

Yorumlar (6)