Используя shell_exec или exec от имени другого пользователя Unix? - PullRequest
3 голосов
/ 25 августа 2011

Могу ли я сделать вход в PHP под другим пользователем при запуске shell_exec или exec?

Я не хочу, чтобы он использовал пользователя www-data, поскольку я хочу выполнять команды от имени пользователя git для создания репозитариев на текущем компьютере.

Ответы [ 4 ]

7 голосов
/ 25 августа 2011

Могу ли я сделать вход в PHP под другим пользователем при запуске shell_exec или EXEC

Это рискованный вариант, и он может создать серьезную дыру в безопасности вашего сервера. Этого следует избегать.

я хочу выполнять команды от имени пользователя git

Я бы посоветовал вашему веб-приложению записать в таблицу базы данных информацию о новом репо, который необходимо создать. Затем запустите постоянно запущенный процесс (или тот, который вызывается через cron) на сервере, который запускается от имени пользователя git. Этот процесс может периодически проверять этот ресурс и создавать репо. Таким образом, ваш веб-сервер не переключается пользователем, и вы все еще можете безопасно создать новое хранилище.

2 голосов
/ 25 августа 2011

Вы можете настроить sudo, чтобы разрешить это. Вам нужно дать пользователю www-data разрешение sudo пользователю git (через /etc/sudoers) (возможно, без пароля).

есть:

shell_exec('sudo -u GIT_USER -S your_git_command');

В качестве другого варианта, можно настроить Apache для запуска вашего виртуального хоста от имени пользователя, отличного от www-date (см. Suphp - http://www.suphp.org/Home.html).

1 голос
/ 25 августа 2011

Конечно. Как насчет использования sudo -u newuser?

0 голосов
/ 19 марта 2014

Как вы даете пользователю www-data разрешение sudo пользователю git через / etc / sudoers без пароля?

будет ли работать следующее?

www-data ALL = git_user NOPASSWD: имя_команды

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