有没有安全的方法从bash脚本运行CordovaCLI命令作为www-data?

时间:2016-08-13 23:00:20

标签: php linux bash cordova phonegap-cli

如何通过运行bash脚本在Linux Ubuntu Web服务器中安全地运行一些CordovaCLI命令,例如:cordova preparecordova cleancordova platform add android和Apache Cordova 5+,或者从PHP脚本中更好?

2 个答案:

答案 0 :(得分:0)

我解决了这个问题(不确定这是否是最安全的方式)。

我添加了

NOPASSWD:path/to/bash/script

指向/etc/sudoers文件

上的www-data部分的指令

然后我将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访问二进制文件。