-2

我正在尝试编写一个 php 脚本来将用户添加到 LDAP。为此,我有一个名为“addldapuser.sh”的 shell 脚本,它将接受用户/屏幕名/密码组合并将它们添加到 LDAP。该脚本可以正常工作。我们希望用户能够在 Web 表单上输入他们的信息,然后该表单将调用所述脚本并将用户正确添加到 LDAP。addldapuser 脚本目前需要以 root 身份运行,虽然我知道安全问题,但可以稍后处理。我已经尝试了我能想到或找到的所有东西,给出了我能想到的所有许可,给出了我能扎根的所有东西,在 Apache 上混了一段时间,现在我没有想法了。

$scrName = $_POST['screenname'];
$usrName = $_POST['username'];
$pass = $_POST['password'];

if (isset($_POST['submit']))
{
    $out =  nl2br(shell_exec("sudo /EasyLDAP/old_scripts/addldapuser.sh " . $usrName . " " . $scrName . " " . $pass));

}

再一次,我知道这只是一个可怕的想法,肯定会导致黑客永远摧毁我们所有人,但我的老板希望我至少让它以这种方式运行。

我知道我们至少应该清理输入,并且会在适当的时候处理。

4

2 回答 2

1

我建议创建一个守护进程,它将以 root 身份运行,并与在用户级别运行的脚本进行通信。

您可以做非常简单的python rpc 服务器(例如,内置的XML-RPC)和一个客户端作为粘合剂,将其中一个作为服务器和root 运行,另一个作为客户端脚本运行。

然后,php 代码将使用所需参数执行 python 脚本,然后可以与 python 服务器脚本通信。

作为一个好处,如果您做好服务器部分,您将获得潜在的安全性。我选择 python 作为一种语言,它内置了大部分功能并且使用起来非常简单。

例子:

服务器 - http://docs.python.org/library/simplexmlrpcserver.html#simplexmlrpcserver-example

客户端 - http://docs.python.org/library/xmlrpclib.html#example-of-client-usage

或者,如果您坚持使用 php,您可以将服务器进程作为php 守护进程运行,并通过一些类似的 RPC 方式连接到它。

于 2012-05-09T19:28:07.580 回答
1

我最近发布了一个项目,可以让 PHP 获得一个真正的 Bash shell 并与之交互,你可以很容易地用 root 获得一个 shell。在这里获取:https ://github.com/merlinthemagic/MTS

下载后,您只需使用以下代码:

$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);

$strCmd = "/EasyLDAP/old_scripts/addldapuser.sh " . $usrName . " " . $scrName . " " . $pass;
$return1  = $shell->exeCmd($strCmd);

echo $return1;// return from your script
于 2016-05-26T10:07:28.890 回答