URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 81800
[ Назад ]

Исходное сообщение
"Функция exec() PHP, проблема с привилегиями"

Отправлено demob , 03-Сен-08 02:46 
Функция exec() PHP, проблема с привилегиями

Вобщем ситуёвина в следующем, есть 3 строки на php
Код:

exec('killall ventrilo_srv');
echo exec("screen -dmS /ecsys/vnt/ventrilo_srv -d");
echo exec('whoami');

Общая задача скрипта запускать\останавливать\перезапускать ventrilo_srv из браузера.

ventrilo_srv запущен.

Выдают следущее
error_log
ventrilo_srv: no process killed
В браузере
Must run suid root for multiuser support.
apache

Сервер под Fedorcore6+plesk
Вопрос как заставить работать первую и вторую строку ?
С screen -d -m -S экспериментировал не помогло, явно проблема с привилегиями для apache но как решить эту задачу не знаю.
Только плиз подробней я совсем алень в никсах.


Содержание

Сообщения в этом обсуждении
"Функция exec() PHP, проблема с привилегиями"
Отправлено Pahanivo , 03-Сен-08 07:49 
Обычно сервак крутится под своим юзером - не root/
А килы работают тока для рута или вледельца.

Написать скрипт на шеле. Выставить оунером рута, выставить на него setuid bit.
И запускать не команду килл - а сам скрипт, передавая ему параметры.


"Функция exec() PHP, проблема с привилегиями"
Отправлено demob , 03-Сен-08 11:50 
>Обычно сервак крутится под своим юзером - не root/
>А килы работают тока для рута или вледельца.
>
>Написать скрипт на шеле. Выставить оунером рута, выставить на него setuid bit.
>
>И запускать не команду килл - а сам скрипт, передавая ему параметры.
>

Шел скрипт это я так понимаю .sh ? встречал подобное решение у хостера геймсерверов.
Как я писал выше для меня никс это ежедневный ребус, и мне бы маленькие примеры.
Выставить оунером рута-сделать то то
выставить на него setuid bit- сделать то то


"suid shell scripts"
Отправлено Andrey Mitrofanov , 03-Сен-08 12:24 
>Написать скрипт на шеле. Выставить оунером рута, выставить на него setuid bit.

Говорят, "в современных ОС suid бит на шел-скриптах не имеет никакого эффекта"...
G:(suid shell scripts)~


"sudo"
Отправлено Andrey Mitrofanov , 03-Сен-08 12:34 
>exec('killall ventrilo_srv');
>echo exec("screen -dmS /ecsys/vnt/ventrilo_srv -d");
>Вопрос как заставить работать первую и вторую строку ?
>С screen -d -m -S экспериментировал не помогло, явно проблема с привилегиями
>для apache но как решить эту задачу не знаю.
>Только плиз подробней я совсем алень в никсах.

1) Поставить sudo.

2) Настроить sudo, файл /etc/sudoers.
User_Alias      VENT = apache, ivanov, petrov
Cmnd_Alias VENTSTOP = /usr/bin/killall ventrilo_srv
Cmnd_Alias VENTSTART = /usr/bin/screen -dmS /ecsys/vnt/ventrilo_srv -d
Cmnd_Alias VENTSVC = VENTSTOP, VENTSTART
VENT     ALL=NOPASSWD: VENTSVC

(!!) Полные пути к killall и screen в строках ##2 и 3 написать -- так надо.

3) Пускать команды через sudo (если из-под апача ничего не помешает?):

~exec('sudo killall ventrilo_srv');
~echo exec("sudo screen -dmS /ecsys/vnt/ventrilo_srv -d");


"sudo"
Отправлено demob , 03-Сен-08 13:07 
>[оверквотинг удален]
>Cmnd_Alias VENTSVC = VENTSTOP, VENTSTART
>VENT     ALL=NOPASSWD: VENTSVC
>
>(!!) Полные пути к killall и screen в строках ##2 и 3
>написать -- так надо.
>
>3) Пускать команды через sudo (если из-под апача ничего не помешает?):
>
>~exec('sudo killall ventrilo_srv');
>~echo exec("sudo screen -dmS /ecsys/vnt/ventrilo_srv -d");

error_log

>>> sudoers file: syntax error, line 3 <<<

Cannot open audit interface - aborting.



"sudo"
Отправлено demob , 03-Сен-08 13:34 
может проблема в том что запуск через ssh выглядит так ?
# cd /ecsys/vnt
# /ecsys/vnt/ventrilo_srv -d


"sudo"
Отправлено demob , 03-Сен-08 16:12 
>может проблема в том что запуск через ssh выглядит так ?
># cd /ecsys/vnt
># /ecsys/vnt/ventrilo_srv -d

С помощью мата и мануала избавился от предедущих ошибок но появилась новая

Cannot open audit interface - aborting



"sudo"
Отправлено tutitu , 11-Фев-09 18:41 
>>может проблема в том что запуск через ssh выглядит так ?
>># cd /ecsys/vnt
>># /ecsys/vnt/ventrilo_srv -d
>
>С помощью мата и мануала избавился от предедущих ошибок но появилась новая
>
>
>Cannot open audit interface - aborting

Как побороть Cannot open audit interface - aborting?