Apache 2.4가 심볼릭 링크를 따르지 않고 403 Forbidden을 제공합니까?

Apache 2.4가 심볼릭 링크를 따르지 않고 403 Forbidden을 제공합니까?

내 프로젝트를 localhost의 심볼릭 링크로 설정하려고 했고 /var/www/html거기에 있는 일반 파일이나 디렉토리에 액세스할 수 있지만 html심볼릭 링크를 만들 때 some/other/path403 Forbidden이 표시되고 error_log다음과 같이 표시됩니다 AH00037: Symbolic link not allowed or link target not accessible: /var/www/html/path/to/project.

이제 여기와 다른 StackExchange 사이트를 상당히 광범위하게 검색했지만 답변이 없습니다. httpd.conf Directory태그 에 대해 읽었 Indexes FollowSymlinks으며 기본 구성도 있습니다 /var/www/html. 또한 권한을 업데이트하고 root, apache그리고 나 자신을 user심볼릭 링크 소유자이자 실제 디렉터리 또는 파일 소유자로 사용해 보았지만 아무 것도 작동하지 않는 것 같습니다.

나는 또한 .htaccess이것을 포함하는 실제 프로젝트 디렉토리에 파일을 배치했습니다.

    Options Indexes

이것이 필요한지 이해가 되지 않습니다. 이것은 제가 시도한 솔루션의 일부일 뿐입니다.

수행해야 할 다른 옵션이 있는 경우 중복으로 표시될 수 있다고 생각하지만 이 질문에 대한 답변을 검색하고 다른 제안을 따랐으므로 알려주시기 바랍니다.

감사해요

체계

Fedora 32가 있고 기본적으로 Apache httpd가 서비스로 실행되고 있습니다.

편집하다:

의견에서 언급했듯이 SELinux를 확인해야 하며 다음과 같이 설정했습니다.용인모드를 실행했지만 아무것도 변경되지 않았습니다. 여전히 403 Forbidden입니다.

답변1

좋아, 댓글을 달고 답을 찾는 데 도움을 주신 모든 분들께 감사드립니다. 가장 먼저 확인해야 할 것은 내가 이 구조를 가지고 x있는 것처럼 심볼릭 링크를 가리키는 위치에서 모든 디렉토리가 실행되었는지 확인하는 것입니다. 다른 사람에 대한 권한 실행/var/www/html/project -> /home/user/Documents/project/home/user

ls -l /home

귀하의 출력은

drwx--x--x. user user 4.0K user

이는 심볼릭 링크한 디렉토리까지의 모든 디렉토리에 적용됩니다 /var/www/html.

권한을 확인하고 httpd.conf사용 중인지 확인한 후SELinux그리고 활성화된구현하다모델.

sestatus

SELinux가 실행 중인지, 어떤 모드에 있는지 알려줍니다.

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      32

이것이 내 컴퓨터에서 보이는 모습입니다. 설치되지 않은 경우 명령을 찾을 수 없는 것일까요?

따라서 이는 주로 SELinux 문제입니다. 올바른 권한이 설정되면 누군가가 액세스할 수 없어야 하는 항목에 액세스하고 있다는 localhost 요청에 대해 경고를 받게 됩니다. 그런 다음 원하는 정책을 적용해야 합니다. 저는 httpd읽은 디렉터리에서 허용해야 했습니다. project거기서 해결책을 얻었어요여기. 하지만 파일을 생성하기 위한 것이므로 적용된 내용을 먼저 확인하여 /var/www/html명령어를 수정했습니다.

ls -lZ /var/www
drwxr-xr-x. 3 root root system_u:object_r:httpd_sys_content_t:s0 00:00 html

따라서 httpd_sys_content_t귀하의 디렉토리에 이것이 필요합니다.

sudo semanage fcontext -a -t httpd_sys_content_t "/home/user/Documents/project(/.*)?"

(/.*)?이 경로 이후의 항목에도 이 태그가 적용되어야 함을 의미합니다.

그 후 SELinux에 새 구성을 적용했습니다.

sudo restorecon -R project/

그럼 확인해봐

ls -lZ /var/www/html/project/
total 4
-rwxr-xr-x. 1 user user unconfined_u:object_r:httpd_sys_content_t:s0 35 00:00 index.php

변경 사항이 반영된 것을 볼 수 있으며 이제 요청하면 다시 연락을 받을 것입니다.

이것이 미래에 누군가에게 도움이 되기를 바라며, 이 문제를 다시 발견할 경우 취해야 할 조치를 안내해 줄 것입니다.

이에 기여해주신 모든 분들께 감사드립니다.

관련 정보