Не может SUDO SU больше ," нет tty присутствует и не указана программа askpass"
у меня есть корневой сервер, где я отключил вход через root пользователя и создал другого пользователя, который находится в списке sudoer. Поэтому, когда я хочу работать на сервере я:
ssh myusername@IP_ADDRESS
на сервере:
sudo su
введите мой пароль, чтобы получить права root. Это хорошо работало в течение 6 месяцев. Сегодня я получаю это сообщение, когда делаю sudo su:
sudo: no tty present and no askpass program specified
что происходит Хак? Что означает эта ошибка и почему я ее получаю?? Без root прав не так много сервер. Есть идеи, как это исправить?
2 ответов
sudo
пытается открыть /dev/tty
для чтения-записи и печати этой ошибки, если это не удается. Вы указали в комментариях, что /dev/tty отсутствует в вашей системе.
Sudo имеет опцию -S
для чтения пароля из стандартного ввода вместо /dev / tty. Вы должны быть в состоянии работать sudo -S
чтобы стать root.
Что касается восстановления /dev/tty, возможно, что перезагрузки сервера будет достаточно; система может воссоздать все устройства в /dev во время загрузки. В качестве альтернативы, чтобы создать устройство, вы используете mknod
команда, но вам нужно знать правильные основные и второстепенные номера для устройства tty. В системе Ubuntu, которая у меня есть, я вижу эти записи в /dev:
crw------- 1 root root 5, 1 Apr 16 18:36 console
crw-rw-rw- 1 root tty 5, 2 Sep 24 15:35 ptmx
crw-rw-rw- 1 root tty 5, 0 Sep 24 14:25 tty
в этом случае основное число равно 5, а меньшее-0. /dev / console и /dev / ptmx имеют одинаковое основное число. Поэтому я бы проверил /dev / console или /dev / ptmx, чтобы найти правильное основное число, а затем запустите:
mknod /dev/tty c major 0
где "майор" - правильный майор число.
после воссоздания /dev / tty убедитесь, что разрешения правильные:
chmod 666 /dev/tty
это не удается, потому что sudo
пытается запросить пароль root, и псевдо-tty не выделяется.
вы должны либо войти в систему как root, либо настроить следующие правила в своем /etc/sudoers
(или: sudo visudo
):
# Members of the admin group may gain root privileges.
%admin ALL=(ALL) NOPASSWD:ALL
затем убедитесь, что пользователь принадлежит admin
группы (или wheel
).
в идеале (безопаснее) было бы ограничить привилегии root только конкретными командами, которые могут быть указаны как %admin ALL=(ALL) NOPASSWD:/path/to/program