Отсутствуют разрешения на отображение чего-либо через shell_exec ()

Я хочу использовать функцию 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? Заранее спасибо!

0
18.10.2017, 22:09
0 ответов

Теги

Похожие вопросы