Apache : 검색 권한이 없어 액세스가 거부되었습니다.


75

나는이 질문에 많이 묻는 것을 알고 있지만 내가 본 해결책은 효과가 없었다.

가상 호스트가 하나만 활성화되어 있고 문서 루트 아래에없는 폴더에 대한 액세스를 활성화하려고합니다.

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

Alias /movies /home/username/Videos/Movies

<Directory /home/username/Videos/Movies/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

나는 /etc/apache2/envvars다음과 같이 설정 했다

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=public

/ home / username / Videos / 및 해당 하위 폴더가 소유하고 username:public있는지 확인하고 권한을 777 (775가 작동하지 않은 후)로 설정하고 사용자 www-data가 group에 속 하는지 확인하십시오 public.

I가 탐색 할 때 이제 http://localhost/movies내가 얻을

[Mon Apr 21 11:28:14.971844 2014] [core:error] [pid 1385:tid 140067725104896] (13)Permission denied: [client 127.0.0.1:46603] AH00035: access to /movies/ denied (filesystem path '/home/username/Videos') because search permissions are missing on a component of the path

그러나 (내 자신의 사용자 이름)으로 /etc/apache2/envvarsApache를 실행하도록 설정 하면 username모든 것이 잘 작동합니다. 문제는 권한과 관련이 있지만 제 경우에는 어떻게 보지 못합니다. 특히 나는에 권한을 설정할 때 777. 어떤 아이디어?

PS Ubuntu 버전은 14.04이고 Apache는 2.4.7이며 다른 구성 파일을 편집하지 않았습니다.



내가 쓴 것처럼 나는 그들이저기서 제안한 모든 것을했지만 도움이되지 않습니다
Yotam

당신이 당신을 장착 한 모든 기회 /homeACL과 활성화? (허가 비트의 경우 "+"부호가있는 경우 (확인 ls -l))
Polosson

아뇨,하지 않았습니다. 지금은 사용자로 Apache를 실행하고 있으므로 작동하지만 보안상의 이유로 다른 사용자로 Apache를 실행하고 싶습니다.
Yotam

Linux를 처음 사용하고 있습니다. Ubuntu 14.04 LTE 버전을 다운로드했습니다. 나는 같은 문제에 직면하고있다. 누구든지 도와 줄 수 있습니까?
Imdad

답변:


95

를 수행 chmod +x하여 사용자 디렉토리에 아파치를 다시 시작합니다. 755 권한이 작동해야합니다. 644에 문제가 있습니다 .


6
실제로, 파일 및 디렉토리 권한을 재확인 하기 위해 사용 가능한 경우 people.apache.org/~igalic/hacks/parsepath를 사용 namei -m /home/youruser/public_html/yourfile.ext하거나 시도 할 수 있습니다
Junior M

2
명확하게하기 위해 Apache 사용자가 읽을 디렉토리는 Apache 사용자가 읽을 수 있어야합니다. 사용자 홈 폴더는 사용자 및 그룹이 소유하지 않았을 가능성이 높으므로 /home/usernameapace로 액세스 하려면 755 권한을 설정해야합니다 .
ruuter

OSX Mac OS High Sierra 에서이 문제가 있었고이 솔루션이 저에게 효과적이었습니다. 아파치를 다시 시작할 필요조차 없었습니다.
사라

몇 시간 동안 검색하면 DocumentRoot의 상위 디렉토리에 대한 권한도 올바른 것으로 판명되었습니다. 대단히 감사합니다. BTW 이것은 Apache를 다시 시작할 필요가 없습니다
회계사 م

27

단지 그것을 해제하기보다는, 문제되는 SELinux가의 경우 경우, 이 페이지이 페이지는 액세스 권한을 부여하는 명령을 제공합니다 :

chcon -R -t httpd_sys_content_t ~/public_html/

1
나는 그것이 내 문제라고 확신했다. 젠장 CentOS! 명령에 대한 Thx는 완벽하게 작동합니다.
Balmipour

2
고마워, ~/public_html/나는 그 부분을 ​​내가 봉사하려고했던 내용의 루트 디렉토리 로 교체해야했다 .
trpt4him

chcon -R -t httpd_sys_content_t /var/www/html/phpmyadmin/(내 상황에서)
cssyphus 2019.02.28

발견 된 selinux는 간단한 homedir을 처리 할 수 ​​없으며, 이러한 기능 중 하나만 필요하고 다른 기능은 선택 사항입니다. 수정 사항에 대해 상기시켜 주셔서 감사합니다. 매번 새로 출시 될 때마다 강제적 인 재 테스트 기간과 실망 후, 나는 보통 킥 스타트에서 해킹합니다. 이제 체계적입니다.
user2066657

17

selinux가 활성화되었을 수 있습니다. 시험

getenforce

"강제 실행"이라고 표시되면

setenforce 0

문제가 해결되는지 확인하십시오.


4
SELinux를 수정 프로그램으로 비활성화하지 마십시오. 포트를 재 할당하거나 부울을 설정하여 SELinux 문제를 해결하십시오.
siride

1
이 답변은 문제가 SELinux와 관련이 있음을 식별하는 데 도움이됩니다. 그러나 비활성화하는 것은 권장되지 않습니다.
Rajkumar R

15

몇 시간 동안 시도한 후에도 동일한 문제가 발생하여 솔루션이 문제를 정확하게 해결한다는 것을 알았습니다.

https://wiki.apache.org/httpd/13PermissionDenied

기본적으로 Apache 서버는 서비스하는 모든 파일에 대한 읽기 권한뿐만 아니라 가상 호스트 경로에있는 모든 디렉토리의 실행 권한이 필요합니다.

유틸리티 namei는 경로의 각 구성 요소를 따라 권한을 나열하여 권한 문제를 찾는 데 도움이됩니다.

namei --modes /usr/local/apache2/htdocs/foo/bar.html

내 경우에는 내 경로의 디렉토리에 권한 700이 있으며 문제가 발생합니다. 701로 변경 한 후 문제가 해결되었습니다.


1
여기 링크는 문제를 설명하므로 도움이됩니다. 디렉토리 경로의 노드 중 하나에 검색 권한이 없습니다. 이를 찾기 위해 "이름을 불렀어"명령을 사용하여 755에 다음 "chmod를"
user3751385

해결책뿐만 아니라 실제 이유도 설명합니다. 감사합니다
Emdadul Sawon

1

4.10 대신 4.4 커널을 사용하는 Ubuntu 16.04 호스트의 도커 컨테이너에서 아파치를 실행하려고 할 때이 문제가 발생했습니다.

호스트에서이 명령을 실행하고 다시 배포 한 후에는 괜찮 았습니다.

sudo apt-get install --install-recommends linux-generic-hwe-16.04 

나는이 문제에 부딪 쳤지 만 컨테이너 내부에서 chmod또는 chown컨테이너 내부 에서 이상한 효과가 있었고 잠시 동안 아파치 403 오류를 억제하고 잠시 후에 되돌려 놓았습니다. 내가 알 수있는 한 개입 컨테이너 재시작이나 이것의 원인이 될 수있는 다른 실질적인 변화는 없습니다. 실제로 16.04를 실행 중이므로이 바이너리를 설치하려고 시도했으며 현재 403은 그대로 유지됩니다. 나는 그것에주의를 기울이고 감사합니다!
halfer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.