Как создать каталог с правами владельца на сервере LAMP, используя PHP? - PullRequest
0 голосов
/ 26 сентября 2018

В настоящее время я использую PHP-приложение в стеке Bitnami LAMP.Я создаю каталог для хранения файлов.Код выглядит следующим образом: -

$directory = "../data/folder";

if (!is_dir($directory)) {
    $owner = "bitnami";
    $group = "bitnami";
    mkdir($directory, 0777, TRUE);

    exec("sudo chown -R ".$owner.":".$group." ".$directory);
}

Когда каталог создается на сервере, владельцем / группой является daemon / daemon.Я хочу, чтобы владелец и группа при создании каталога должны быть bitnami / bitnami.Я попытался запустить команду sudo chown, но, похоже, она не работает.Когда я запускаю ту же команду из оболочки, команда делает bitnami владельцем.

Пожалуйста, дайте мне знать, если возможно сделать bitnami владельцем, когда PHP создает каталог.

1 Ответ

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

Текущий пользователь, когда запускается этот код, - демон.

exec пытается запустить команду sudo из командной строки в качестве демона, который, вполне возможно, либо не настроен, либо запрашивает пароль.Прежде всего, я хочу отметить, что php имеет chown (http://php.net/manual/en/function.chown.php),, однако эту команду может выполнить только суперпользователь, и я предполагаю, что экземпляр не запускается суперпользователем.

В истории я вижу несколько предложений по добавлению пользователей в одну группу для решения проблем с разрешениями. Другой вариант - настроить файл sudoers (/ etc / sudoers), чтобы демон мог запускать chown без пароля.чтобы обновить это, но из https://unix.stackexchange.com/questions/18830/how-to-run-a-specific-program-as-root-without-a-password-prompt что-то вроде этого

       daemon ALL = (root) NOPASSWD: /usr/bin/chown

должно работать, и пусть ваш exec должен преуспеть в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...