如何通过运行bash脚本在Linux Ubuntu Web服务器中安全地运行一些CordovaCLI命令,例如:cordova prepare
,cordova clean
,cordova platform add android
和Apache Cordova 5+,或者从PHP脚本中更好?
答案 0 :(得分:0)
我解决了这个问题(不确定这是否是最安全的方式)。
我添加了
NOPASSWD:path/to/bash/script
指向/etc/sudoers
文件
然后我将bash-script.sh
的所有者设为www-data
最后我使用
在php中执行了一个shell sudo -u www-data /path/to/bash/script/bash-script.bash
到目前为止,它正在发挥作用,尽管我不确定这是一种将其视为最终解决方案的安全方法。
答案 1 :(得分:0)
这是一个为您提供真正的Bash Shell的项目:https://github.com/merlinthemagic/MTS
安装完成后,您将通过以下方式获得shell:
$shellObj = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', false);
$ shellObj现在包含一个以执行php的相同用法登录的shell对象。
现在,您可以通过以下方式对该shell执行命令:
$returnData1 = $shellObj->exeCmd("cordova clean");
//or
$returnData2 = $shellObj->exeCmd("cordova platform add android");
您的问题以安全性为中心,shell以运行php的同一用户身份登录,因此不会执行任何提升。但是,如果您需要提升访问权来执行cordova二进制文件,那么允许您的Web服务器用户sudo访问二进制文件。