Я работаю над проектом виртуальной машины, где я использую два сервера, назовем их сервером A и сервером B, оба с установленной Ubuntu 14.04 LTS.
На сервере A работает веб-сервер Apache2 с веб-сайтом, на котором пользователи могут заказать виртуальные частные серверы. Как только процесс заказа пользователя завершен, пользователь нажимает кнопку, которая создает следующую команду с помощью функции PHP exec().
ssh -p 22 john@serverB.com fallocate -l 2048M /home/john/images/guest.img 2>&1
Это должно создать образ на сервере B, где в конечном итоге создается виртуальный частный сервер пользователя. Выполнение предыдущей команды с пользователем john прекрасно работает, но поскольку команда запускается через PHP, www-data является пользователем, выполняющим ее.
Как и ожидалось, я получаю следующие ошибки:
array(3) {
[0]=>
string(36) "Permission denied, please try again."
[1]=>
string(36) "Permission denied, please try again."
[2]=>
string(39) "Permission denied (publickey,password)."
}
Я знаю о рисках безопасности, связанных с предоставлением этому пользователю прав sudo для того, чтобы стать другим пользователем и выполнить команду как "john". Поэтому мой вопрос для этого: есть ли другой способ выполнить эту операцию без изменения разрешений www-данных? Я считаю, что SSH - это единственный способ создать что-то на удаленном сервере, или я ошибаюсь?
Я не собираюсь запускать сайт на сервере B, чтобы создавать эти изображения локально, это не то, что я хочу.
Стоит ли пытаться ответить на этот сценарий этого пользователя? https://superuser.com/a/547577/514523