Jak naprawić błąd 'sudo: no tty present and no askpass program specified'?
Próbuję skompilować niektóre źródła używając pliku makefile. W pliku makefile jest kilka komend, które muszą być uruchamiane jako sudo
.
Kiedy kompiluję źródła z terminala wszystko idzie dobrze i make jest wstrzymane za pierwszym razem, kiedy komenda sudo
jest uruchamiana czekając na hasło. Po wpisaniu hasła, make wznawia i kończy.
Ale chciałbym móc skompilować źródła w NetBeans. Tak więc, rozpocząłem projekt i pokazałem netbeans gdzie znaleźć źródła, ale kiedy kompiluję projekt, daje błąd:
sudo: no tty present and no askpass program specified
Za pierwszym razem trafia w polecenie sudo
.
Sprawdziłem ten problem w Internecie i wszystkie rozwiązania, które znalazłem, wskazują na jedną rzecz: wyłączenie hasła dla tego użytkownika. Ponieważ użytkownik, o którym tu mowa, to root. Nie chcę tego robić.
Czy istnieje jakieś inne rozwiązanie?
Zezwolenie użytkownikowi na użycie tego polecenia bez pytania o hasło powinno rozwiązać problem. Najpierw otwórz konsolę powłoki i wpisz:
Następnie edytuj ten plik, aby dodać na samym końcu:
np.
pozwoli użytkownikowi
john
na sudopoweroff
,start
istop
bez pytania o hasło.Spójrz na dole ekranu na naciśnięcia klawiszy, których musisz użyć w visudo - to nie jest vi przy okazji - i wyjdź bez zapisywania przy pierwszych oznakach problemów. Ostrzeżenie zdrowotne: uszkodzenie tego pliku będzie miało poważne konsekwencje, edytuj ostrożnie!
Spróbuj:
Spowoduje to usunięcie powyższych błędów.
sudo
domyślnie odczyta hasło z dołączonego terminala. Twój problem polega na tym, że nie ma dołączonego terminala, gdy jest uruchamiany z konsoli netbeans. Musisz więc użyć alternatywnego sposobu na wprowadzenie hasła: jest to program askpass.Program askpass nie jest konkretnym programem, ale każdym programem, który może poprosić o hasło. Na przykład w moim systemie
x11-ssh-askpass
działa dobrze.Aby to zrobić musisz określić jaki program ma być użyty, albo za pomocą zmiennej środowiskowej
SUDO_ASKPASS
albo w plikusudo.conf
(zobaczman sudo
po szczegóły).Możesz zmusić
sudo
do użycia programu askpass używając opcji-A
. Domyślnie będzie go używał tylko jeśli nie ma podłączonego terminala.