RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
출처 블로그 > 피할수 없는 길이라면 즐겨라.
원본 http://blog.naver.com/nadanux/80008955701

1. 컴파일옵션

---------------------------------------------------------------------------------------

./configure --prefix=/usr/local/apache2 --enable-rule=SHARED_CORE --enable-module=so --enable-shared=max --enable-so --enable-ssl --enable-cgid --enable-cgi

------------------- 기본으로 주어야하는 옵션 -----------------------

--enable-suexec  // suecex 사용

--with-suexec-uidmin=500  // 기본 uid가 500 미만인 유저가 접근할경우 에러

--with-suexec-gidmin=500  // 기본 gid가 500 미만인 유저가 접근할경우 에러

--with-suexec-docroot=/   // hosting 폴더 설정  /home 또는 /hosting 등 만약에

/home1 /home2 등 여러곳일 경우 루트 "/" 로 적는다.

--with-suexec-caller=nobody  // 아파치 실행권한 대부분  nobody이다 적어주지 않을경우 www 사용자로 된다.

이정도만 해주면 무리업이 진행 될것입니다.



---------------------------------------------------------------------------------------

참고자료

---------------------------------------------------------------------------------------

Apache 에서 CGI 를 위한 suexec 사용하기.출처(phpschool.com)


Apache 를 컴파일 할때
--enable-suexec
옵션을 줘서 컴파일 한다.

위 옵션을 줄때는 반드시 부수적인 옵션 하나 이상이 있어야 한다.
 --with-suexec-bin       Path to suexec binary
 --with-suexec-caller    User allowed to call SuExec
 --with-suexec-userdir   User subdirectory
 --with-suexec-docroot   SuExec root directory
 --with-suexec-uidmin    Minimal allowed UID
 --with-suexec-gidmin    Minimal allowed GID
 --with-suexec-logfile   Set the logfile
 --with-suexec-safepath  Set the safepath
 --with-suexec-umask     umask for suexec'd process
이것중에 적어도 하나는 포함해야 합니다.

저는 httpd-2.0.49 에서
--server-uid=web \
--server-gid=web \
--enable-suexec \
--suexec-uidmin=1000 \
--suexec-gidmin=1000
이렇게 포함했습니다. UID 와 GID 가 1000 미만인 파일은 실행이 안되게끔...
단, web User 의 UID 와 GID 가 1000 이상이여야합니다. 이상이 아닐경우 오류를 출력합니다.

컴파일 설치한 후에는 httpd.conf 파일을 수정합니다.
먼저 CGI 가 실행되게끔 해줍니다.

AddHandler cgi-script .cgi

앞에 # 주석 제거.

<Directory ... > 의 Options 에 IncludesNoExec 를 ExecCGI 로 수정

Section 3 의 Virtual Hosts 를 사용하는 경우

<VirtualHost *:80>
       .
       .
   SuexecUserGroup master master
       .
</VirtualHost>
<VirtualHost *:80>
       .
       .
   SuexecUserGroup useraaa groupaaa
       .
</VirtualHost>
<VirtualHost *:80>
       .
       .
   SuexecUserGroup userbbb groupbbb
       .
</VirtualHost>

이런식으로 SuexecUserGroup 를 써줍니다. 보시면 아시겠지만 SuexecUserGroup 다음에 처음 작성하는게 해당 도메인 User 이고 두번째 작성하는게 해당 도메인 Group 입니다.

이제 간단하게 test.cgi 파일을 작성합니다. 단 조심하실점은 작성된 CGI 파일은 Group 이나 Order 에 Write 권한이 있다면 Internal Server Error 를 출력합니다. (User 에 Write 권한은 오류출력 안함.)

간단하게 CGI 파일의 권한설정을 chmod 500 test.cgi 정도로 주시면 되겠습니다. 이렇게 주시면 Group 이건 Order 건 접근 불가능 입니다.

그리고 위에 저와 같이 UID 와 GID 를 1000 으로 주신경우에 만약 1000 이하의 User 나 Group 의 CGI 를 실행할 경우 역시 Internal Server Error 에러를 출력합니다.

그리고 SuexecUserGroup 에서 지정된 User 와 Group 이 아니여도  Internal Server Error 오류를 출력합니다.

언제든지 suexec 설정을 보실려면

./suexec -V

하시면 되며 수정은 불가입니다. 수정하실려면 Apache 재설치 하셔야합니다.


오류의 원흉 정리)
1. --enable-suexec 옵션을 사용할경우 꼭 부수적인 옵션을 하나이상 포함할것.
2. 웹서버 데몬 User 와 Group 은 --suexec-uidmin=xxx --suexec-gidmin=xxx 에서 지정된 UID 와 GID 보다 클것.
3. 파일소유주와 그룹이  --suexec-uidmin=xxx --suexec-gidmin=xxx 에서 지정된 UID 와 GID 보다 클것.
4. 파일소유주와 그룹이 SuexecUserGroup 에서 지정한 User 와 Group 일것.
5. 파일권한에 Group 과 Order 에 write 권한이 없을것.(Suexec 를 사용하는경우는 그냥 퍼미션을 Group 과 Order 에 주지마세요 User 권한만 있으면 됩니다.)

추신. 저녁에 그냥 심심해서 작성한 글입니다. Suexec 를 사용할려고 하는분이나 설정이 미비하신분들은 사용하시면 좋습니다. Suexec 를 사용하지 않는 경우는 웹CGI 땜시 서버가 흔들리는 경우가 다반사라서...--; Suexec 를 사용한다 하더라도 SuexecUserGroup 를 주지 않는다면 역시 하나마나한거라서...--;

----------------------------------------------------------------------------------------

참고자료 끝 참고자료에서 옵션 바뀐 부분있음. --suexec-uidmin=xxx --suexec-gidmin=xxx

----------------------------------------------------------------------------------------


2. # make

3. # make install

4. # vi httpd.conf

---------------------------------------------------------------------------------------

<Directory /home>  // home아래서 cgi 사용
AllowOverride None
Options ExecCGI Includes
</Directory>


AddHandler cgi-script .cgi .pl  // 주석이 있다면 해제. pl확장자 일부 있음

// 가상 호스트 부분

<VirtualHost 61.xx.xx.xx>
ServerName abc.co.kr
DocumentRoot /host/abc/public_html
ServerAlias *.abc.co.kr
#ErrorLog /host/samil25/wwwLog/errorLog
#CustomLog  /host/samil25/wwwLog/accessLog common
SuexecUserGroup abc hosting  <-- 이부분 추가
</VirtualHost>


아파치 재시작

잘되는군요. 상쾌합니다.

기타 자세한 문의 : nadanux@nate.com


2006/09/11 12:57 2006/09/11 12:57
이 글에는 트랙백을 보낼 수 없습니다
웅쓰:웅자의 상상플러스
웅자의 상상플러스
전체 (379)
게임 (5)
영화 (2)
기타 (23)
맛집 (5)
영어 (2)
대수학 (3)
형태소 (5)
Hacking (9)
Linux (112)
HTML (48)
Application_developing (48)
Web_developing (102)
Window (11)
«   2024/04   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
  1. 2016/01 (1)
  2. 2015/12 (3)
  3. 2015/10 (3)
  4. 2015/03 (2)
  5. 2015/01 (4)