아파치 2.0.40에서 홈계정에서 cgi 실행하기
안녕하십니까.. 초보 리눅스 사용자입니다..
웹서버로 사용좀 할려고 하는데...
개인계정에다 무료 게시판(perl)을 받아서 사용하려고 하는데
cgi부분이 문제가 있는지 실행이 안되는군요
그래서 루트 홈계정에다 test.cgi(아파치2의 헤더정보에 맞는것)을 만들어서
실행을 해보는데 루트 홈에선 실행이 됩니다..
그런데 사용자 홈계정에선 실행이 안되고
(예: http://111.222.333/~444/cgi-bin/test.cgi)
Error message:
Premature end of script headers: test.cgi 라고
나오는군요...
사용자 홈계정에선 /home/계정/public_html/cgi-bin/에다
cgi사용하게끔 할 예정입니다..
당연히 실행권한 및 각종 퍼미션들은 지켰읍니다..
제가 설정한 httpd.conf cgi부분입니다..
ScriptAlias /cgi-bin/ "/home/httpd/cgi-bin/"
<Directory "/home/*/*/*">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
.
.
.
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
<Directory "/home/*/cgi-bin">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
잘 아시는 분들 좀 도와주세요
자문자답이되었지만 며칠 삽질한끝에 해결했습니다.
며칠을 답을 찾으려... 웹 뒤져가면서 httpd.conf 이리 저리 수정해가면서
삽질을 하다가 결국 해결했습니다... 문제는 Suexec였습니다..
uid(사용자id)와 gid(그룹id)을 달리 해서 그런거였었는데...
일단 해결한 문서를 보자면....
--------------------------------------------------------------
suexec 지원 프로그램을 사용하면 어떤 가상호스트 혹은 어떤 사용자
디렉토리에 있는지에 따라 CGI 프로그램을 다른 사용자 권한으로 실행할
수 있다. Suexec는 매우 엄격하게 권한을 검사하며, 검사를 하나라도
통과하지 못하면 CGI 프로그램을 실행하지 않고 Premature end of script
headers를 반환한다.
suexec를 사용하고 있는지 알려면 apachectl -V를 실행하여 SUEXEC_BIN
위치를 확인한다. 아파치가 시작할때 그 장소에서 suexec 실행파일을 발견하면,
suexec를 사용할 수 있다. suexec를 완전히 이해하지 못했다면 사용해서는
안된다. suexec를 사용하지 않으려면 SUEXEC_BIN 위치에 있는 suexec
실행파일을 지우고 (혹은 파일명을 바꾸고) 서버를 재시작하면 된다. suexec에
대해 읽은 다음 그래도 사용하고 싶다면, suexec -V를 실행하여 suexec
로그파일 위치를 알아내고 로그파일에서 당신이 어떤 규칙을 어기고 있는지
찾는다.
이상 http://httpd.apache.org/docs/2.0/ko/howto/cgi.html에서 발췌
------------------------------------------------------------------
suexec의 파일명을 바꾸고 아파치 재 시동 했더니.. 드뎌 되는군요 ㅠ.ㅠ
어쩐리 루트에서만 cgi가 실행되더라니... 원인을 알고 보니 허무하군요..
어쨌든 저 같은 경우의 분들이 있으시면 참고하세요
댓글 달기