해결 방법 1:

해결 방법 1:

Kubuntu 13.04 노트북에 Apache 서버를 설정하려고 합니다. apache2 패키지를 설치했지만 sudo a2enmod userdir; sudo service apache2 restart방문하면 http://localhost/~user여전히 다음과 같은 내용이 표시됩니다.

Forbidden

You don't have permission to access /~user on this server.

Apache/2.2.22 (Ubuntu) Server at localhost Port 80

결과tail /var/log/apache2/access.log

127.0.0.1 - - [02/Aug/2013:16:22:01 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:16:22:02 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /~kaiyin HTTP/1.1" 403 501 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:36:26 +0200] "GET /favicon.ico HTTP/1.1" 404 499 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:36:26 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /~kaiyin HTTP/1.1" 403 501 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"

결과tail /var/log/apache2/error.log

[Fri Aug 02 21:05:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:05:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:54 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:54 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /~kaiyin denied
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /~kaiyin denied
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico

답변1

이러한 public_html디렉터리에는 Apache를 실행하는 사용자가 액세스할 수 있도록 다음 권한이 있어야 합니다.

$ chmod -R 755 ~/public_html

아니면?

Apache 오류 로그를 보면 다음과 같은 줄을 볼 수 있습니다.

[2013년 8월 2일 금요일 21:06:59] [오류] [클라이언트 127.0.0.1] (13) 권한 거부됨: /~kaiyin에 대한 액세스가 거부되었습니다.

이는 이 예에서 Apache가 사용자 디렉터리(~kaiyin)로 이동할 수 있는 권한이 없음을 나타냅니다.

이 문제를 어떻게 해결하나요?

public_htmlApache가 속한 그룹에 대해 읽기+실행 비트가 설정되어 있는지 확인하거나 Apache가 아래 폴더에 액세스할 수 있도록 사용자 디렉터리에 다른 읽기+실행 비트가 설정되어 있는지 확인해야 합니다 .

/home
|-- [drwxr-x---]  /home/sam

/home/sam
|-- [drwxr-xr-x]  /home/sam/public_html

인용하다

답변2

<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root

  <Directory /home/*/public_html>
    AllowOverride All
    Options MultiViews Indexes SymLinksIfOwnerMatch
    <Limit GET POST OPTIONS>
      # Apache <= 2.2:
      #Order allow,deny
      #Allow from all

      # Apache >= 2.4:
      Require all granted
    </Limit>
    <LimitExcept GET POST OPTIONS>
      # Apache <= 2.2:
      #Order deny,allow
      #Deny from all

      # Apache >= 2.4:
      Require all denied
    </LimitExcept>
  </Directory>
</IfModule>

의 설정이 올바른지 확인하세요 /etc/apache2/mods-enabled/userdir.conf. public_html을 chmodding한 후 권한이 거부된 후 확인하기로 결정했습니다 userdir.conf. 이전 Apache 버전과 최신 버전에 대한 설정이 있음을 확인했습니다. 최신 버전을 실행하고 있다는 것을 알고 있으므로 최신 설정을 활성화했으며 이제 모든 것이 잘 작동합니다.

답변3

/etc/hosts파일을 사용하면 임시 URL이 필요하지 않게 될 수도 있습니다 . 테마나 플러그인(있는 경우)에 전체 URL에 대한 참조가 있는 경우 웹사이트는 콘텐츠를 올바른 형식으로 표시하지 않습니다.

답변4

폴더에 검색( ) 권한이 없거나 파일에 읽기( ) 권한이 x없을 가능성이 높습니다.r

namei -ml /home/joe/public_html/index.html

f: /home/joe/public_html/index.html
drwxr-xr-x root  root  /
drwxr-xr-x root  root  home
drwxr-x--- joe joe joe
drwxrwxr-x joe joe public_html
-rwxr-xr-x joe joe index.html

Apache는 루트부터 /시작하여 모든 폴더를 검색하고 읽어야 합니다(즉, 권한 이 index.html있어야 함 ). 위에서 살펴본 바와 같이, 사용자는 읽기( ) 또는 검색( )을 할 수 없습니다 .rx/home/joeotherrx

해결 방법 1:

www-data로그인한 사용자 그룹에 apache2 사용자(내 경우에는)를 추가합니다 . 이렇게 하면 www-data사용자의 모든 콘텐츠에 액세스할 수 있습니다 /home/joe.

제 경우에는 apache2가 이라는 사용자로 실행되고 있습니다 www-data. 따라서 www-data사용자를 그룹에 추가 해야 합니다.joe

adduser www-data joe

또한 아래의 모든 파일에는 이 그룹에 대한 권한이 public_html있어야 합니다 .rx

chmod -R g+rw /home/joe/public_html

/home/joeApache 서버가 아래에 있는 모든 파일에 액세스할 수 있으므로 이는 덜 안전합니다 . apache2 관리자가 실수 some_private_folder로 대신 액세스하도록 구성을 변경한 경우 public_html다른 사람이 쉽게 액세스할 수 있습니다.

해결 방법 2:

임의 other검색 허용( x)/home/joe

chmod o+x /home/joe

또한 아래의 모든 파일에는 액세스 권한이 public_html있어야 합니다 .othersrx

chmod -R o+rw /home/joe/public_html

관련 정보