gpt4 book ai didi

php - Linux - 通过 PHP 创建用户

转载 作者:太空宇宙 更新时间:2023-11-04 09:30:42 25 4
gpt4 key购买 nike

我正在编写一个调用 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”作为用户和组添加到 visudo:

%apache ALL=(ALL)   NOPASSWD: ALL
apache ALL=(ALL) ALL

还是不行。有任何想法吗?谢谢。

最佳答案

您正试图让 PHP 在 Web 服务器上以 root 身份 运行任意代码——这是极不可取的,就好像有人要在您的代码中找到一个漏洞并注入(inject)他们自己的代码一样,他们会从字面上看,他们可以对您的服务器做任何他们喜欢的事情!

也就是说,您可以使用 exec("command"); 调用外部脚本或使用反引号,例如:

$command_output = `shell_command`;

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

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

附加:

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

关于php - Linux - 通过 PHP 创建用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31736211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com