Я могу войти как любой пользователь и sudo whoami
без пароля и получить «root». Когда я попробую это с php -r 'echo exec("sudo whoami");'
это работает независимо от того, какой я пользователь. Но когда я запускаю это через веб-сервер (nginx), я ничего не получаю. Что дает?
ps xau | grep php
root 207 0.0 2.6 19876 4992 ? Ss 23:16 0:00 php-fpm: master process (/etc/php/php-fpm.conf)
http 228 0.0 1.6 19876 3152 ? S 23:16 0:00 php-fpm: pool www
http 229 0.0 1.6 19876 3144 ? S 23:16 0:00 php-fpm: pool www
root 326 0.0 0.3 2504 692 pts/0 S+ 23:59 0:00 grep php
Я добавил 2>&1
в моей команде, чтобы увидеть ошибки, и он сказал: «sudo: команда не найдена».
Затем я добавил putenv('PATH=' . getenv('PATH') . ':/usr/sbin');
на мой PHP-скрипт, и это сработало.
Других решений пока нет …