Решено: как запустить telinit из php скрипта под апачем?

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модераторы: SLEDopit, Модераторы разделов

Brabashka
Сообщения: 84

Решено: как запустить telinit из php скрипта под апачем?

Сообщение Brabashka »

Здравсвуйте.

Хотел запустиь команду telinit 0 при помощи php, когда нажимаешь кнопку на web-страничке, но там какие-то проблемы с правами. Можно как-нибудь из php запустить программы с правами root, что-то вреде `telinit 3`? Спасибо.
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: Решено: как запустить telinit из php скрипта под апачем?

Сообщение Frank »

два варианта:
1) создаешь файл-флаг где-то, где его может делать только апач, и неккий демон, запущенный от рута, следит за его появлением, делая нужное действие при появлении и убивая файл-флаг
2) делаешь демона суидным (ставишь на него suid bit) и запускаешь апачем по кнопке (палевно).
Изображение
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Решено: как запустить telinit из php скрипта под апачем?

Сообщение Ленивая Бестолочь »

можно еще сделать это через sudo.

пы.сы.
iУведомление от модератора Ленивая Бестолочь
называйте темы так, чтобы было понятно, что в них обсуждается.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Brabashka
Сообщения: 84

Re: Решено: как запустить telinit из php скрипта под апачем?

Сообщение Brabashka »

Sudo работает, только вот застваить при нажатии кнопки выполнить команду не могу. Что с этим скриптом не так?

Код: Выделить всё

<HTML>
<HEAD>
<TITLE>Shutdown server</TITLE>
</HEAD>
<BODY>
<?php
    if($submit == "shutdown"){
    $output = shell_exec("sudo .../shutdown");
    if($output == 0){
        echo "OK";
    }else
        echo "Failure";
    exit;
    }
?>
    <form action="<?php echo($PHP_SELF)?>" method="POST">
    <p>Press button <input type="submit" name="submit" value="shutdown"></p>
    </form>
</BODY>
</HTML>
Спасибо сказали:
Аватара пользователя
strah
Сообщения: 283
ОС: Freebsd, linux, Solaris.

Re: Решено: как запустить telinit из php скрипта под апачем?

Сообщение strah »

shell_exec("sudo .../shutdown");

Три точки? А не две? Да и, по моему, лучше указать полный путь.
/earth: file system full
Спасибо сказали:
Brabashka
Сообщения: 84

Re: Решено: как запустить telinit из php скрипта под апачем?

Сообщение Brabashka »

Я часть полного пути заменил 3 точками. А вообще полный путь указан. Почему-то php-код не выполняется. php вообще работает.
Спасибо сказали:
sim1
Сообщения: 155
ОС: GNU,BSD

Re: Решено: как запустить telinit из php скрипта под апачем?

Сообщение sim1 »

Brabashka писал(а):
17.06.2009 07:59
Sudo работает, только вот застваить при нажатии кнопки выполнить команду не могу. Что с этим скриптом не так?

Код: Выделить всё

<HTML>
<HEAD>
<TITLE>Shutdown server</TITLE>
</HEAD>
<BODY>
<?php
    if($submit == "shutdown"){
    $output = shell_exec("sudo .../shutdown");
    if($output == 0){
        echo "OK";
    }else
        echo "Failure";
    exit;
    }
?>
    <form action="<?php echo($PHP_SELF)?>" method="POST">
    <p>Press button <input type="submit" name="submit" value="shutdown"></p>
    </form>
</BODY>
</HTML>

Я незнаю как у вас настроен php, если register_globals = on (крайне не рекомендую использовать, хотя если это делается осознано, тогда другое дело) то наверное должно работать. Однако по дефолту начиная в версии php 4.2.0 register_global = off. Если у вас register_global=off, что скорее всего так оно и есть (судя по разделу), то тогда нужно писать вот так вот

Код: Выделить всё

if($_POST['submit'] == "shutdown") {
}
Спасибо сказали:
Brabashka
Сообщения: 84

Re: Решено: как запустить telinit из php скрипта под апачем?

Сообщение Brabashka »

Я сделал так в результате ошибка 500
Спасибо сказали:
Brabashka
Сообщения: 84

Re: Решено: как запустить telinit из php скрипта под апачем?

Сообщение Brabashka »

Решились все проблемы. Добавил isset().
Спасибо сказали: