Функция 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 но как решить эту задачу не знаю.
Только плиз подробней я совсем алень в никсах.
Обычно сервак крутится под своим юзером - не root/
А килы работают тока для рута или вледельца.Написать скрипт на шеле. Выставить оунером рута, выставить на него setuid bit.
И запускать не команду килл - а сам скрипт, передавая ему параметры.
>Обычно сервак крутится под своим юзером - не root/
>А килы работают тока для рута или вледельца.
>
>Написать скрипт на шеле. Выставить оунером рута, выставить на него setuid bit.
>
>И запускать не команду килл - а сам скрипт, передавая ему параметры.
>Шел скрипт это я так понимаю .sh ? встречал подобное решение у хостера геймсерверов.
Как я писал выше для меня никс это ежедневный ребус, и мне бы маленькие примеры.
Выставить оунером рута-сделать то то
выставить на него setuid bit- сделать то то
>Написать скрипт на шеле. Выставить оунером рута, выставить на него setuid bit.Говорят, "в современных ОС suid бит на шел-скриптах не имеет никакого эффекта"...
G:(suid shell scripts)~
>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");
>[оверквотинг удален]
>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.
может проблема в том что запуск через ssh выглядит так ?
# cd /ecsys/vnt
# /ecsys/vnt/ventrilo_srv -d
>может проблема в том что запуск через ssh выглядит так ?
># cd /ecsys/vnt
># /ecsys/vnt/ventrilo_srv -dС помощью мата и мануала избавился от предедущих ошибок но появилась новая
Cannot open audit interface - aborting
>>может проблема в том что запуск через ssh выглядит так ?
>># cd /ecsys/vnt
>># /ecsys/vnt/ventrilo_srv -d
>
>С помощью мата и мануала избавился от предедущих ошибок но появилась новая
>
>
>Cannot open audit interface - abortingКак побороть Cannot open audit interface - aborting?