Запустите команду eJabberd register user как 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 ?

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

2

Решение

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

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

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

Замените [FULL PATH TO] на полный путь к этому сценарию.

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

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

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

chmod +s ejabberdctl

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector