如何通过php访问根包?
How to access root packages through php?
问题: 最初,我以 root 用户身份通过命令行访问了一个名为 pandoc (/root/.cabal/bin/pandoc)
的软件包,该软件包已安装在根文件夹中。当我尝试使用 shell_exec()
通过 php 访问该包时,它失败了。
问题:有没有限制phpshell_exec()
出于安全目的不访问根包?如果是,如何解决?
我试过: 授予对根文件夹的写权限然后我可以通过访问根包
命令行不是根用户。但是我无法通过 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");
期望:我需要在php中通过shell_exec()
执行pandoc根包。
在 /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.
我最近发布了一个项目,允许 PHP 获取真实的 Bash shell 并与之交互(如果需要,作为 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;
问题: 最初,我以 root 用户身份通过命令行访问了一个名为 pandoc (/root/.cabal/bin/pandoc)
的软件包,该软件包已安装在根文件夹中。当我尝试使用 shell_exec()
通过 php 访问该包时,它失败了。
问题:有没有限制phpshell_exec()
出于安全目的不访问根包?如果是,如何解决?
我试过: 授予对根文件夹的写权限然后我可以通过访问根包
命令行不是根用户。但是我无法通过 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");
期望:我需要在php中通过shell_exec()
执行pandoc根包。
在 /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.
我最近发布了一个项目,允许 PHP 获取真实的 Bash shell 并与之交互(如果需要,作为 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;