PHP shell_exec () и sudo: должен быть установленным root

У меня есть shell_exec() которая обращается к каталогу выше моего корня документа, поэтому мне нужно использовать sudo «как root», чтобы это произошло. (Я понимаю проблемы безопасности и принимаю меры для его решения).

Проблема в том, когда я запускаю shell_exec() я получаю ошибку «sudo: должно быть setuid root» в файле apache error_log.

Я думал, что решение было для chmod 4750 сценария bash, который вызывается моим sheel_exec() но это не делает работу.

Что такое «sudo: должен быть setuid root», пытаясь рассказать мне и как я могу его решить?

Является ли сам исполняемый файл sudo setuid root? Возможно, вам понадобится

 chown root: /usr/bin/sudo chmod u+s /usr/bin/sudo 

В качестве альтернативы, вообще пропустите sudo . Если ваш скрипт принадлежит root и имеет свой собственный бит setuid, тогда вам не нужно использовать sudo для получения привилегий root. На самом деле, это может быть более безопасным таким образом; вы гарантируете, что ваш веб-пользователь может использовать только этот скрипт, без необходимости редактировать sudoers. Для этого удалите sudo из shell_exec() :

 <?php shell_exec('/path/to/your/command'); ?> 

Вы проверяли разрешения для своего скрипта?

Кто владеет сценарием?

Имеет ли пользователь сети права на sudo?

Чтобы устранить эту проблему, вам необходимо выполнить chown и chmod sudo file как root, как показано ниже.

 chown root:root /usr/bin/sudo chmod 4111 /usr/bin/sudo chmod 0440 /etc/sudoers