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.