Destroyer
Новичок
Выполнение команд от имени указанного юзера (nix, sudo)
Со странички, средствми php надо выполнить команды, доступные определенному пользователю.
Да, эта тема неоднократно обсуждалась, но нигде так полного ответа и ненаписали.
Варианты давать права рута apache и править конфигурационные файлы не подходят, т.к., похоже, есть простое решение с командой sudo.
Делаю так:
в итоге выдает через $pipes[2]:
[sudo] password for www-data:
www-data - похоже имя юзера от которого работает php и apache
Кто решил данную проблему, помогите плз.
Со странички, средствми php надо выполнить команды, доступные определенному пользователю.
Да, эта тема неоднократно обсуждалась, но нигде так полного ответа и ненаписали.
Варианты давать права рута apache и править конфигурационные файлы не подходят, т.к., похоже, есть простое решение с командой sudo.
Делаю так:
PHP:
$descriptorspec = array(0 => array("pipe", "r"), // stdin
1 => array("pipe", "w"), // stdout
2 => array("pipe", "w") // stderr ?? instead of a file
);
$command = "sudo -S ps -f"; // хотим выполнить команду ps -f, к примеру.
$process = proc_open($command, $descriptorspec, $pipes);
stream_set_blocking($pipes[1], FALSE);
if (is_resource($process))
{
$nl = fread($pipes[1],1024); // читаем слово 'Password'
fwrite($pipes[0],'root_pass'); // пишем Password
$answer = fread($pipes[1],1024); // читаем ответ
$error = fread($pipes[2],1024); // читаем ответ
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
}
echo "слово Password:".$nl." Answer: ".$answer."error:".$error;
[sudo] password for www-data:
www-data - похоже имя юзера от которого работает php и apache
Кто решил данную проблему, помогите плз.