Назад | Перейти на главную страницу

Как зарегистрировать пользователя на ejabberd с помощью php-кода?

Я пытаюсь зарегистрировать пользователя на сервере ejabberd linux.

Я использую ниже php-код

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

Но когда я запускаю файл, я получаю следующую ошибку:

sudo: /etc/sudoers.d is world writable
        [sudo] password for daemon:

Также я нашел решение из URL-адреса ниже, чтобы поместить код ниже в configure.cfg

%admin ALL=(ALL) NOPASSWD: ALL

sudo в php exec ()

но я не понимаю, как это использовать

Пожалуйста помоги

Сообщения об ошибках читать сложно:

sudo: /etc/sudoers.d is world writable

У вас неправильные права доступа к каталогу /etc/sudoers.d. Этот каталог не должен быть доступен для записи всем (если вы разрешите это (и sudo примет это), тогда любой пользователь может предоставить себе привилегии sudo, что является плохой вещью.TM)
Исправьте это!

[sudo] password for daemon:

Хммм. Ваш PHP-код работает от имени пользователя daemon ...

Затем предоставление прав sudo группе admin вероятно, неэффективен ... Вместо этого предоставьте правильные права нужному пользователю. Для синтаксиса: man usedoers