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

У меня есть страница php, которая пытается запустить сервис перезапуска с помощью:

$list=shell_exec('sudo /sbin/service NetworkManager restart');

Мне нужно было отредактировать файл sudoers, чтобы это произошло. Таким образом:

#Defaults requiretty

а также

apache ALL=(ALL) NOPASSWD: /sbin/service

Когда это не удалось, в качестве теста я запустил:

apache ALL=(ALL) NOPASSWD: ALL

Я запустил shell_exec без команды sudo:

$list=shell_exec('whoami');

echo $list;

Это вернуло «apache», как и ожидалось. Итак, я побежал:

$list=shell_exec('id');

echo $list;

Это вернуло «uid = 48 (apache) gid = 48 (apache) groups = 48 (apache), 10 (wheel)»

Я проверил права доступа файлов к работающей системе, которая делает то же самое, и они совпали. После этого только для тестирования я изменил все права доступа к файлам на 777. Все еще ничего. В журнале ошибок apache я получаю строку «sudo: нет tty присутствует и не задана программа askpass». Насколько я понимаю, это относится к строке #Defaults requiretty в файле sudoers, но, как указано, закомментирован. Я провел с ним больше тестов, и моя текущая запись в файле sudoers:

#Defaults requiretty

ALL ALL=(ALL) NOPASSWD: ALL

Я знаю, что не следует запускать сервер таким образом, так как это представляет огромный риск для безопасности, но в данный момент я полностью теряюсь из-за того, что меня блокирует. Selinux выключен, все разрешения — 777, и право собственности на файлы соответствует работающей у меня системе. При всей этой и всей возможной безопасности, которую я могу себе представить, я отключен, у меня все еще есть строка «sudo: нет tty присутствует и не задана программа askpass» в моем / var / log / httpd / error_log каждый раз. Выход из:

$list=shell_exec('sudo echo "yes" 2>&1 ');

echo $list;

Также есть «sudo: отсутствует tty и не задана программа askpass»?
Я мог бы действительно использовать некоторую помощь в этом. Я прочитал каждую статью на 4 страницах Google по этому поводу, так как я могу подумать, что это Google.

1

Решение

Хотя мои настройки немного отличаются (я не пытаюсь добиться этого без пароля), я использую это в файле sudoers:

apache ALL=(ALL) ALL
Defaults:apache !requiretty

Затем я запускаю вещи как:

echo '{password}' | sudo -S {command}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]