shell — Как получить доступ к корневым пакетам через php?

Выпуск: Первоначально, через командную строку как пользователь root, я получил доступ к пакету pandoc (/root/.cabal/bin/pandoc) который был установлен в корневой папке. Когда я пытаюсь получить доступ к этому пакету через php, используя shell_exec(),это терпит неудачу.

Вопрос: Есть ли ограничение для php shell_exec() не получить доступ к корневым пакетам в целях безопасности? Если так, как решить это?

Я старался: Дал разрешение на запись в корневую папку, чтобы я мог получить доступ к корневым пакетам через
командная строка не как пользователь root. пока я не смог получить к нему доступ через php shell_exec().

PHP-код:

shell_exec("cd /home/quotequadsco/public_html/pandoc_jats ; sudo -u quotequadsco
-S /root/.cabal/bin/pandoc ex.tex --filter /root/.cabal/bin/pandoc-citeproc
-t JATS.lua -o ex.xml");

а также пытался,

shell_exec("cd /home/quotequadsco/public_html/pandoc_jats ;/root/.cabal/bin/pandoc
ex.tex --filter /root/.cabal/bin/pandoc-citeproc -t JATS.lua -o ex.xml");

Expectation: Мне нужно выполнить корневой пакет Pandoc через shell_exec() в php.

0

Решение

Добавлена ​​следующая строка в файл / etc / sudoer

#Defaults requiretty   //commented this line
usergroup ALL=(ALL)  ALL

Код PHP,

shell_exec("cd /home/quotequadsco/public_html/pandoc_jats ;echo password | sudo
-S command"); //added a password for sudo command to run as a root user.
0

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

Недавно я опубликовал проект, который позволяет PHP получать и взаимодействовать с реальной оболочкой Bash (как root, если требуется), он решает ограничения exec () и shell_exec (). Получи это здесь: https://github.com/merlinthemagic/MTS

После загрузки вы просто используете следующий код:

$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
$return1  = $shell->exeCmd('pandoc (/root/.cabal/bin/pandoc)');
//the return will be a string containing the return of the command
echo $return1;
0

По вопросам рекламы [email protected]