запуск от имени

macros

Guest
запуск от имени

Возможно ли каким-нибудь путём организовать запуск определённого скрипта от имени определённого владельца. Нужно это из-за того, что скрипт вносит изменения в документы, имеющие атрибут 644.
 

Фанат

oncle terrible
Команда форума
обычно, такая функциональность достигается выставлением атрибута 0777 на документ.
 

Фанат

oncle terrible
Команда форума
есть.
способ всегда есть.
напиши свой веб-сервер
 

profis

Guest
Я использую команду su в комплекте с php-функцией proc_open. Нечто вроде такого кода:

function cmd($in,$out) {
global $user_name,$user_password,$error;
$out=array();
$err=array();
$descriptorspec=array(0=>array('pipe','r'),1=>array('pipe','w'),2=>array('pipe','w'));
$process=proc_open('su - '.$user_name,$descriptorspec,$pipes);
if (is_resource($process)) {
fwrite($pipes[0],$user_password."\n");
for($i=0;$i<count($in);$i++)
fwrite($pipes[0],$in[$i]."\n");
fclose($pipes[0]);
while(!feof($pipes[1]))
$out[]=fgets($pipes[1], 1024);
fclose($pipes[1]);
while(!feof($pipes[2]))
$err[]=fgets($pipes[2], 1024);
fclose($pipes[2]);
$error=implode("\n",$err);
return proc_close($process)==0;
}
else {
$error='Ошибка открытия канала к файлу.';
return false;
}
}

Это универсальный код для запска чего угодно от имени кого угодно. Php-скрипт запускаю соответственно: cmd(путь к php -f путь к php-скрипту)
 

Demiurg

Guest
profis
особено радует $this->user_password в твоей "функции".

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

profis

Guest
Автор оригинала: Demiurg
profis
особено радует $this->user_password в твоей "функции".

система прав для того, что бы раздавать права в том числе и апачу, а не для удаления гланд через неприличные отверстия.
Исправил.
Возможно это больше чем надо, хотя на поставленный вопрос отвечает.
Насчет прав пример: а если документ создан из под ftp и соответствующего юзера, а Apache работает из под nobody. Тогда такой подход тоже не в тему?

К этому коду пришел, когда столкнулся с именно таким случаем.
 

Фанат

oncle terrible
Команда форума
Да.
классический пример.
просто хрестоматийный.
 

Demiurg

Guest
profis
а по фтп уже запретили выставлять права ?
 

Screjet

Новичок
Есть :)
posix_setuid()
Тока апач под рутом запускать нада, что строго не рекомендуется (хотя уязвимостей млн лет уже нету),
и (имхо) у продвинутых хостеров так и работает: чайлды на лету меняют свой UID.
а если просто скриптик, то можно выполнять посредством какогото шела.
 

profis

Guest
Автор оригинала: Demiurg
profis
а по фтп уже запретили выставлять права ?
Нет, конечно, но я (и как понимаю, автор топика) работал с уже данным скриптом. Не хотелось заставлять лезть пользователя возится с правами, надо было все сделать без его участия. Кроме того, такой скрипт позволяет запускать все что угодно (например crontab), хотя это уже вне вопроса обсуждения. И вообще, вопрос как звучит? Запуск от имени…
В данном случае, не спорю, легче всего вручную выставить 777 права. Но вопрос то именно про запуск от имени другого пользователя, вот я на него и ответил.
 

Demiurg

Guest
о каком скрипте идет речь ? О той куче кода, что ты привел?
 

macros

Guest
Господа, всем спасибо за обсуждение.
Просто задача была достаточно тривиальна
Был клиент у которого сайт состоит из кучи html файлов, раскиданным по разным папкам. Он очень любит ставить (убирать) всякие счетчики(информеры, баннеры) я запарился
их править и менять по FTP.
Скрипт только для служебного пользования (поиск с заменой по всем этим файлам)
По умолчанию все эти файлы были 644 ну я и сделал их 777.
Задача вроде решена.

Но скрипт по идее может запускается только пользователем который знает логин пароль FTP.
 
Сверху