权限:授予 Apache 更多用户权限的正确方法是什么?

权限:授予 Apache 更多用户权限的正确方法是什么?

上下文:我正在制作一个浏览器内控制面板,它使我可以一键访问我编写的脚本库(.sh 和 .php),以处理项目的各种数据。这是管理该项目数据的“一站式服务”。

我已经取得了很好的进步。我运行着 apache、PHP 和 MySQL,我的前端位于http://localhost。目前很好!

现在我遇到的问题是:我有一个工作正常的index.php,除了默认的apache用户(在我的机器上称为“_www”)似乎没有运行我的某些脚本的权限。

所以当我这样做时:

<?php
    echo `ls`;
    echo `whoami`;
    echo `/Path/To/Custom/Script.sh`;
?>

ls我得到了和的输出whoami,但我从自定义脚本中没有得到任何结果。如果我像我一样运行自定义脚本(在交互式 shell 中),它当然可以工作。

最后我的问题是:什么是正确的的方式来配置这个。网络服务器是否像我一样运行?或者更改权限以便 _www 可以运行我的自定义脚本?

答案1

最好的办法是将脚本放在一个标准位置(例如/usr/local/bin),Web 服务器将有足够的权限来执行它。

如果这不是一个选项,您可以使用 更改脚本的组chgrp groupname path,然后使其对于该组可执行chmod g+x path。如果_www用户尚未位于该组中,请通过 将其添加到该组中usermod -aG groupname _www

答案2

要回答您的问题,最好授予 _www 组执行脚本的权限。

使用 ACL 扩展 *.sh 脚本的权限,以允许 _www 组中的用户执行权限:

cd /Path/To/Custom
setfacl -m g:_www:rx *.sh

还要检查 /Path/To/Custom 的每个目录组件并验证 apache 是否有权访问(即“查看”)/Path/To/Custom 中的脚本:

ls -ld /Path
ls -ld /Path/To
ls -ld /Path/To/Custom

除了最后一个组件(风俗)其中 apache 需要执行和读取权限。例如,如果上面的所有目录组件都有其他的权限接收那么 apache 就拥有在以下目录中查找您的脚本所需的所有访问权限风俗目录。

相关内容