gwserv
사용법
gwserv [-c config][-r][-1][-H][-p port_num][-d doc_dir][-i defpage][-u user][-n|-h][-C][-U userdb][-x]
gwserv [-u user] -P password
gwserv -t -c config
gwserv -V
Options are as follows:
-? print this help
-1 not allowed to travel into sub-directory
-B run in the background as a daemon
-C enable CGI
-c config configuration file
-d doc_dir root document directory; def: .
-E string pass string to CGI program as environment variable 'CGIENV'
-h display directories and files whose extensions are .html or .htm
-H do not display hidden files in the directory
-i defpage default page in directory; def: index.html or index.cgi
-l charset specify charset in HTML header; 'euc-kr' or 'utf-8' for Korean
-L path limit CGI path
-n disable directory list
-p port_num TCP port number to service; def: 8008
-P password generate encoded password
-Q allow only mdbxx file transfer
-r reverse order of directory list
-t test access control
-u user permission change to user
-U userdb enable login checking with passwords in userdb file
-x run it without checking licens
-V show version
설명
gwserv는 parm 소프트웨어에서 만들어진 HTML 페이지를 리모트 시스템에서 쉽게
볼 수 있도록 만들어진 최소 기능을 가진 웹 서버이다.
(이 웹 서버를 일반 웹 서버 용도로 사용하기에는 그 기능이 미비하다.)
JSparm에 포함된 명령어가 만든 HTML 페이지를 특정 디렉토리에 갖다 두고,
그 디렉토리를 시스템 부팅시 부터 웹 서비스하고 싶을 경우에
/opt/JSparm/etc/gwserv.conf 파일을 /etc 디렉토리에 복사하고, 그 구성파일의 내용을
수정한다. 시스템 부팅시에 /etc/gwserv.conf 파일이 있으면,
다음과 같은 옵션을 가지고 gwserv가 실행된다.
/opt/JSparm/bin/gwserv -Bc /etc/gwserv.conf
사용자는 /etc/gwserv.conf 파일에서 도큐멘트의 루트 디렉토리와 포트번호를
자신의 환경에 맞게 고치면 된다.
일반적으로
mkrep.sh 명령어를 사용하여 HTML 페이지를 만들었을
경우에 리모트 시스템에서 이 내용을 액세스할 수 있도록 다음과 같이
간단히 gwserv 명령어를 실행할 수 있다.
# gwserv -p 8001
이 명령어는 현재 디렉토리를 웹 서버의 document root 디렉토리로 하고, 8001 포트에
웹 서비스를 한다. 이 시스템의 이름이 dragon일 경우, 리모트 시스템에서 다음과
같은 URL로 액세스할 수 있다.
http://dragon:8001/
root 사용자가 gwserv를 실행시킬 경우에 사용자 권한을 nobody로 바꾸어 실행한다.
사용자 권한을 root로 실행하려면, 명시적으로 -u 옵션을 사용하거나,
구성파일에서 root 사용자를 지정하여야 한다.
다음은 각 옵션에 대하여 설명한다.
옵션 | 설명 |
-1 |
-1 옵션을 지정하면, -d 옵션에서 지정된 도큐멘트 루트 디렉토리만
엑세스되고, 그 하위 디렉토리는 엑세스할 수 없다.
|
-B |
-B 옵션은 backgroud mode로 gwserv를 실행한다.
사용자가 명령어를 실행한 터미날에서 빠져 나와도 프로세스는 종료되지 않고 계속 실행된다.
|
-C |
-C 옵션은 CGI 프로그램을 실행시켜 준다.
|
-c config |
-c 옵션은 구성파일을 지정한다.
구성파일에는 다음과 같은 keyword가 있다.
port: 8008
user: nobody
doc_root: /opt/JSparm/parmview
index_file: index.html
enable_cgi: yes
directory_list: yes
deny: 120.220.29.28
allow: 120.220.29.23 255.255.255.0
cgipath: /mrepx.cgi
명령어와 구성파일에 둘 다 값이 지정되면, 명령어에 지정된 것이 유효하다.
port | -p 옵션에 지정하는 것과 같다. 디폴트: 8008 |
user | -u 옵션에 지정하는 것과 같다. 디폴트: 현재 사용자. root 사용자일 경우 nobody |
doc_root | -d 옵션에 지정하는 것과 같다. 디폴트: . |
index_file | -i 옵션에 지정하는 것과 같다. 디폴트: index.html 또는 index.cgi |
enable_cgi | CGI 프로그램을 실행할지 여부를 지정한다.(-C 옵션: yes)
CGI 프로그램은 .cgi 확장자로 끝나는 파일이고, gwserv는 기본기능만 있는 CGI 프로그램을
지원한다. 디폴트: no
|
directory_list | index 파일이 없을 경우, 디렉토리에 있는 파일 내용을 보여줄지 여부를 결정한다.
no 디렉토리 내용을 보여주지 않는다. (-n 옵션)
yes 디렉토리 내용을 보여준다. (디폴트)
html 디렉토리 내용을 보여줄 때, 디렉토리와 확장자가 .html 또는
.htm 인 파일만 보여준다. (-h 옵션)
|
allow/deny |
allow: 웹 서버를 액세스할 수 있는 시스템을 지정한다.
deny: 웹 서버를 액세스할 수 없는 시스템을 지정한다.
구성파일에 allow나 deny가 지정되어 있지 않으면 모든 리모트
시스템에서 웹 서버를 액세스할 수 있다. 액세스룰(allow,deny)이 지정되어
있으면, 그 룰에 지정되어 있지 않는 시스템은 deny가 된다.
JS PARM V10.5 버전에서 VLSM netmasking을지원한다.
형식
allow: IP or hostname [mask]
allow: IP/masknum or hostname/masknum ; JS PARM V10.5 버전에서 VLSM 지원
deny: IP or hostname [mask]
deny: IP/masknum or hostname/masknum ; JS PARM V10.5 버전에서 VLSM 지원
deny: 120.11.23.100
allow: 120.11.23.129 255.255.255.0
allow: 120.190.60.12
allow: 120.190.30.12/24 ; JS PARM V10.5 버전에서 VLSM 지원
allow: 120.11.20
allow: 120.130
IP가 120.11.23.100은 액세스가 거부되고, 120.11.23.*와
120.190.60.12와 120.11.20.*와 120.130.*.*는 액세스가 허락되고,
그 외는 모두 거부된다.
지정된 룰은 먼저 지정된 것이 적용된다.
|
userdb |
-U 옵션에 지정하는 것과 같다.
|
cgienv |
-E 옵션에 지정하는 것과 같다.
만일 다음과 같이 cgienv에 지정하면
cgienv: webserver1
CGI 프로그램에 다음과 같이 환경변수가 설정된다.
CGIENV=webserver1
|
cgipath |
-L 옵션에 지정하는 것과 같다.
CGI 프로그램의 이름이 지정한 이름으로 시작하지 않은면 오류가 발생한다.
만일 다음과 같이 cgipath 에 지정하면
cgipath: /mrepx.cgi
/mrepx.cgi CGI 프로그램 하나만 실행된다.
다음과 같이 지정하면,
cgipath: /cgibin/
/cgibin/ 으로 시작한는 CGI 프로그램은 실행된다.
물론, CGI 프로그램이 실행되려면, -C 옵션이 지정되어 있어야 한다.
|
구성파일은 gwserv가 실행될 때 읽어 들인다. 내용을 변경할 경우에는 다시
실행하여야 그 변경 내용이 적용된다.
|
-d doc_dir |
-d 옵션은 웹 서버의 root document 디렉토리를 지정한다. 이 옵션이
생략되면, gwserv가 실행된 디렉토리가 root document 디렉토리가 된다.
디폴트는 현재 디렉토리(.)이다.
|
-E string |
-E 옵션이 지정된 문자열은 환경변수 CGIENV에 지정되어 CGI 프로그램을
호출할 때, 전달된다.
|
-H |
-H 옵션을 지정하면, 디렉토리 목록을 보여 줄 때, dot로 시작하는 hidden file을 보여주지 않는다.
|
-h |
-h 옵션이 지정되고, 디렉토리의 디폴트 페이지가 없으면, 그 디렉토리의
내용을 보여주는데, 이때 디렉토리와 확장자가 .html 또는 .htm 인 파일만 보여준다.
구성파일에서 directory_list: 에서 html을 지정하여도 된다.
|
-i defpage |
-i 옵션은 URL에 document 디렉토리를 지정하였을 때 사용될 디폴트 페이지
파일명을 지정한다. 디폴트는 index.html이다. index.html 파일이 없으면 index.cgi가
사용된다.
디렉토리에 디폴트 페이지가 없으면, 디렉토리 내용을 모두 보여준다.
|
-l charset |
-l 옵션에 지정한 문자열을 HTML 헤더 부분에 'Content-type' 에 charset 으로 지정한다.
Content-type: text/html; charset="euc-kr"
|
-L path |
-L 옵션에 지정한 문자열로 시작하는 CGI 프로그램만 실행할 수 있게 한다.
|
-n |
-n 옵션이 지정되고, 디렉토리의 디폴트 페이지가 없으면,
오류 메세지가 나타난다.
|
[-u user] -P password
-U userdb
|
다음과 같은 옵션을 사용하여 gwserv 명령어를 실행하면 인증을 받은 사용자만
웹에 접근할 수 있게 할 수 있다.
# gwserv -U /user1/userdb |
위와 같이 gwserv를 실행하고 난후에 웹 브라우저로 해당 서버로 접근하면 다음과 같은
Login 화면이 나온다.
여기서 사용자명과 암호를 지정하여 웹서버로 접근할 수 있다.
로그인 과정를 거칠 때마다 userdb 파일을 조사하여
사용자명과 암호를 확인하고, 일치하면,
그 정보를 쿠키로 만들어 준다.
해당 웹브라우저와 쿠키를 만든 후에는 userdb 파일은 더 이상 조사하지 않는다.
해당 웹브라우저나 gwserv 명령어를 재기동하면, 이 쿠키는 효력을 잃는다.
여기서 사용자명과 패스워드는 암호화되어 서버로 전송된다.
사용자 이름앞에 '-' minus 부호를 붙이면, 사용자명과 패스워드는 암호화되지 않고 서버로 전송된다.
(java plugin 모듈이 설치되어 있지 않는 시스템에서는 암호화를 할 수 없어서 오류가 발생한다.
이럴 경우에 사용자 이름 앞에 '-' minus 부호를 붙여서 암호화 하지 않고 로그인할 수 있다.)
암호화하지 않고, 로그인을 할 경우에, 네트웍 상에서 암호가 노출되므로 보안에 매우 취약합니다.
사용자 정보 데이타를 가지고 있는 /user1/userdb 형식은 다음과 같다.
-
@IP
username:password
'-' (minus) 를 지정하면, 모든 접속자에 대하여 Login 과정없이 바로 접속할 수 있다.
'@' 뒤에 IP를 지정할 수 있는데, 이렇게 IP를 지정하면, 지정한 IP에서 접속하는 것는 Login 과정없이
바로 접속할 수 있다.
username:password 에서 username은 임의의 사용자 이름을 지정한다. 시스템 로그인명과 무관하다.
이 사용자명은 gwserv에 접속할 때 사용할 User 명이다.
password는 암호화된 패스워드를 지정한다. 암호화된 패스워드는 다음과 같이 만들 수 있다.
# gwserv -u admin -P mypass
admin:017E323B8CE14167D8B396357123308DE95862
# gwserv -u admin -P adm > userdb
# gwserv -u webmaster -P web >> userdb
|
이렇게 userdb 파일을 만들면 Login시에 User에 "admin", Password에 "adm"를 입력하고
[Submit] 버튼을 누르면 웹에 접근할 수 있다.
"webmaster" 사용자는 "web" 이라는 패스워드를 사용하여 로그인할 수 있다.
웹에 로그인한 후에 logout하려면 다음과 같은 URL를 직접 주소창에서 치면 된다.
http://server:8008/logout
logout하는 link를 웹 페이지에 만들려고 하면 다음과 같은 HTML tag를 넣으면 된다.
Logout
password는 최대 16자리만 인식한다.
-P 옵션에서 password를 데쉬("-")를 지정하면, 패스워드를 표준입력에서 읽어 들인다.
# gwserv -u admin -P -
Password for admin:
Retype Password for admin:
admin:0479524677EBA8AE266A382D86FA4D6FE8B5A8
|
gwserv를 종료하고 다시 실행하면 이전에 로그인을 통과한 쿠키 정보는 무효화된다.
즉, 다시 로그인 과정을 거쳐야 한다.
다음은 localhost에서는 로그인 과정없이 바로 접속하고, admin 사용자는 암호로 'admin'를 사용하여
로그인할 수 있는 userdb 예제 파일이다.
@127.0.0.1
admin:0479524677EBA8AE266A382D86FA4D6FE8B5A8
|
|
-p port_num |
-p 옵션은 웹 서비스를 할 TCP 포트번호를 지정한다. 디폴트는 8008이다.
|
-Q |
-Q 옵션을 지정하면 mdbxx 파일 전송 기능만 사용할 수 있게하고, 다른 기능은 전혀 사용할 수 없게 한다.
|
-r |
-r 옵션은 디렉토리에 디폴트 페이지가 없을 경우, 디렉토리의
내용을 보여주는데 이럴 경우에 내림차순으로 정리한다.
|
-t |
-t 옵션은 config구성파일에 지정된 access control 정보를 알아본다.
| -u user |
-u 옵션은 gwserv가 root 권한에서 실행될 때, 다른 사용자로 변경하여
실행한다.
|
-x |
-x 옵션을 지정하면, 라이센스 파을을 조사하지 않고 실행한다.
|
-V |
-V 옵션을 지정하면, 명령어의 버전 정보를 보여준다.
|
|