Проверять статус сервиса с php на linux? - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь прочитать статус службы, используя php7 в Debian 9. Команда проста:

sudo -u root -S service openvpn@debideb status < /var/www/html/.htpass

Я получаю желаемый результат, когда тестирую его в терминале:

openvpn@debideb.service - OpenVPN connection to debideb
   Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2018-06-25 06:17:15 PDT; 1h 2min ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
  Process: 5049 ExecStart=/usr/sbin/openvpn --daemon ovpn-debideb --status /run/openvpn/debideb.status 10 --cd /etc/openvpn -
 Main PID: 5051 (openvpn)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/system-openvpn.slice/openvpn@debideb.service
           └─5051 /usr/sbin/openvpn --daemon ovpn-debideb --status /run/openvpn/debideb.status 10 --cd /etc/openvpn --config 

однако, когда я делаю это через www-данные, я получаю следующие результаты: passthru() возвращает int(1);shell_exec() возвращает NULL;exec() и system() возврат string("");

Где я облажался?

1 Ответ

0 голосов
/ 25 июня 2018

Вы можете запустить CRON, чтобы проверить состояние службы и вывести результат в какой-то формат вывода, а затем прочитать файл вывода от пользователя веб-сервера. Таким образом, вы можете изолировать пользователя, работающего с CRON, от пользователя веб-сервера и сделать его намного более безопасным.

Это действительно плохая идея, чтобы вообще иметь вызов exec в вашем PHP, не говоря уже о том, что веб-сервер имеет права root (которые вам нужны здесь).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...