| 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 
 | 
0