내 사용자 디렉터리의 폴더에 대한 심볼릭 링크로 구성된 Apache 가상 호스트가 403 Forbidden과 함께 실패합니다.

내 사용자 디렉터리의 폴더에 대한 심볼릭 링크로 구성된 Apache 가상 호스트가 403 Forbidden과 함께 실패합니다.

이전에 누군가가 이에 대해 질문/답변한 적이 있을 것으로 확신하지만 내 검색이 별로 도움이 되지 않았습니다.

내 Linux 상자(LM13)에 Eclipse IDE가 설치되어 있고 @에 'workspace' 폴더가 있습니다. /home/user/projects/workspace

Apache를 설치하고 설정했으며 웹 루트 아래 어딘가에 폴더가 있는 다양한 가상 호스트와 작업하고 있습니다./var/www/...

내가 겪고 있는 문제는 Eclipse Workspace에서 프로젝트에 대해 구성한 가상 호스트가 Apache에서 액세스할 수 없어서 "403 - 금지됨 - 액세스 권한이 없습니다/에 대한 권한이 없습니다"라는 메시지가 표시된다는 것입니다. 이 서버."

/var/www/freelance/project먼저 '일반' 가상 호스트 구성을 시도한 다음 Eclipse 작업 공간의 프로젝트 폴더에 연결된 웹 루트 @에서 SymLink를 사용해 보았습니다.

섹션 아래의 옵션 지시문에 대해 FollowSymLinks및 를 모두 시도했지만 여전히 내 브라우저에서 Apache를 사용하여 액세스할 수 없습니다!SymLinksIfOwnerMatch<directory ...>

이 설정을 작동시키는 방법을 설명해 줄 수 있는 사람이 있나요? 아직 사용을 시도하지 않았 거나 Apache에 대한 액세스를 허용하도록 mod_userdir내 폴더에 대한 파일 권한을 설정한 적이 없습니다 . 둘 중 어느 것도 선호되지 않는 것 같았습니다. /home다른 방법이 있나요?

내 가상 호스트 구성은 다음과 같습니다.

# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
    NameVirtualHost my.iagd:80
    ServerAlias *.my.iagd
#   ServerAdmin username@domain

    DocumentRoot /var/www/freelance/iagd

    <Directory /var/www/freelance/iagd/>
        Options FollowSymLinks SymLinksIfOwnerMatch
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    # Define custom log level
    LogLevel warn

    # Set up custom log files
    ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
    CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>


업데이트

출력 ls -alFd ~/Projects/workspace/iagd:-

    drwxr-xr-- 6 user www-data 4096 Aug 22 14:12 IAGD/

동일한 출력 /home/user:-

    drwx------ 74 user user 20480 Aug 23 07:30 /home/user/

답변1

홈 디렉토리의 하위 디렉토리에 대한 Directory 지시문을 추가해야 합니다. Apache가 심볼릭 링크에 액세스할 때 심볼릭 링크 포인터가 아닌 심볼릭 링크가 가리키는 실제 디렉터리에 액세스하게 됩니다.

따라서 필요한 두 가지가 있습니다.

첫째, 운영 체제 권한입니다. 귀하의 디렉터리는 Apache 사용자가 읽을 수 있어야 합니다. 즉, 그 위의 계층 구조에 있는 모든 디렉터리에는 Apache 사용자에 대해 실행 비트가 설정되어 있어야 합니다.

둘째, Apache 구성입니다. Apache는 해당 디렉토리에서 읽어도 괜찮다는 말을 들어야 합니다. 일반적으로 Apache가 제한된 디렉토리 계층 구조만 읽을 수 있도록 제한하고 싶을 것입니다. 그렇지 않으면 모든 웹 사용자가 예를 들어 비밀번호 파일을 보거나 모든 사람의 홈 디렉토리를 탐색할 수 있습니다. 따라서 웹루트 계층 외부에 있는 디렉터리에 액세스하려면 Apache에 이를 허용하도록 지시하는 지시문을 추가해야 합니다. 다음과 같이 보일 것입니다:

# Apache VHOST config for IAGD
<VirtualHost my.iagd:80>
    NameVirtualHost my.iagd:80
    ServerAlias *.my.iagd
#   ServerAdmin username@domain

    DocumentRoot /var/www/freelance/iagd

    <Directory /var/www/freelance/iagd/>
        Options FollowSymLinks SymLinksIfOwnerMatch
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    <Directory /home/user/projects/workspace>
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

    # Define custom log level
    LogLevel warn

    # Set up custom log files
    ErrorLog ${APACHE_LOG_DIR}/iagd/error.log
    CustomLog ${APACHE_LOG_DIR}/iagd/access.log combined
</VirtualHost>

관련 정보