我正在尝试研究如何将变量从php转换为脚本,因为我想创建一个用户注册页面,以便用户可以注册,php将调用脚本并将变量发送给它。
特别是这行我遇到了麻烦(在php页面中):
PHP:
$ results = bash /home/*******/public_html/add_user $login '$pwd'
;
add_user.sh:
#!/bin/bash
adduser -u "$1" -p "$2" -g users -s /bin/bash
答案 0 :(得分:1)
$results = exec("bash /home/*******/public_html/add_user $login '$pwd'");
请记住,运行此过程的用户(网络用户,可能是www-data,www,web等)必须具有sudo或提升权限才能执行此操作。我还要提醒你不要这样做,除非你真的花时间考虑所有的影响和后果,如果你把它暴露在网上。
答案 1 :(得分:1)
如果您真的想从PHP调用外部程序,可以使用system()
或exec()
之类的调用来执行此操作。您必须使用PHP变量在PHP中构建命令行。
话虽如此,这种方法是Web应用程序中最常见的安全漏洞源之一。您必须不遗余力地确保您要传递的数据有效且正确(想想如果$login
包含"; rm -rf /"
会发生什么)。
另一个考虑因素是adduser
需要超级用户权限。上次我检查过,shell脚本不支持SUID,所以我不确定这种简单的方法是否可行 - 您可能需要使用sudo
或重写Perl中的脚本(例如)并使用{{1 }}
答案 2 :(得分:0)
您可以从PHP脚本中回显变量,并将其读入shell变量:
read -r user pass < <(/path/to/php/script.php)