Mac OS X 로컬 호스트에서 403 금지 된 오류


22

Mac OS X 10.6의 시스템 환경 설정에서 웹 공유를 설정하고 해당 링크를 클릭했습니다. 불행히도, Apache는이 403 오류를 주었다 :

금지

이 서버에서 /~myusername/index.html에 액세스 할 수있는 권한이 없습니다.

액세스 로그가 표시됩니다. 10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210

오류 로그가 표시됩니다. [Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/

흥미롭게도 http : // localhost에 액세스하면 정상적으로 작동합니다. 문제가있는 두 개의 사용자 폴더가있어 시스템 업그레이드보다 새로운 다른 사용자 폴더가 제대로 작동합니다.

나는 전에 Leopard에서 내 컴퓨터 에서이 작업을 해 왔으므로 ~/Sites755로 모든 것을 chmodded 했는데 아무런 효과가 없었습니다. 어떤 제안? 애플이 이런 일을 망쳐 놓는 것을 상상할 수 없기 때문에이 문제를 일으킨 내 컴퓨터에서 무언가를 한 것으로 가정합니다.

이 지침으로 PEAR을 설정 했지만 그 원인이 될 수 있는지 전혀 모르겠습니다.


이것이 멍청한 질문이라면 미안하지만 정확히 어떤 URL로 가고 있습니까? "/~myusername/index.html"URL이 홀수이므로 "~ myusername / index.html"이거나 " localhost / ~ myusername / index.html " 또는 다른 것이어야합니다. 비슷한. /에서 시작한 다음 ~ myusername을 추가하면 이상한 냄새가납니다. 이에 대한 대답 외에도 (또는 대신) Console.app (/Applications/Utilities/Console.app)로 이동하여 apache2 access_log 및 error_log를 찾을 수 있습니다. 이를 끌어내어 디스플레이를 지우고 URL을 다시 시도하여 오류 로그에 표시되는 내용을 확인하십시오.
Michael H.

@khedron : URL은 localhost / ~ myusername / index.html 이지만 오류는 /~myusername/index.html 부분을 표시합니다.
waiwai933

확인 중입니다. 아파치 로그는 콘솔 (console.app)에서 무엇을 말합니까?
Michael H.

@ khedron : 질문에 액세스 및 오류 로그를 게시했습니다. 다른 것이 있습니까?
waiwai933

1
나는 당신과 같은 문제가 있고, 나는 단지 : modmod 777 / Applications / XAMPP / htdocs / myusername, 그것은 나를 위해 일한다
Wassim Sboui

답변:


22

Apple은이 문제에 대한 지원 문서를 가지고 있습니다 . 이 문제를 해결 하려면 다음 내용 으로 파일을 만듭니다 /etc/apache2/users/yourusername.conf( 예 : yourusername 은 계정 축약 이름입니다 (예 : danielbeck일반적으로 홈 폴더의 이름 임 /Users)).

<Directory "/Users/yourusername/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

그런 다음 sudo chown root:wheel /etc/apache2/users/yourusername.confApache를 실행 하고 다시 시작하십시오.


아파치를 다시 시작하고 sudo apachectl restart터미널에서 실행 하십시오.
전무

15

Apache가 파일을 보려면 Apache가 실행되는 사용자 (아마도 www또는 _www)가이 사용자의 Sites 디렉토리에 액세스 할 수 있어야합니다. 의 내용에 대한 읽기 / 실행 액세스 권한 ~/Sites이 충분하지 않습니다 . /경로 에서 아래 로 이동 해야하기 때문 ~/Sites입니다. 그래서 있는지 확인하십시오 /, /Users, /Users/myusername, 그리고 /Users/myusername/Sites모두가 적어도이 a+x허가 (디렉토리에 실행 비트는 읽기 액세스가 허용되지 않은 경우에도 해당 사용자 클래스가 디렉토리를 통과 할 수 있습니다).

ls -lde / /Users/ /Users/myusername/ /Users/myusername/Sites

해당 디렉토리 x중 하나에 마지막 세트 ( "기타"에 대한 것) 가 표시되지 않으면 해당 디렉토리에 설정 한 것과 같은 chmod a+x ...것을 사용하십시오.

해당 디렉토리 중 하나에 대한 ACL에 사용자 www가 특별히 액세스가 거부 된 것으로 표시 되면 적절한 인수를 사용 chmod하여 ACL을 수정하십시오.


실행 비트는 모든 해당 디렉토리에 대해 설정되었지만 특정 사용자가 액세스가 거부되었는지 확인하는 방법을 모르겠습니다.
waiwai933

이것이 "ls -lde"의 "e"입니다. 각 파일에 대한 ACL (있는 경우)을 나열합니다.
Spiff

2
/ Users / myusername에 대한 권한을 chmod 755로 변경하면 문제가 해결되었습니다.
Mark

이 명령으로 _www 사용자에게 루트 디렉토리 및 / Users 디렉토리 등에 액세스 할 수있는 권한이 부여되지 않습니까? 아마 맞지 않을까요? 하나의 폴더에서 페이지를 공유하는 모든 보안상의 허점이 있습니까? 이 행동은 어딘가에 기록되어 있습니까?
톰 리안 자

내 자신의 의견에 응답 하여이 행동에 대한 신뢰할 수있는 문서에 대한 링크를 제공하는 이 답변 ( serverfault.com/a/293063/14970 )을 발견했습니다 . wiki.apache.org/httpd/13PermissionDenied
Tom Lianza

5

참고로, 나는 이것을 다루었 고 여기의 대답 중 어느 것도 내 특정한 경우에는 효과가 없었습니다. 가상 호스트를 구성하고 있었지만 더 중요한 것은 실제로 작동하려면 htaccess 파일이 필요했습니다.

/etc/apache2/users/USERNAME.conf 파일에서 "AllowOverride None"을 "AllowOverride All"로 변경했는데 모든 사이트가 금지되기 시작했습니다.

다시 변경 한 다음 httpd-vhosts.conf 파일에서 한 사이트에 대해서만 변경했는데 해당 사이트 만 금지되었습니다.

로그를보고 문제가 URL 재 작성 및 FollowSymLinks 부족으로 인한 것을 확인한 후 USERNAME.conf 파일로 돌아갔습니다. "AllowOverride None"을 "AllowOverride All"로 전환하고 다음 줄에 "Options + FollowSymLinks"를 추가했습니다.

일이 시작되었습니다. 나는 Windows에서 xampp를 사용하여 왔으며 많은 설정이 이미 나와 같은 인형을 위해 서버 전체에 설정되었습니다.


1
정말 고마워요, 무슨 일이 일어나고 있는지 알아내는 데 꽤 많은 시간을 보냈습니다. 아파치 / PHP로
한동안 고민 할 필요가 없었습니다

1
그래, Options +FollowSymLinks매력처럼 일했다.
agarie

2

같은 문제가있었습니다. (구) 계정에 액세스 할 수 없었지만 Lion으로 업그레이드 한 후 생성 된 다른 사용자 계정은 제대로 작동했습니다.

/etc/apache2/users/USERNAME.conf 파일이 다음과 같은지 확인하십시오 :

<Directory "/Users/USERNAME/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

sudo chown root를 수행하십시오 : wheel /etc/apache2/users/USERNAME.conf

OS 업그레이드 중에이 권한 설정이 설정되지 않은 것으로 보이며 Apache 사용자가 구성 파일을 읽을 수없고 오류가 발생합니다.

적어도 이것은 나를 위해 그것을 해결했습니다.


1
그리고 sudo apachectl restart그 후에 달릴 수도 있습니다 .
Arjan

이것은 10.7.5를 실행하는 데 효과적입니다. 디렉토리 경로가 로컬 웹 루트를 가리 키지 않았습니다. 아파치를 업데이트하고 다시 시작하면 모든 것이 작동했습니다. 이상한 점은 경로가 1 년 넘게 잘못되어서 온종일 일하고 있다는 것입니다. 오늘 방금 오류가 발생했습니다.
supajb

2

2011 년 10 월 라이온 업데이트

내 /etc/apache2/extra/httpd-userdir.conf가 다음과 같이되도록 UserDir이 활성화되었습니다.

UserDir enabled 
UserDir Sites

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

<IfModule bonjour_module>
   RegisterUserSite customized-users
</IfModule>

1

초기 질문 코멘트에서 계속 대화- /etc/apache2/httpd.conf파일을 확인하십시오 . 내 컴퓨터에는 다음이 있습니다.

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf

나는 당신의 의견이 의심됩니다. 나는 10.5에서 10.6으로 이동할 때 수동으로 이것을 변경하고 기본값이 변경되었음을 모호하게 기억합니다.

이것은 아마도 명백하지만 sudo파일은 루트가 소유하기 때문에 파일을 편집하는 데 사용해야 합니다.


1
아니, 내 것은 너의 것과 똑같아 보인다.
waiwai933

1

제 경우는 XAMPP + Mac OS X 10.7 + Dropbox Folder의 디렉토리입니다 ( 스택 오버플로에서 다른 질문 을 상호 참조 함 )

아파치에 의해보고 된 금지 (403) 액세스 그러므로, 나는 변화 사용자에 대한 위의 설명을 다음 /XAMPP/xamppfiles/etc/httpd.conf에서, User nobodyUser my_user_name. Apache를 다시 시작하면 제대로 작동합니다.


0

인덱스 가 켜져 있지 않은 것 같습니다 . 그렇지 않으면 인덱스 파일 ( index.html또는 index.php)을 만들 거나 파일을 명시 적으로 지정해야합니다 (예 :) http://localhost/~me/mypage.html.


죄송합니다. 다시 확인하려면 localhost / ~ myusername / index.html을 방문 하고 내 사이트 폴더에 index.html이라는 파일이 있어야합니다. 그렇다면 403은 여전히 ​​발생하고 있습니다.
waiwai933

당신은 ~myusername내가 믿는 모든 것을 방문해서는 안됩니다 . http://localhost/을 가리켜 야합니다 /Users/youruser/Sites/.
Josh K
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.