gpt4 book ai didi

php - 从 PHP 创建 ejabberd 用户

转载 作者:可可西里 更新时间:2023-10-31 22:41:58 26 4
gpt4 key购买 nike

我需要从 PHP 脚本创建一个 ejabberd 用户。我还需要能够将新用户添加到预定义的共享名单中。

我应该使用 exec() 调用 ejabberdctl 还是有更好的方法?

最佳答案

这是我的最终解决方案:

感谢jldupont's advice ejabberdctl 将是最简单的解决方案,我克服了遇到的障碍并获得了可行的解决方案。

默认情况下,apache 的用户没有成功运行 ejabberdctl 的正确权限(这是有充分理由的)。所以为了让它工作,你必须用 sudo 调用它。但是... sudo 需要密码,这会带来两个问题:

  1. apache 用户没有密码。
  2. 即使有,也无法从 PHP 输入。

解决方案(对于 Ubuntu)- 在 /etc/sudoers 的末尾添加这一行:

www-data ALL= (ejabberd) NOPASSWD: /usr/sbin/ejabberdctl

sudoers 文件和 ejabberdctl 的路径可能因其他 Linux 发行版而异。这允许 apache 的用户 (www-data) 仅以提升的权限运行 ejabberdctl 而无需密码。

剩下的就是 PHP 代码了:

<?php
$username = 'tester';
$password = 'testerspassword';
$node = 'myserver.com';
exec('sudo -u ejabberd /usr/sbin/ejabberdctl register '.$username.' '.$node.' '.$password.' 2>&1',$output,$status);
if($output == 0)
{
// Success!
}
else
{
// Failure, $output has the details
echo '<pre>';
foreach($output as $o)
{
echo $o."\n";
}
echo '</pre>';
}
?>

安全

重要的是要注意,即使您只允许 www-data 运行一个命令,这也会带来重大的安全风险。如果您使用这种方法,您需要确保在某种身份验证后保护 PHP 代码,以便不是任何人都可以执行它。除了明显的安全风险外,它还可能使您的服务器面临拒绝服务攻击。

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

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