Как создавать или редактировать файлы, которые не принадлежат или сгруппированы по www-данным, без смены владельца или группы? - PullRequest
0 голосов
/ 11 июня 2019

Мой PHP-скрипт создает пару ключей ssh ​​и сохраняет ее (file_put_contents) для /home/pi/.ssh/. Этот скрипт отлично работает из командной строки. Но выполнить его с веб-сайта (как пользователь www-data ) не удается: «Предупреждение: не удалось открыть файл file_put_contents (/home/pi/.ssh/...): отказано в доступе».

Я не хочу менять группу файлов или владельца. (Я пытался для тестов, и это работает).

Я не хочу использовать дополнительный сценарий для редактирования этого файла.

Я видел этот вопрос: позволяет php-файлам записываться в места, отличные от тех, которые принадлежат www-data Это решение не то, что я искал.

Я пытался добавить путь (/home/pi/.ssh/) и путь + имя_файла к /etc/sudoers. Это не работает. Похоже, sudoers только для исполняемых файлов?!

Я бы хотел получить решение, подобное записи в /etc/sudoers. Потому что будет еще несколько файлов «вне веб-сервера», которые необходимо редактировать с веб-сайта.

Так скажите, пожалуйста, есть еще один простой вариант?

1 Ответ

0 голосов
/ 12 июня 2019

То, что вы пытаетесь сделать, звучит как супер опасная вещь.

Если у вас есть доступ к серверу, возможно, вы можете попытаться с помощью PHP просто инициировать создание пары ключей SSH. Затем сценарий на сервере (например, задание cront) создаст ключ с использованием, например, разрешения root, а затем поместит его в папку, к которой имеет доступ PHP.

То, что я пытаюсь сказать, это просто делегировать эту задачу другому сценарию, который имеет больше привилегий, чем www-data.

...