Невозможно получить доступ к сеансу tmux через php (shell_exec) - PullRequest
0 голосов
/ 23 сентября 2018

Я создал сеанс tmux на сервере Ubuntu 18.04.Чтобы предоставить нескольким пользователям linux доступ к одному и тому же сеансу, я следовал этим инструкциям . Все работает нормально, когда я пытаюсь получить доступ к сокету / сеансу tmux от «обычных» пользователей через командную строку.

Я собираюсь создать сценарий для веб-сайта, на котором я хочу запустить или убить эту сессию.Как и в приведенном выше руководстве, я добавил пользователя www-data в группу, которая использует сокет tmux.Для выполнения этих команд tmux над php в качестве суперпользователя я добавил эту строку www-data ALL=NOPASSWD: /usr/bin/tmux в файл visudo.

Когда я хочу завершить уже запущенный сеанс с помощью php (shell_exec), он говорит:

"нет сервера, работающего на watten_tmux_socket".

Хотя я могу завершить этот сеанс той же командой, что и "обычный" пользователь.Что здесь не так?

sudo tmux -S /tmp/watten_tmux_socket kill-session -t WattenServer

EDIT : Запуск сеанса через сокет поверх php также не работает.В / tmp не создается ни сеанса, ни сокета, а в командной строке это работает.

1 Ответ

0 голосов
/ 23 сентября 2018

Хорошо, я сделал обходной путь.Использование sudo в PHP очень небезопасно, поэтому теперь, когда я хочу запустить или завершить новый сеанс tmux через php, я изменяю содержимое txt-файла (что-то вроде servertate: on).Я установил incron apt-get install incron.С помощью incrontab вы можете регистрировать некоторые события сортировки при изменении файла.Поэтому теперь, когда я изменяю содержимое этого файла, запускается скрипт, который запускает или убивает сеанс tmux.

Ссылка: Учебник Incron

...