【问题标题】:Apache: Permission denied on 0777 directoryApache:0777 目录的权限被拒绝
【发布时间】:2015-05-01 19:14:43
【问题描述】:

我有 shell 脚本,类似于:

#!/bin/bash
( cd /var/qwebirc; ls .git; )

以及执行脚本的PHP文件:

error_reporting(E_ALL);
exec("/var/qwebirc/pull.sh 2>&1", $arr);

然后当我直接调用 shell 脚本时,我得到了我期望的输出(.git 的 ls)。当我从 CLI 调用 PHP 脚本时,我得到了完全相同的输出。但是当从浏览器调用 php 脚本时,我得到了

ls: 无法打开目录 .git: 权限被拒绝

好的,显然是apache用户的权限问题。所以我将 0777 设置为 .git 及其所有文件(用于测试目的)。 chown 和 chgrp 到 apache。将脚本更改为:

( cd /var/qwebirc; pwd; whoami; ls -dl .git; ls .git; )

但是浏览器中的输出还是:

[0] => /var/qwebirc
[1] => apache
[2] => drwxrwxrwx. 8 apache apache 4096 Mar  1 03:59 .git
[3] => ls: cannot open directory .git: Permission denied

这对我来说没有多大意义。知道有什么问题吗?谢谢。

【问题讨论】:

  • 你的 .git 目录有权限 rwxrwsrwx 而不是 rwxrwxrwx。执行位上的设置组 ID 似乎已打开。重置并重试。
  • 已更改但仍被拒绝。

标签: php linux apache shell


【解决方案1】:

所以答案是 SELinux。不完全确定它的策略是如何工作的(现在必须研究一下),但是在禁用 SELinux 后,来自 apache 的 ls 开始工作。

【讨论】:

    猜你喜欢
    • 2014-06-11
    • 2018-09-07
    • 2012-08-13
    • 1970-01-01
    • 2014-06-29
    • 2016-06-25
    • 2011-01-16
    相关资源
    最近更新 更多