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