Здравсвуйте.
Хотел запустиь команду telinit 0 при помощи php, когда нажимаешь кнопку на web-страничке, но там какие-то проблемы с правами. Можно как-нибудь из php запустить программы с правами root, что-то вреде `telinit 3`? Спасибо.
Решено: как запустить telinit из php скрипта под апачем?
Модераторы: SLEDopit, Модераторы разделов
-
Frank
- Сообщения: 1059
- ОС: Ubuntu, Debian
Re: Решено: как запустить telinit из php скрипта под апачем?
два варианта:
1) создаешь файл-флаг где-то, где его может делать только апач, и неккий демон, запущенный от рута, следит за его появлением, делая нужное действие при появлении и убивая файл-флаг
2) делаешь демона суидным (ставишь на него suid bit) и запускаешь апачем по кнопке (палевно).
1) создаешь файл-флаг где-то, где его может делать только апач, и неккий демон, запущенный от рута, следит за его появлением, делая нужное действие при появлении и убивая файл-флаг
2) делаешь демона суидным (ставишь на него suid bit) и запускаешь апачем по кнопке (палевно).

-
Ленивая Бестолочь
- Бывший модератор
- Сообщения: 2760
- ОС: Debian; gentoo
Re: Решено: как запустить telinit из php скрипта под апачем?
можно еще сделать это через sudo.
пы.сы.
пы.сы.
i Уведомление от модератора Ленивая Бестолочь называйте темы так, чтобы было понятно, что в них обсуждается.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
-
Brabashka
- Сообщения: 84
Re: Решено: как запустить telinit из php скрипта под апачем?
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 скрипта под апачем?
shell_exec("sudo .../shutdown");
Три точки? А не две? Да и, по моему, лучше указать полный путь.
/earth: file system full
-
Brabashka
- Сообщения: 84
Re: Решено: как запустить telinit из php скрипта под апачем?
Я часть полного пути заменил 3 точками. А вообще полный путь указан. Почему-то php-код не выполняется. php вообще работает.
-
sim1
- Сообщения: 155
- ОС: GNU,BSD
Re: Решено: как запустить telinit из php скрипта под апачем?
Brabashka писал(а): ↑17.06.2009 07:59Sudo работает, только вот застваить при нажатии кнопки выполнить команду не могу. Что с этим скриптом не так?
Код: Выделить всё
<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") {
}Разработка программ для *nix
-
Brabashka
- Сообщения: 84
Re: Решено: как запустить telinit из php скрипта под апачем?
Я сделал так в результате ошибка 500
-
Brabashka
- Сообщения: 84
Re: Решено: как запустить telinit из php скрипта под апачем?
Решились все проблемы. Добавил isset().