티스토리 뷰

Forbidden
You don't have permission to access /~userID/ on this server.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

위와 같은 에러 생길때
콘솔창에서 아래 명령만 입력하면 해결됨..

# setenforce 0
-----------------------------------------

저는 이렇게 해결하였습니다. (CentOS 4.2)

0. /etc/httpd/conf에서(rpm 설치했을 경우에 디렉토리) httpd.conf 수정 -- euc-kr과 사용자 디렉토리등등..
1. /etc/selinux/config 에서 SELINUX=permissive로 설정하고 리부팅.
2. 사용자 계정 생성 > 사용자 암호 생성 > db 설정 등등.....
3. /home/유저명로 이동 (#cd /home/유저명) 한 후 ' #chmod a+x 유저명 ' 으로 권한 설정.
4. 사용자 홈 디렉토리 테스트........OK
-----------------------------------------
SELinux 환경설정에 들어가셔서 httpd 데몬을 허용해 주심이 보안에 더 좋을듯
SELinux를 사용하다보면 불편한 점도 있지만 보안 강화에는 많은 도움이 될듯
 
-----------------------------------------

우연히 PHP 코딩을 해야해서 Fedora core 5에 제로보드를 설치하게 되었다.
그런데, 예전의 Fedora와는 다르게 굉장히 앙칼지게 나를 대하는 것이다.
아직 PHP 코딩뿐 아니라 필요한 모듈조차 분석도 못한 상태에서 이러한 시련은 사람을 빡돌게 한다.
소요되는 시간에 비해 원하는 작업의 진척이 없다는 것은 사람을 살살 약올르게 만든다.
그래서, 혹시나 나와 같은 경험을 하게 될 사람들 또 나중에 똑같은 상황에 처하게 될 나를 위해 하나씩 짚어 간다.



일단, 전제 사항은 APM이 죄다 설치되어 있는 상태를 가정으로 시작한다.
이 상태에서 누구나 다 아래와 같이 할 것이다.

1. httpd.conf에서 유저 계정을 접근 할 수 있도록 설정이 되어 있는가?
2. 설정을 했으면, httpd를 restart 한다.
3. public_html 디렉토리 안에 제로보드를 적당히 푼다.
4. 브라우져로 유저 홈페이지를 확인해 본다.


1~3번까지는 별 문제 없이 root권한 이라면 가능하지만 바로 4번에서 문제가 생길 것이다.
그러면 또 누구나 다 그렇듯이 log 화일을 뒤적여 볼 것이다.
그런데 error_log 화일을 보면 /~유저디렉토리 에 접근할 수 있는 퍼미션이 없다고 나올 것이고, 여기서 또 누구나 다 그렇겠지만 '아하~~ 퍼미션을 지정 안해줬었끄나~~~ ㅉㅉ' 하면서 나름대로 또 퍼미션 조정을 드갈 것이다.


그렇지만, 웹 브라우져는 여전히 퍼미션 에러를 내밷고 있을 것이다.
또 나름 httpd.conf 를 뒤적이고, error_log화일을 열씨미 보면서 얼굴은 점점 상기되어 간다.
그리곤 또 '아~~~ 웨~~~!!??' 를 난발하며 머리를 열씨미 저어본다.
어느정도의 시간을 투자하고 나선, 결국 문제점을 찾는다.
'아~ ㅅㅂ SElinux가 문제여짜나~~~' 그렇다 SElinux가 문제여따.
그런데 이전까지 fedora를 써왔지만, SElinux가 이렇게 까칠했었는지는 기억에 없었다.
그래서 SElinux에 관한 문서를, 그것도 딱 알맞는 문서를 페도라 사이트에서 찾았다.
그런데... 영문이다.....할 수 없다.. 참을성를 가지고 끝까지 읽는다.
해결할 수 있는 방법은 다음과 같음을 찾아냈다.
1. ls -aZ 를 잘 활용해야 한다.
2. 보안 컨택스트 httpd_sys_content_t 로 바꾸어 주어야 한다.
3.그러므로 chcon -R -h -t httpd_sys_content_t /path/to/directory 를 사용하여 유저 디렉토리의 public_html의 보안 컨텍스트를 바꾸어야 한다.

위의 과정을 통하면 웹페이지가 잘 동작함을 확인 할 수 있다.
왠지 자신감에 넘칠라고 한다.
제로 보드를 install 하기위해 install.php를 실행한다.
자질구레한 문제들이 발생하지만, 손쉽게 해결하고 install2.php로 넘어가는데 백지가 나온다.
'이건 또 머야~~' 와 함께 또 손과 머리는 쉴 틈없이 돌아가고 결국 해결책을 찾아낸다.
1. php-mysql 이 설치 안될 가능성이 크다.
2. yum info php-mysql 을 통해 설치되어 있는지 확인해 본다.
3. 설치 안되어 있다면 yum install php-mysql 로 설치한다.

자.. 이제 DB 정보를 입력하는 페이지가 나온다. 기쁨을 느끼면서 필요한 정보를 넣고 다음을 진행한다.
하지만, 에러가 또 발생한다.
'아 그렇치... schema.spl과 php.ini에서 수정할 것이 있었지.' 라는 생각이 머리를 스치고 필요한 파일들을 수정한다.

그렇치만 또 다시 생각지 못했던 에러와 또 다시 마주치게 된다.
config 파일을 생성치 못하니 퍼미션을 조정해 달란다.
당췌, 퍼미션은 언제 설정해 줬는데 이 ㅈㄹ 이고.. 하지만, 내심 퍼미션을 확인해 본다.
그런데, 역시나 퍼미션엔 문제가 없었고 내심 떠오르는건 SElinux 이다.
페도라 사이트 의 문서를 뒤적거린다.
/var/log/message에 보니까 페도라 사이트 에서 나온듯한 에러가 보인다.
SElinux 문서에서 SElinux는 근본적으로 UesrDir에 접근하는 것 뿐 아니라, read 조차도 허용하지 않게 한다는 것 같았다.
하지만 위의 보안 컨텍스트 작업으로 read하는 것은 열어놨고, 에러 메세지 보니 write가 있는걸 보아하니 config 화일을 생성할 수 없다고 퍼미션 조정해 달라는 에러 메세지가 감이 왔다.

그래서 또 페도라 사이트 문서를 읽기 시작한다. 이번엔 쫌 빡쉐다. 많이 읽어가면 읽어갈 수록 도통 모르는 이야기 뿐이다. 그래서 구글링을 해 보지만, 알맞은 답이 없다.
다들 SElinux의 설정을 disable 하라는 말 뿐....
지금까지 고생하고 SElinux를 disable 할 거면 진작해 해버렸다. 어케 함 해보자라는 생각이 엄습함과 비례하게 영문 메뉴얼을 읽어가는 시간이 늘어간다.

결국 문제의 실마리를 다음에서 찾을 수 있다.

8.3.?Simple Changes to Policy Sources

The issue with Python mentioned in Section?8.2, “Policy Debugging” is not an issue with SELinux, since it is Python that is trying to write to a directory of supposedly read-only objects. To deal with these spurious errors that don't effect the functionality of the CGI script, you can direct SELinux to ignore them. SELinux supports a dontaudit directive in the policy sources, but you must rebuild a policy from the source. To install the policy sources, use up2date or yum to install the selinux-policy-targeted-sources package.

To get the rule syntax you need, you can use a audit2allow, which will generate the SELinux policy to allow a set of logged denials. For example, you could invoke audit2allow -i /var/log/messages -l. This generates allow rules for every denial since a policy was last loaded. The output for the denial in Section?8.2, “Policy Debugging” would look like this:


알 것 같기도 하고, 모를것 같기도 한 내용들이다.
갈등이 생긴다. '걍 Disable 시켜 뿌까?'..... 하지만, 또 관련 문서를 찾기 시작한다.

하지만 결국, SElinux-faq에서 찾아낸다. 희망이 샘솟는다.
Q: 내가 허용하고 싶은 avs denials가 있는데 어떻게 하면 되는가?
A: 만약 네가 특정 AVC 메세지를 가지고 있다면 너는 audit2allow를 사용하여 policy 모듈에 로드 시킬수 있는 강제적인 파일을 생성할 수 있다.
  --- 부디 나의 영어 실력을 높게 평가 말라... -_-ㅋ

그래서 다음과 같이 했다.
1. audit2allow -m local -l -i /var/log/messages > local.te
2. 생성된 local.te 파일에서 원하지 않은 허용을 지워라.
3. checkmodule -M -m -o local.mod local.te
4. checkpolicy 가 설치되어 있지 안음으로 인해 에러가 발생한다.
5. yum install checkpolicy 로 설치한다.
6. 3번을 다시 실행한다.
7. semodule_pakage -o local.pp -m local.mod
8. semodule -i local.pp
9. 시스템을 리부팅 한다.

자 이제 다시 제로보드 인스톨을 시작한다.
방금 전까지 보이던 config 화일을 생성할 수 없다는 에러는 사라지고 관리자 계정을 입력하라는 화면이 보인다.
넘 기쁘지 않을 수 없다.
더 하고 싶지만, 좋음의 압박으로 인해 이제고만 쓰러져야 할 것 같음을 느낀다.
그래서 딱 여기까지만 쓰겠다.

'리눅스(유닉스) > 관리' 카테고리의 다른 글

버젼확인  (0) 2008.06.22
검색엔진 정보수집 거부설정 (robots.txt 이용)  (1) 2008.06.22
awk, sed 예제  (0) 2008.06.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크