Что я должен сделать для безопасного запуска некоторых команд CordovaCLI, таких как: cordova prepare
, cordova clean
, cordova platform add android
с Apache Cordova 5+ в Linux на веб-сервере Ubuntu с помощью скрипта bash, или даже лучше из скрипта php?
Я решил это (не уверен, если это самый безопасный способ, хотя).
я добавил
NOPASSWD:path/to/bash/script
директива к моему разделу www-данных на /etc/sudoers
файл
Затем я установил владельца bash-script.sh
в www-data
Наконец я выполнил оболочку в php используя
sudo -u www-data /path/to/bash/script/bash-script.bash
И до сих пор это работает, хотя я не уверен, что это безопасный метод, чтобы считать его окончательным решением.
Вот проект, который дает вам настоящую Bash Shell: https://github.com/merlinthemagic/MTS
После установки вы получаете оболочку следующим образом:
$shellObj = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', false);
$ ShellObj теперь содержит объект оболочки, вошедший в систему с тем же использованием, что и php.
Теперь вы можете выполнять команды для этой оболочки следующим образом:
$returnData1 = $shellObj->exeCmd("cordova clean");
//or
$returnData2 = $shellObj->exeCmd("cordova platform add android");
Ваш вопрос сосредоточен на безопасности, и оболочка вошла как тот же пользователь, который запускает php, поэтому повышение прав не выполняется. Однако, если вам требуется повышенный доступ для выполнения двоичного файла cordova, тогда предоставьте пользователю вашего веб-сервера sudo доступ к двоичному файлу.