디렉토리에 대한 액세스를 허용하지만 Apache“서버 구성에 의해 클라이언트가 거부되었습니다”(vhost 구성)


38

Ubuntu의 Apache에서는 가상 호스트를 설정했지만 브라우저에서 "403 액세스 금지"오류가 계속 발생합니다. 로그에 " 서버 구성에 의해 클라이언트가 거부되었습니다 : / home / remix / ".

온라인 솔루션을 찾고 디렉토리 액세스에 대한 많은 게시물 (모두 허용 등)을 찾았지만 이미 알고있는 한 이미 그랬습니다. 에서 아파치 - vhosts.conf 다음과 같은 코드가있다 :

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/opt/lampp/htdocs/"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/home/remix/"
    ServerName testproject
    ServerAlias testproject
    <Directory "/home/remix/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

나는 또한 추가했다

127.0.0.1    testproject

/ etc / hosts 파일에 추가하십시오.

또한 / home / remix / 폴더에는 index.html 파일이 포함되어 있으며 httpd.conf에서 가상 호스트가 활성화되어 있습니다.

내가 보지 못한 것이 있습니까?

편집 : 이것은 Apache error_log 항목입니다.

[Sat Aug 18 09:15:32.666938 2012] [authz_core:error] [pid 6587] 
[client 127.0.0.1:38873] AH01630: client denied by server configuration: /home/remix/

Apache의 오류 로그에 무엇이 있습니까?
Shane Madden

아, 뭔가 잊어 버렸다고 생각했는데 ... 원래 게시물에 추가했습니다.
RemiX

어떤 버전의 Apache를 사용하고 있습니까?
Shane Madden

Apache / 2.4.2 (Unix)
RemiX

답변:


65

인증 구성을 변경하십시오.

<Directory /home/remix/>
    #...
    Order allow,deny
    Allow from all
</Directory>

... 아파치 2.4 버전과 동일합니다.

<Directory /home/remix/>
    #...
    Require all granted
</Directory>

업그레이드 해야 할 다른 변경 사항에 대한 정보 는 업그레이드 개요 문서 를 검토하십시오 . Google (및이 사이트)에서 발견 한 대부분의 구성 예제 및 지원은 2.2를 참조하고 있습니다.


2
시간이 있다면 httpd -t는 이전 구문을 사용하는 데 아무런 문제가 없으며 httpd -S도 마찬가지이기 때문에 이에 대한 버그를 기록합니다. 내 생각에 구성 검사기의 요점은 문제를 지적해야한다는 것입니다! ...이 디렉토리를 참조하지 않으면 작동하지 않습니다-그렇게 간단하지 않습니다. ... 답변을 요약합니다.
Richard T

4

디렉토리에 대한 권한을 확인하십시오. 예를 들어 자신 외에 다른 사람에 대한 액세스를 거부하도록 설정되어 있습니다.

$ ls -ld /home/remix
drwx------ 92 remix remix 4096 Aug 17 22:59 /home/remix

당신이 볼 경우 drwx------정확하게,이 경우입니다. 다음을 실행하여 수정하십시오.

chmod a+x /home/remix

나는 다음을 본다 : drwxrwxr-x 2 리믹스 리믹스 4096 Aug 16 09:36 / home / remix. 어쨌든 효과없이 명령을 시도했습니다.
RemiX

아, 모두 이길 수는 없습니다.
Michael Hampton

3

httpd서비스를 실행중인 사용자 가이 디렉토리에 액세스 할 수 있는지 확인하십시오 .


httpd의 사용자가 누구인지 확인하는 방법을 모르겠지만 모든 사람이 읽을 수 있습니다 (사용자 / 그룹 / 기타).
RemiX

User매개 변수는 httpd.conf를 확인하십시오 .
cpt.Buggy

1
'User nobody'및 'Group nogroup'이라고 표시됩니다. 폴더 소유자 인 'User remix'로 변경하려고 시도했지만 도움이되지 않습니다.
RemiX

1

"서버 구성에 의해 클라이언트가 거부되었습니다"는 Linux 서버 자체가 Apache가 아니라 파일에 대한 액세스를 금지 함을 의미합니다.

권한 / 소유권 / 그룹 멤버쉽 변경을 통해 액세스를 제공해도 문제가 해결되지 않으면 경로 원인은 'Selinux에서 Apache DocumentRoot 재배치'에 설명 된대로 적절한 SE Linux 컨텍스트가없는 폴더에 대한 액세스를 금지하는 SELinux 일 수 있습니다 .

  • setenforce 0파일을 액세스 가능하게하여 SELinux를 일시적으로 비활성화 한 경우
  • SELinux를 다시 활성화 setenforce 0하면 파일을 다시 액세스 할 수 없게됩니다.

그런 다음 파일 권한이 무엇이든 SELinux에 의해 액세스가 금지됩니다.


0

사람들에게이 문제를 일으킬 수있는 또 하나의 간단한 (그러나 까다로운 문제)는 사용자 디렉토리가 / home / *에 있지 않을 때입니다.

제공된 userdir.conf는 다음과 같은 것을 포함합니다 : (하지만 Userdir : disabled)

$ cat /etc/httpd/conf.d/userdir.conf 
<IfModule mod_userdir.c>
    UserDir enabled
    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

디렉토리 스펙은 ~ user == / home / user로 가정합니다. 사용자 홈 디렉토리가 실제로있는 디렉토리 스펙을 변경하거나 추가하십시오.

꽤 분명하지만 알아내는 데 시간이 걸렸습니다 !! :-P DUH!

예를 들어 ~ user == / nethome / user

<Directory "/nethome/*/public_html">
    AllowOverride All
    Options MultiViews Indexes Includes FollowSymLinks
    Require all granted
</Directory>

일반적으로 해당 디렉토리에 대한 더 많은 공개 권한 부여를 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.