Сценарий оболочки Exec с другим пользователем, использующим Apache

[Mac OS 13.10.3, PHP7.1, Apache 2.4]

Я использую php-скрипт для реорганизации некоторых файлов, которые я разбросал по разным местам в моей структуре домашних каталогов. Часть PHP, сначала выполняет некоторые сложно логика, которую я не думаю, что bash может сделать эффективно, а затем вызывает скрипт bash для выполнения последних операций перемещения, которые мне нужны.

Когда я запускаю скрипт php из командной строки, он работает нормально. Тем не менее, я хотел бы иметь возможность запускать его через мой httpd-сервер localhost apache, чтобы я мог получать более качественную визуализацию результатов различных операций в моем браузере.

Когда я вызываю скрипт php через браузер, скрипт bash возвращается с ошибками разрешения. Сначала я думал, что смогу это исправить, установив setuid немного в скрипте bash, но это не сработало, и скрипт все еще работает под идентификатором пользователя apache. (Больше информации здесь о setuid со скриптами.)

Есть некоторые вещи, которые я не хочу делать:
1) Измените разрешения в моих домашних каталогах, чтобы это работало,
2) Дайте пользователю apache sudo доступ к /bin/mv команда и т. д.

Мне интересно, что еще я могу сделать, чтобы скрипт мог выполнить ходы?

-= — = —

Тестовый скрипт php внутри моего DocumentRoot:

<?php

header('Content-Type: text/plain');

$shellResult = array();
$shellReturn = 0;
exec("/Users/user/myScripts/move \"" . "/Users/user/myScripts/mytest.pdf" ."\" \"". "/Users/user/myScripts/testDir" ."\" \"". "aNew.pdf" . "\"", $shellResult, $shellReturn);
echo var_dump($shellResult);
echo $shellReturn;

?>

переехать скрипт bash в / Users / пользователь / MyScripts:

#!/bin/bash -e

echo -e `whoami`
echo -e "$2"echo -e "$3"
if [ ! -e "$1" ] ; then
echo "$1"exit 3
else
if [ -e "$2/$3" ] ; then
echo "$1"exit 4
fi
fi
echo -e "MOVING\n"/bin/mv "$1" "$2/$3"

Результат я получаю в браузере (обратите внимание на ошибку 1 вернулся в конце)

array(5) {
[0]=>
string(4) "_www"[1]=>
string(28) "/Users/user/myScripts/testDir"[2]=>
string(8) "aNew.pdf"[3]=>
string(6) "MOVING"[4]=>
string(0) ""}
1

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector