와우 이것땜에 똥싸는줄 알았습니다 ㅡㅡ
리눅스 정말 시러 ㅠㅠ

==============================================================================================
# 이렇게 하면 되는군요
DocumentRoot "/home/MyID/www"
<Directory "/home/MyID/www">
[root@localhost selinux]# chcon -R -t httpd_user_content_t /home/MyID/www

==============================================================================================


Forbidden
You don't have permission to access / on this server.

아파치의  httpd.conf 에서  기본 폴더를 변경후 위와 같은 오류가 발생할때


아파치 웹서버의 저장소 위치를 /var/www/html/  에서 /home/MyID/www/html 로 변경하고자 합니다.
기존의 알려진 방법에 의하면 

# DocumentRoot: The directory out of which you will serve your 
# documents. By default, all requests are taken from this directory, but 
# symbolic links and aliases may be used to point to other locations. 

# DocumentRoot "/var/www/html" 
DocumentRoot "/home/MyID/www"

이 부분과

# This should be changed to whatever you set DocumentRoot to. 

# <Directory "/var/www/html"> 
<Directory "/home/MyID/www">

을 변경을 해주면 됩니다. 하지만 다음과 같은 에러가 발생할 것입니다.

[root@localhost selinux]# /etc/init.d/httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: Syntax error on line 275 of /etc/httpd/conf/httpd.conf:
DocumentRoot must be a directory
                                                           [FAILED]
[root@localhost selinux]#


문제는 SELinux 보안 정책때문에 해당 디렉토리가 있음에도 찾지 못한 것입니다.
아래와 같이 아파치에서 이 디렉토리를 읽을 수 있는 권한을 부여합니다.

[root@localhost selinux]# chcon -R -t httpd_user_content_t /home/MyID/www


selinux 의 기능을 아래와 같이 OFF합니다.
[root@localhost selinux]# find / -name selinux -print
[root@localhost selinux]# vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
#SELINUX=enforcing
SELINUX=disabled  # 기능 작동을 중단합니다
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted


Seliunx 를 사용하지 않지 않는데도 에러가 난다면...
# vi /usr/local/apache/conf/httpd.conf
...
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all   -->   이것을 사용안하도록 변경  #Deny from all
</Directory>



참고자료
http://www.linux.co.kr/home/superuserboard/view.html?id=1628&code=apache  
http://withover.com/197
http://blworks.textcube.com/69 
http://cafe.naver.com/himss.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=943 
http://blog.naver.com/zezepurr?Redirect=Log&logNo=120031210919 

  1. yistee 2011.05.06 18:04

    저 같은 경우
    # /etc/init.d/apache2 reload 했더니
    Warning: DocumentRoot [/home/dyndns/www/] does not exist가 나왔습니다.

    그래서
    # chcon -R -t httpd_user_content_t /home/dyndns/www 했더니
    chcon: `/home/dyndns/www'에 접근할 수 없습니다.: No such file or directory 라고 나옵니다. 저같은 경우는 어떻게 해야 하는지 궁금합니다.

    • yistee 2011.05.06 18:27

      착오가 있었네요. 해결했습니다.

+ Recent posts