Запустите команду 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 ?
Любая ссылка будет очень полезна. Заранее спасибо.
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
Еще раз это может иметь последствия, так как теперь любой пользователь в вашей системе может использовать эту команду. Вы должны продумать различные сценарии и выбрать тот, который представляет наименьший риск для ваших конкретных обстоятельств.