我正在编写一个调用bash脚本的PHP程序。我使用的是Linux(Centos)。我试图通过在PHP页面中输入用户名和密码来在Linux中创建新用户。这是我使用的脚本:
egrep "^$1" /etc/passwd >/dev/null
if [ $? -eq 0 ]; then
echo "$1 exists!"
exit 1
else
sudo useradd -m -p $2 $1
[ $? -eq 0 ] && echo "User has been added to system!" || echo "Failed to add a user!"
fi
这是我从PHP调用脚本的方式:
echo exec("/var/www/html/addUser.sh ".$username." ".$password);
从终端运行时它可以工作,但是从PHP调用脚本时它不起作用。这是权限问题。我该怎么办才能让PHP(apache)也添加用户? 我已经尝试过添加“apache”'以用户和团体的形式视觉:
%apache ALL=(ALL) NOPASSWD: ALL
apache ALL=(ALL) ALL
它仍然无法运作。 有任何想法吗?感谢。
答案 0 :(得分:2)
你试图让PHP在网络服务器上以root身份运行任意代码 - 这是非常不可取的,好像有人要在你的代码中找到一个漏洞并注入自己的漏洞,他们会从字面上看,他们可以用你的服务器做任何他们喜欢的事!
话虽这么说,您可以使用exec("command");
调用外部脚本或使用反写函数:
$command_output = `shell_command`;
有关详细信息,请参阅php's exec function
如果您确实想继续这样做,我建议您存储您的脚本(您想要运行的顶部的脚本),然后使用exec()
调用该脚本,同时仅允许sudo无密码访问那个脚本。
其他强>
您可能想尝试shell_exec而不是exec - 这会在shell 中运行您的命令,我认为这可能会解决您可能遇到的任何环境问题。