0

我有一个网页试图读取文件但出现权限被拒绝错误。我写了一个非常简单的页面来重现这个问题。

<?php
echo exec('whoami');
echo "<br>";
echo exec('cat /var/svn/aaa/format 2>&1');
?>

作为测试,我尝试将 svn 目录和以下所有内容的权限设置为荒谬的 777,将所有权更改为 apache 并尝试将 apache 用户添加到不同的组。我已经确认它以 apache 用户身份运行(即上面的 whoami 调用)。如果我尝试在命令行上将上述命令作为 apache 运行,那么它可以正常工作,例如

sudo -u apache cat /var/svn/aaa/format 2>&1

为什么这不符合我的预期?我希望给文件 777 会给予“其他”完全权限,我希望将所有者更改为 apache 也可以解决问题。我希望执行 sudo,因为如果 php 失败,apache 用户会失败。

顺便说一句,为了完整起见,这是我正在运行 WebSVN 的一个问题,但它似乎是 apache 问题而不是 WebSVN 问题。

4

2 回答 2

0
which cat

在你的 exec 中使用 cat 的完整路径

于 2013-10-24T23:49:15.900 回答
0

修好了 我在没有做任何事情的情况下尝试了不同的盒子,它首先工作。我有我试图访问的文件由 root 拥有并且没有设置任何权限。寻找有什么不同,原来是 SELinux。我不知道那是什么,但禁用它可以解决问题。我猜这是某种安全“功能”?打电话给 getenforce 告诉我它已经打开,我可以使用 setenforce 让它变得宽松。

me@host# getenforce
Enforcing

me@host# setenforce Permissive

另一个选项是在配置文件 /etc/sysconfig/selinux.xml 中禁用它。我猜在那之后需要重新启动一些东西。

SELINUX=disabled

感谢大家的回复。

于 2013-10-25T02:20:39.993 回答