Apache가 홈 디렉토리의 폴더에 액세스 할 수 없습니다


29

내 홈 디렉토리의 폴더를 가리 키도록 Apache 구성을 변경했습니다.

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /home/dbugger/html

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/dbugger/html/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

나는 심지어 /home/dbugger/html777을 허락했다. 그러나 나는 여전히 http://localhost"403 Forbidden" 에서 같은 에러 메시지를 받는다 .

내가 무엇을 놓치고 있습니까?


무엇에 대한 /home/dbugger허가를?
Eric Carvalho

777을 전체 홈 폴더로 만들어야합니까? 그것을 과장하는 것 같습니다. 777을 HTML로 만드는 것조차 안전한 솔루션이 아닙니다. 문제의 근본을 식별하려고 노력하고 있습니다.
Enrique Moreno Tent

1
apache는 사용자 www-data로 실행됩니다. 해당 사용자에게 집에 대한 실행 권한이 없으면 아파치는 파일을 읽을 수 없습니다.
Eric Carvalho

내 홈 디렉토리의 하위 폴더를 www-data에 추가하여 홈 폴더에 완전히 액세스 할 수 있습니까? 이 논리를 따르면 / home에 대한 액세스 권한을 부여해야하므로 모든 HOME 폴더에 대한 액세스 권한도 부여해야하는 것처럼 보입니다. 즉 너무 많은 것 같다
엔리케 모레노 텐트를

답변:


25

이것은 나를 위해 일했다

<Directory />
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
    Allow from all
</Directory>

중요한 것은 변화하는 것이 었습니다

Order allow, deny

Require all granted 

당신은 내 시간을 절약, 난 권한을 변경할 필요가 없습니다
khaled_webdev

안녕 난 당신 도움이 기뻐요
szydan

3
나는 "모든 부여가 필요한 것"이 무엇인지 찾아 보는 자유를 얻었고 그것이 Allow from all아파치 2.4 이후 의 "새로운 동등한" -serverfault.com/questions/549517/…
Programster

8
전체 루트에 대한 액세스 권한을 부여하는 것은 결코 좋은 생각이 아닙니다!
bjunix

9
루트 디렉토리 에 설정 AllowOverride하는 것은 무모합니다! 자세한 내용은 httpd.apache.org/docs/2.4/mod/core.html#allowoverride 를 참조하십시오. All
Bombe

19

userdir모듈 활성화 :

sudo a2enmod userdir 

사용자 디렉토리에서 PHP 실행을 활성화하십시오.

sudo nano /etc/apache2/mods-available/php5.conf  

(또는 php7.0을 사용하는 경우)

sudo nano /etc/apache2/mods-available/php7.0.conf

이 부분을 주석 처리하십시오 ( #각 줄의 시작 부분에 입력 ).

#<IfModule mod_userdir.c>
#    <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
#</IfModule>

Ctrl+ X를 눌러 저장

디렉토리 목록을 활성화하십시오.

sudo nano /etc/apache2/apache2.conf

이거 추가 해봐:

<Directory /home/*/public_html/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Ctrl+ X를 눌러 저장


아파치를 다시 시작하십시오 ( sudo여기에서도 필요함).

sudo service apache2 restart

이제 PHP 파일을 /home/yourname/public_html디렉토리에 넣고
http://localhost/~yourname웹 브라우저에서 이동 하십시오.


11

Apache는 user로 실행됩니다 www-data. 집에 대한 실행 권한이 없으면 아파치는 파일을 읽을 수 없습니다.

집의 그룹을 www-data다음으로 변경하십시오 .

chgrp www-data /home/dbugger

그리고 홈 디렉토리를 통과 할 수있는 권한 만 부여하십시오.

chmod g+x /home/dbugger

다음과 /home/dbugger/html같은 퍼미션을 제한 할 수도 있습니다 .

chgrp www-data /home/dbugger/html
chmod 750 /home/dbugger/html

나는 그렇게하지만, 대신 수 /home/dbugger사용 /home/dbugger/html?
Enrique Moreno Tent

이 권한을 /home/dbugger/html777 대신에 적용 할 수도 있지만 www-data cd사용자가 집에 올 수 없으면 파일이나 하위 폴더에 액세스 할 수 없다는 점을 명심해야합니다 . 따라서 귀하의 가정 허가가 rwx------ dbugger:dbugger아파치 인 경우 귀하의 가정에 있는 파일에 액세스 할 수 없습니다. 약간의 액세스를 제한하고 chmod g+x /home/dbugger싶지 않다면 실행 권한 ( ) 만 부여하려고 시도 할 수는 있지만 확실하지 않지만 작동합니다.
Eric Carvalho

죄송하지만이 해결 방법 중 어느 것도 효과가 없었습니다. (
Enrique Moreno Tent

chgrp www-data /home/dbugger@DavidGreene 메소드와 함께 사용하면 나를 위해 일하고 있습니다.
laurent

아파치 sudo usermod -a -G dbugger www-data를 다시 시작해야하는 사용자 그룹을 아파치 사용자 (www-data)에 추가 할 수도 있습니다 .
TIIUNDER

1

홈 디렉토리를 사용하여 개발 환경을 호스팅하려는 경우 최소한 일부 응용 프로그램에 대한 쓰기 권한이 필요한 경우에는 권한을 변경할 필요가 없습니다. 아파치 mod_userdir 모듈이 필요 하고 가상 호스트를 사용하기 위해 http : //domain.local/~user_name/dir_name/ * 와 같이 / home / user_name / public_html / *에 액세스 할 수 있습니다. mod_userdir 모듈을 사용하려면 sym을 작성해야합니다. 이 같은 링크 :

$ sudo ln -s /etc/apache2/mods-available/userdir.conf /etc/apache2/mods-enabled/
$ sudo ln -s /etc/apache2/mods-available/userdir.load /etc/apache2/mods-enabled/
$ sudo service apache2 restart

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