Используя 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).
Как вы даете пользователю www-data разрешение sudo пользователю git через /etc/sudoers без пароля?
будет следующая работа?
www-data ALL = git_user NOPASSWD: имя_команды