Я хочу использовать функцию PHP shell_exec ()
чтобы отправить что-то в локальный сокет.
Мой текущий подход выглядит так:
sudo -s echo "foobar" > /dev/tcp/192.168.178.41/8080
Когда я запускаю эту команду в командной строке, все работает отлично . Однако, когда я пытаюсь выполнить это в сценарии PHP, ничего не происходит .
Нет даже ошибки в / var / log / httpd / apache24-error_log
. (Да, это правильный путь.)
Я использую Synology Diskstation с операционной системой, подобной Linux.
echo exec ("whoami");
. Он вернул http
. По сути, пользователь apache называется http
. Затем я изменил файл / etc / sudoers
, чтобы предоставить пользователю все необходимые разрешения. В моем дистрибутиве linux нет visudo
, поэтому мне пришлось отредактировать его вручную. Теперь это выглядит так:
# Разрешить регистрацию вывода команды.# Используйте Sudoreplay для воспроизведения записанных сеансов.
По умолчанию syslog = authpriv
# Разрешить root выполнять любую команду
root ВСЕ = (ВСЕ) ВСЕ
# Разрешить членам администраторов группы выполнять любую команду
% administrators ALL = (ВСЕ) ВСЕ
# Настроить привилегию колесной группы
Cmnd_Alias SHELL = / bin / ash, / bin / sh, / bin / bash
Cmnd_Alias SU = / usr / bin / su
% wheel ALL = (ALL) NOPASSWD: ALL,! SHELL,! SU
http ALL = NOPASSWD: / bin / sudo, / bin / echo, / usr / bin / sudo, / usr / bin / echo
Как я могу успешно запустить эту команду с помощью PHP? Заранее спасибо!