sudo: tty отсутствует и не задана программа askpass

При попытке запустить удаленный двоичный файл с помощью sudo на удаленном компьютере:

ssh remotehost "sudo ./binary"

я вижу эту ошибку:

sudo: нет tty присутствует и нет askpass указана программа

Как я могу обойти это?

РЕДАКТИРОВАТЬ это, безусловно, не является дубликатом вопроса, предложенного как такового. Ответы там совершенно неактуальны. Фактически, эти изменения в файле sudoers уже были применены к удаленному хосту.

88
задан 4 April 2015 в 22:17

6 ответов

Ffordd syml yw nodi -t :

ssh -t remotehost "sudo ./binary"

O'r dudalen dyn:

Dyraniad ffug-rym yr heddlu. Gellir defnyddio hyn i weithredu rhaglenni mympwyol yn seiliedig ar sgrin ar beiriant anghysbell, a all fod yn ddefnyddiol iawn, e.e. wrth weithredu gwasanaethau bwydlen. Mae opsiynau lluosog -t yn gorfodi dyraniad tty, hyd yn oed os nad oes gan ssh tty lleol.

Ni allaf egluro pam yn union y mae hyn yn gweithio, ac efallai y bydd ffordd well. Hoffwn glywed amdano os felly :)

Mae @psusi yn esbonio pam mae hyn yn gweithio mewn sylw isod.

95
ответ дан 4 April 2015 в 22:17

Вопрос:

Как я могу обойти это?

sudo: no tty present and no askpass program specified

Альтернативный ответ

В качестве альтернативы попробуйте:

sudo -S ./[yourExecutable visible

Это указывает sudo на чтение пароля со стандартного ввода, stdin.

Сценарии, в которых это помогает

В средах chroot эти другие ответы могут работать некорректно ... возможно, потому что:

  1. / etc / shadow vs / Конфликт etc / passwd, не позволяющий пользователю вводить пароль.
  2. В среде chroot-ed доступ к tty1 может быть немного затруднительным, а ctrl-alt f2 - к tty2 невозможен, потому что это tty из среда без chroot.

Например: Ручная установка / восстановление Linux или загрузчика с использованием среды chroot (такой как Archlinux и arch-chroot).

36
ответ дан 4 April 2015 в 22:17

Вам необходимо определить терминал / приложение, которое будет читать пароль. Есть два варианта:

  1. export SUDO_ASKPASS = / usr / libexec / openssh / ssh-askpass
  2. vim / etc / sudoers (По умолчанию visiblepw)
4
ответ дан 4 April 2015 в 22:17

Это не работает, потому что sudo пытается запросить пароль суперпользователя, но псевдотерминал не выделен.

Вы должны либо войти в систему как root, либо установить следующие правила в вашем / etc / sudoers (или: sudo visudo ):

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

Затем убедитесь, что ваш пользователь принадлежит к группе admin (или wheel ).

4
ответ дан 4 April 2015 в 22:17

Вы можете также создайте файл типа "sudo_shutdown" в /etc/sudoers.d с содержимым:

# Allow admins to shutdown without pass
%adm ALL=(ALL) NOPASSWD: /sbin/shutdown

Это позволяет пользователям, которые находятся в группе adm, завершать работу без пароля.

3
ответ дан 4 April 2015 в 22:17

В моем случае я получил эту ошибку, потому что я не указывал команду, которую я хотел бы использовать как root в sudoers

Что-то вроде

/ e tc / sudoers.d / myuser :

myuser ALL=(root) NOPASSWD: \
    /bin/ls -la

работал у меня

4
ответ дан 4 April 2015 в 22:17

Другие вопросы по тегам:

Похожие вопросы: