Используя shell_exec или exec от имени другого пользователя Unix?

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

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

4 ответа

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

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

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

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

Вы можете настроить 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).

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

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

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

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

Другие вопросы по тегам