Можно ли использовать PHP для перезагрузки Linux-сервера или перезапустить dhcp? - PullRequest
3 голосов
/ 29 октября 2010

Я попробую какую-нибудь команду, например system(reboot) exec(reboot) и system("/ect/init.d/networking restart"); но не случилось что-то

как мне это сделать?

Ответы [ 6 ]

4 голосов
/ 29 октября 2010

Если вы пытаетесь сделать это через apache и CGI-версию PHP - тогда ответы «нет».PHP будет работать как тот же пользователь, что и apache, и предоставление этому пользователю доступа к вашей системе будет крайне опасно.

3 голосов
/ 29 октября 2010

Вам нужно будет добавить своего пользователя apache в sudoers с помощью NOPASSWD и дать только доступ к перезагрузке, т.е. запустить систему («sudo reboot»);

Для файла sudoersfile:

www-data reboot = NOPASSWD: /sbin/reboot

Это даст apache доступ для перезагрузки вашего сервера, но помните, что все пользователи системы смогут перезагрузиться.

2 голосов
/ 29 октября 2010

как сказал каждый парень, это довольно опасно.Лучше использовать сеанс ssh для перезагрузки / перезапуска вашего сервера / сервисов.

В случае, если вы все еще хотите это сделать, предоставьте вашему работающему apache пользователю (www) право sudo.

1 голос
/ 29 октября 2010

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

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

Другой альтернативой sudo в некоторых системах является dbus. С правильными привилегиями dbus вы можете отправить инструкцию на перезапуск, например,

dbus-send --system --print-reply --dest="org.freedesktop.Hal" /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

Работает из командной строки, и я считаю, что для php доступны привязки dbus.

0 голосов
/ 13 июня 2012

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

#Defaults requiretty
0 голосов
/ 29 октября 2010

Попробуйте это:

<?php
shell_exec("/usr/sbin/reboot");
exec("/usr/sbin/reboot");
system("/usr/sbin/reboot");
?>

Для более подробной информации смотрите здесь:

http://www.linuxquestions.org/questions/linux-newbie-8/shutdown-and-reboot-linux-system-via-php-script-713379/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...