Я хочу запустить скрипт sh из php.
Для этого мне нужно открыть файл visudo:
sudo visudo
С этим:
www-data ALL=(ALL) NOPASSWD: ALL
Оно работает!
Но я не хочу включать все команды, только определенный скрипт sh.
Поэтому я изменил это на:
www-data ALL=(ALL) NOPASSWD: /www/......./truncatefiles.sh
Путь правильный, но shell_exec (из php) возвращает: sudo: tty отсутствует и не задана программа askpass
И команда не запустится.
Если линия visudo такая же, как мой первый пример.
В чем может быть проблема?
Я думаю, что это плохая идея, потому что это может создать потенциальную проблему безопасности.
Но если вы все еще хотите сделать это,
вы можете сохранить www-data ALL=(ALL) NOPASSWD: /www/......./truncatefiles.sh
и в то же время закомментируйте строку, содержащую Defaults requiretty
в /etc/sudoers
(всегда с Visudo, чтобы избежать ошибок).
Других решений пока нет …