Centos

“符號連結不允許或連結目標不可訪問”/ CentOS 6 上的 Apache

  • October 26, 2020

我有一個全新的 CentOS 6 安裝,它在文件根目錄中有一個指向我的開發文件的符號連結:

[root@localhost html]# ls -l
total 4
-rwxrwxrwx. 1 root root  0 Sep 18 20:16 index.html
-rwxrwxrwx. 1 root root 17 Sep 18 20:16 index.php
lrwxrwxrwx. 1 root root 24 Sep 18 20:19 refresh-app -> /home/billy/refresh-app/

我的 httpd.conf 有這個:

<Directory "/">
   Options All
   AllowOverride None
   Order allow,deny
   Allow from all
</directory>

符號連結的目標具有允許 apache 讀取它想要的任何內容的權限:

[root@localhost billy]# ls -l
total 40 (Some entries were omitted because the list was too long
drwxr-xr-x. 7 billy billy 4096 Sep 18 20:03 refresh-app

我還嘗試通過更改禁用 SELinux /etc/selinux/conf

SELINUX=disabled

然而,無論我做什麼,當有人嘗試訪問該連結時http://localhost/refresh-app/,我都會收到 403 FORBIDDEN 錯誤頁面,這寫在/var/log/httpd/error_log

Symbolic link not allowed or link target not accessible

為什麼 Apache 不能訪問符號連結的目標?

發現問題。事實證明,Apache 不僅想要訪問我正在服務的目錄 , /home/billy/refresh-app/,還想要訪問上面的每個目錄,即/home/billy/,/home/. (我不知道為什麼……讓某人訪問子目錄不應該要求放棄對該子目錄上方所有內容的權限……)

我猜它正在尋找.htaccess什麼,或者 *nix 可能對它如何處理目錄橫向權限感到奇怪。

我有一個類似的問題,我有以下配置,它曾經與 Ubuntu 10 一起工作,但停止與 Ubuntu 14 (Apache 2.4) 一起工作:

<Directory /var/www/vhosts/example.com/httpdocs>
   Options +FollowSymLinks
</Directory>

切換到此排序問題(即使 Web 伺服器使用者無法直接訪問符號連結)

<Directory /var/www/vhosts/example.com/httpdocs>
   Options +ExecCGI +FollowSymlinks -SymLinksIfOwnerMatch
</Directory>

據我所知,它只是-SymLinksIfOwnerMatch設置,與 Apache 2.4 的變化有關,但我還沒有嘗試研究確切的原因。

我還認為這可能是openbase_dir由於 PHP 的限制,但事實並非如此。

引用自:https://unix.stackexchange.com/questions/20993