'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:
Ardından bu dosyayı düzenleyerek en sona ekleyin:
Örneğin
john
kullanıcısının şifre sorulmadan sudo
poweroff,
startve
stop` 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!
Dene:
Bu, yukarıdaki hataları ortadan kaldıracaktır.
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 dasudo.conf
dosyasında hangi programın kullanılacağını belirtmeniz gerekir (ayrıntılar içinman sudo
dosyasına bakın).A
seçeneğini kullanarak
sudo`yu askpass programını kullanmaya zorlayabilirsiniz. Varsayılan olarak, yalnızca bağlı bir terminal yoksa kullanacaktır.