Linux - 通过PHP创建用户

时间:2015-07-31 00:23:20

标签: php linux bash permissions

我正在编写一个调用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

它仍然无法运作。 有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:2)

你试图让PHP在网络服务器上以root身份运行任意代码 - 这是非常不可取的,好像有人要在你的代码中找到一个漏洞并注入自己的漏洞,他们会从字面上看,他们可以用你的服务器做任何他们喜欢的事!

话虽这么说,您可以使用exec("command");调用外部脚本或使用反写函数:

$command_output = `shell_command`;

有关详细信息,请参阅php's exec function

如果您确实想继续这样做,我建议您存储您的脚本(您想要运行的顶部的脚本),然后使用exec()调用该脚本,同时仅允许sudo无密码访问那个脚本。

其他

您可能想尝试shell_exec而不是exec - 这会在shell 中运行您的命令,我认为这可能会解决您可能遇到的任何环境问题。