Перезапуск сервера Linux через веб-браузер (PHP)

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

Я пытаюсь настроить средство перезагрузки/выполнения других системных функций через веб-интерфейс, работающий на HTML (для кнопок / текста) и PHP (для выполнение указанных функций).

Я не могу заставить это работать. Я прочитал, что мне нужно добавить веб-пользователя в файл sudoers, и я попытался. Я запускаю Nginx на своем сервере, как Добавить пользователя в sudoers в моем случае?

кроме того, я знаю о рисках безопасности.

вот что у меня пока есть:

HTML (index.HTML-код):

<body>

<h3>Restart</h3>
<p>
<form action="restart.php" method="get">
  <input type="submit" value="Press me.">
</form>
</p>

</body>

в PHP (перезапуск.php):

<?php
echo "This is a test";
echo "<br>";
echo "<br>";
echo shell_exec('ifconfig');
echo "<br>";
echo "<br>";
echo "Restarting server...";
exec ('/usr/bin/sudo /etc/init.d/portmap restart');
shell_exec("/sbin/reboot");
exec("/sbin/reboot");
system("/sbin/reboot");
?>

пользователям использовать sudo?:

# User privilege specification
root    ALL=(ALL:ALL) ALL
www-data reboot = NOPASSWD: /sbin/reboot

Это все на Ubuntu 14.04 LEMP.

3 ответов


вы можете сделать это либо путем редактирования файла sudoers:

пользователям использовать sudo?:

www-data ALL=(root) NOPASSWD: /sbin/reboot 

на сначала все для имени хоста если вы Имя хоста не 'перезагрузка' я советую вам сохранить все, как он будет работать в любом имени хоста. Вот почему он не работает на вашем сервере

перезагрузка.в PHP

exec('sudo /sbin/reboot');

или без редактирования ваших sudoers файл.

  • сначала создайте файл, в котором вы собираетесь хранить пароль root

~/пароль :

myrootpassword
  • второй запустите любую команду, которую вы хотите, будучи root из файла php (не забудьте указать файл, в котором хранится ваш пароль)

phpfile.на PHP :

exec('sudo -u root -S /sbin/reboot < ~/password');

 www-data reboot = NOPASSWD: /sbin/reboot

это означает, что вам не нужен пароль при запуске sudo, а не то, что команда выполняется как sudo при запуске этим пользователем.

ответ заключается в использовании sudo /sbin/reboot команды


вы можете использовать puty. Я думаю, что использование php не является хорошим планом.