Original article: http://kbase.redhat.com/faq/docs/DOC-15839.pdf
Translated by Ivan Pesin, May 2009
Система: Red Hat Enterprise Linux 5
Проблема:
Попытка удалённого вызова команды sudo
с помощью ssh
заканчивается ошибкой.
Например:
$ ssh hostname sudo <command>
$ sudo: sorry, you must have a tty to run sudo
Решение:
Файл /etc/sudoers
в Red Hat Enterprise Linux 5 по-умолчанию содержит флаг 'requiretty'
. Когда этот флаг установлен, только зарегистрированные в системе пользователи могут выполнять команды с помощью sudo
. Именно это и не позволяет выполнять удалённо команду sudo
через rsh
или ssh
. Программы rsh
и ssh
не выделяют устройство псевдотерминала. Рекомендуется не убирать этот флаг, поскольку без псеводтерминала невозможно отключить эхо вводимых символов и, как следствие, отображение вводимого пароля.
Для принудительного выделения псевдотерминального устройства, укажите команде ssh
параметр -t
:
# ssh -t hostname sudo <cmd>
Как вариант, можно также отредактировать файл /etc/sudoers
с помощью visudo
и отключить флаг requiretty
, закомментировав строку "Defaults: requiretty"
. Примечание: делать это не рекомендуется.
За подробной информацией обращайтесь к Red Hat Enterprise Linux Deployment Guide.