"심볼릭 링크가 허용되지 않거나 링크 대상에 액세스할 수 없습니다." / CentOS 6의 Apache

"심볼릭 링크가 허용되지 않거나 링크 대상에 액세스할 수 없습니다." / CentOS 6의 Apache

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가 심볼릭 링크의 대상에 액세스할 수 없는 이유는 무엇입니까?

답변1

문제가 발견되었습니다. Apache는 내가 제공하는 디렉토리뿐만 아니라 /home/billy/refresh-app/그 위의 모든 디렉토리, 즉 /home/billy/, /home및 에도 액세스하기를 원했습니다 /. (왜인지는 모르겠습니다... 누군가에게 하위 디렉터리에 대한 액세스 권한을 부여한다고 해서 해당 하위 디렉터리 위의 모든 항목에 대한 권한을 포기할 필요는 없습니다...)

뭔가를 찾고 있는 것 같아요 .htaccess. 아니면 *nix가 디렉토리 순회에 대한 권한을 처리하는 방식이 이상할 수도 있습니다.

답변2

비슷한 문제가 발생했습니다. Ubuntu 10에서는 작동했지만 Ubuntu 14(Apache 2.4)에서는 작동이 중지된 다음 구성이 있었습니다.

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

이것으로 전환하면 문제가 해결되었습니다(웹 서버 사용자가 심볼릭 링크에 직접 액세스할 수 없더라도).

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

내가 아는 한 이것은 단지 -SymLinksIfOwnerMatchApache 2.4의 변경 사항과 관련된 설정일 뿐이며 정확한 원인을 조사하려고 시도하지는 않았습니다.

나는 이것이 PHP 제한 때문일지도 모른다고 생각했지만 openbase_dir그렇지 않았습니다.

답변3

이 오류는 암호화된 폴더에 연결하는 경우에도 발생할 수 있습니다.

답변4

"FollowSymLinks"는 httpd.conf에 필요한 옵션인 것 같습니다. 상세하다여기. htdocs에서도 규칙을 원할 것 같지만 이것이 바로 필요한 옵션입니다.

관련 정보