Итак, есть VPS (виртуализация OpenVZ) на котором установлен CentOS Linux release 7.2.1511 (Core)
Необходимо из PHP выполнить на нём bash скрипт с таким содержимым: #!/bin/sh cd /home mkdir 456
В файл /etc/sudoers после строки root ALL=(ALL) ALL я добавил apache ALL=(ALL) NOPASSWD: /home/bash/1.sh
В итоге в php скрипте строка exec('sudo /home/bash/1.sh'); не работает. В логах ничего интересного не нашёл.
Что интересно, если через putty войти на сервер под рутом и выполнить: sudo /home/bash/1.sh все работает, но если выполнить команду sudo -u apache /home/bash/1.sh она выдаёт: mkdir: cannot create directory '123': Permission denied
Также заметил, что если в /home/bash/1.sh написать #!/bin/sh systemctl restart named
то команда sudo -u apache /home/bash/1.sh выдаёт: Failed to restart named.service: The name org.freedesktop.PolicyKit1 was not provided by any .service files
Но при этом sudo /home/bash/1.sh всё нормально рестартит.
В чём может быть причина, я же добавил в /etc/sudoers: apache ALL=(ALL) NOPASSWD: /home/bash/1.sh На файл /home/bash/1.sh стоят права 0755 Группа и владелец root [0]