Запустите команду eJabberd зарегистрировать пользователя от имени пользователя root/обычного пользователя


Я установил ejabberd и он работает нормально. Теперь мне нужно интегрировать регистрацию и другие функции с PHP кодом.

Я пытаюсь запустить следующий скрипт для регистрации пользователя с использованием PHP-кода:

<?php
error_reporting(E_ALL);
ini_set('display_errors', '-1');

$username   = 'user1';
$password   = '123456';
$node       = 'localhost';

exec('echo <password> | sudo -u root -S ejabberdctl register '.$username.' '.$node.' '.$password.' 2>&1',$output,$status);

if($output == 0)
{
    echo "User created successfully.";
}
else
{
    // Failure, $output has the details
    echo '<pre>';
    foreach($output as $o)
    {
        echo $o."\n";
    }
    echo '</pre>';
}
?>

Но это дает мне следующую ошибку:

[sudo] password for www-data: Sorry, try again.
[sudo] password for www-data:
sudo: 1 incorrect password attempt

Есть ли какой-либо другой способ запуска команд ejabberd с использованием PHP ?

Любая ссылка будет очень полезна. Заранее спасибо.

Author: tejashsoni111, 2015-11-19

1 answers

Ваш веб-сервис будет запущен как пользователь www-data в Ubuntu. Вы можете разрешить этот запуск выполнять определенные команды от имени пользователя root с помощью /etc/sudoers.

Добавьте эту строку в свои sudoers.

www-data  ALL = NOPASSWD: /[FULL PATH TO]ejabberdctl

Замените [ПОЛНЫЙ ПУТЬ К] полным путем к этому сценарию.

Что это сделает, так это скажет, что пользователь www-data может запустить скрипт в этом месте как root. В нем также говорится, что пароль не требуется.

Очевидно, что это связано с некоторыми соображениями безопасности - убедитесь, что вы доверяете сценарию и что он не может быть заменен другим вредоносным кодом.

Альтернативным решением было бы заставить ejabberdctl всегда запускаться от имени root. Для этого используйте это в исполняемом файле.

chmod +s ejabberdctl

Еще раз это может иметь последствия, так как теперь любой пользователь в вашей системе может использовать эту команду. Вы должны продумать различные сценарии и выбрать тот, который представляет наименьший риск для ваших конкретных обстоятельств.

 2
Author: Steve E., 2015-11-19 13:48:37