0

我正在尝试研究如何将变量从 php 获取到脚本中,因为我想创建一个用户注册页面,以便用户可以注册并且 php 将调用脚本并将变量发送给它。

特别是这一行我遇到了麻烦(它在php页面中):

PHP: $结果 = bash /home/*******/public_html/add_user $login '$pwd';

add_user.sh:

#!/bin/bash
adduser -u "$1" -p "$2" -g users -s /bin/bash
4

3 回答 3

1

执行

$results = exec("bash /home/*******/public_html/add_user $login '$pwd'");

请记住,运行此进程的用户(网络用户,可能是 www-data、www、web 等)必须具有 sudo 或提升的访问权限才能执行此操作。我还想告诫不要这样做,除非你真的花时间考虑了所有的影响和后果,如果你把它暴露在网络上。

于 2013-11-04T15:19:11.837 回答
1

如果你真的想从 PHP 调用一个外部程序,你可以使用类似system()或的调用exec()来做到这一点。您必须使用 PHP 变量在 PHP 中构建命令行。

话虽如此,这种方法是 Web 应用程序中最常见的安全漏洞来源之一。您将不得不竭尽全力确保您将要传递的数据是有效且正确的(想想如果$logincontains会发生什么"; rm -rf /")。

adduser另一个考虑因素是需要超级用户权限的事实。上次我检查时,shell 脚本不支持 SUID,所以我不确定直接的方法是否可行 - 您可能需要使用sudo或重写 Perl 中的脚本(例如)并使用suidperl.

于 2013-11-04T15:24:52.303 回答
0

您可以从 PHP 脚本中回显变量并将其读入 shell 变量,如下所示:

read -r user pass < <(/path/to/php/script.php)
于 2013-11-04T15:19:26.433 回答