아파치 : chmod 755가 Mac OS 10.5의 Apache httpd에서 symlink 또는 alias를 설정하기에 충분하지 않습니까?


15

내 맥 OS 10.5 시스템에서, 나는의 하위 폴더를 설정하고 싶은 ~/Documents처럼 ~/Documents/foo/html될 수 // 로컬 호스트 / foo는 : HTTP를 .

내가 생각한 첫 번째 일은 다음과 같이 Alias를 사용하는 것입니다.

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options Indexes FollowSymLinks MultiViews

    Order allow,deny
    Allow from all
</Directory>

이것은 403 Forbidden을 받았다. error_log에서 다음을 얻었습니다.

[error] [client ::1] (13)Permission denied: access to /foo denied

해당 하위 폴더에는 chmod 755 액세스 권한이 있습니다. http : //localhost/foo/test.php 와 같은 것을 지정하려고 시도했지만 작동하지 않았습니다. 다음으로 심볼릭 링크를 시도했습니다.

(으)로 들어가서 /Library/WebServer/Documents링크를 만들었습니다 ~/Documents/foo/html. 문서 루트는

Options Indexes FollowSymLinks MultiViews

이것은 여전히 ​​403 Forbidden을 받았습니다.

Symbolic link not allowed or link target not accessible: /Library/WebServer/Documents/foo

이것을 설정하기 위해 무엇이 더 필요합니까?

해결책 :

$ chmod 755 ~/Documents

일반적으로 공유 할 폴더와 모든 상위 폴더는 www서비스 사용자 가 볼 수 있어야합니다 .


이 솔루션을 게시 해 주셔서 감사합니다-답변을 찾는 연령을 보낸 후 정말 도움이되었습니다
Tomba

@Tomba 문제 없습니다.
유진 요코타

답변:


24

액세스하려는 디렉토리 위의 일부 디렉토리에 Apache가 통과 할 수있는 권한이없는 것이 좋습니다. Apache가 ( sudo -i -u apache또는 무엇이든) 실행중인 사용자가 된 다음 관심있는 디렉토리로 변경 ls하십시오. 만약 당신이 (예상 한대로) 할 수 없다면, 당신이 들어갈 수있을 때까지 그 위의 디렉토리를 하나씩 들어 오십시오. 그것의 서브 디렉토리는 o+x설정 이 필요한 디렉토리입니다 . 오히려 헹구고 필요에 따라 반복하십시오.


1
노력 '사이트'가 '사이트는'당신은 아마 사용자 디렉토리에 대한 권리 문제 (FileVault를이 캔 추가)이 작동하지 않는 경우 예, 당신은 아마, 문서에 대한 권리 문제가
반경

1
~ / 문서는 700입니다.
유진 요코타

sudo -i -u _wwwOS X에서 실행 하는 경우 (아파치 사용자가 OS X의 기본 아파치 구성에서 whoami_www이므로) _www가 아닌 ​​사용자 이름을 얻습니다.
Jason S

sudo를 사용하여 다른 사용자로 완전히 변경하려면 '-'만 사용하십시오 sudo - www-data(Ubuntu의 경우).
Alexis Wilke

2

사용하다 +FollowSymlinks

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options +Indexes +FollowSymLinks +MultiViews

    Order allow,deny
    Allow from all
</Directory>

httpd.apache.org/docs/2.0/en/mod/core.html#options 에 따르면 , "Options 지시문의 모든 옵션 앞에 + 또는-기호가 있으면 옵션이 병합됩니다." 그게 ~ / 문서가 700이되는 데 어떻게 도움이 될까요?
유진 요코타

AFAIK FollowSymLinks는이 옵션을 활성화하지 않고 디렉토리 계층 구조의 하위 수준에서만 활성화 할 수 있습니다.
Dave Cheney

1
이것은 저에게 정답이었습니다. / etc / apache2 / users에서 conf 파일을 수정하고 FollowSymLinks (+없이)를 허용했습니다. 다시 시작해야합니다.
superluminary

1

파일 볼트가 활성화되어 있지 않은지 확인하십시오. 나는 같은 문제가 있었다. 나는 찾을 수있는 다른 모든 것을 시도했다. 아무것도 효과가 없었습니다. 그러나 이것을 알아 내려고 한 시간 후에, 나는 파일 볼트가 활성화되어 있음을 상기했습니다.

비활성화하면 문제가 해결되었습니다.


1

심볼릭 링크 소유권을 확인하십시오. Mac OS X를 사용하고 있으므로 symlink 소유자를 변경할 수 있습니다. 에서 /Library/WebServer/Documents할 일ls -l

에 대한 심볼릭 링크 ~/Documents/foo/html가 호출 foo되고 다음과 같은 권한이있는 경우

lrwxr-xr--  1 root  wheel 27  2 Nov 17:00 foo -> /Users/username/Documents/foo/html

그런 다음 OS X에서 기본적으로 Apache는 _www 사용자 및 _www 그룹으로 실행되므로 위에서 언급 한 경우 symlink를 통과 할 수 없습니다. ~/Documents/foo/html

man 8 chown시스템 터미널에서 실행 하거나 온라인 man chown을보십시오

-h옵션 을 사용하면 해당 파일이 가리키는 파일이 아니라 심볼릭 링크 자체의 소유권이 변경됩니다 (소스). 그럼 당신은 같은 것을 할 수 있습니다

sudo chown -h :_www foo 

이것은 simlink를

lrwxr-xr--  1 root  _www 27  2 Nov 17:02 foo -> /Users/username/Documents/foo/html

Apache _www 그룹은 링크를 통과 할 수 있습니다.


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