1

Я работаю над проектом виртуальной машины, где я использую два сервера, назовем их сервером 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

1 ответ1

0

Вы должны сделать www-data владельцем /home /john /images, или добавить его в группу john, предоставляя ему надлежащие права на запись, или изменить эту папку на 777.


Попробуй это:

chmod 777 /home/john/images/

Затем вы даете кому-либо права на эту папку, в том числе www-data.

Это может быть слишком много, поэтому, если это работает, вы можете ограничить права. Вы можете добавить www-данные в группу john:

groups www-data
groups john
usermod -aG john www-data

Сначала вы видите, к каким группам относятся www-data и john. Затем вы добавляете www-данные в john-group.

Теперь вы должны ограничить права на эту папку:

chmod 775 /home/john/images/
ls -al /home/john/images/

Теперь пользователь 'john' и все члены группы 'john' имеют права на запись.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .