body start
JSBoard
Project News
- News
- Activity
- Wiki Status
- No items were found
Project Info
- Development Status: Stable
- License: GPL v2
- Operating System: Linux, Other OS
- Programming Language: PHP
- Topic: Application SW
- User Interface: Web Interface
- Member count : 2
- Registered: : 2003.01.03
- Activity Percentile: : 96.85%
4 JSBoard 설치 ¶
일단 설정 파일들을 위치 시키고 그 파일들의 퍼미션을 조정하도록 한다. ''jsboard/INSTALLER/script 에서 아래의 명령을 실행 한다. 실행이 되지 않으면 퍼미션 을 755로 수정하기 바란다.
$ ./preinstall ######################################################## # JSBoard Pre Installer v2.0 # # Scripted By JoungKyun Kim < http://www.oops.org > # ######################################################## STEP 1 Language Check --------------------- Can you enable to use KOREAN in this console? [Y/N](default Y) : y <--Enter 아파치가 nobody 의 권한으로 작동하고 있는듯 싶습니다. 맞습니까? (이 값은 httpd.conf 의 Group 지시자에 설정되어 있는 값과 일치해야 합니다. [Y/N](default Y) : Y <--Enter
httpd.conf 의 Group 지시자의 값을 적어 주십시오 : apache 작업이 완료 되었습니다. 브라우져로 jsboard/INSTALLER/ 로 접속하여 설치를 계속 하시기 바랍니다. $
<?php
######################################################
# MySQL root 의 권한 소지 여부
# MySQL root 의 패스워드를 알면 1, 모르면 0
#
# 만약 MySQL 패스워드를 몰라 0 으로 설정을 하려면 MySQL
# root 의 권한을 가지고 있는 사람이 database 를 생성하고
# 유저 등록과 패스워드를 등록해 준 후에 INSTALLER 를 사용
# 할 수 있음. 이 값들은 아래에 등록해 줘야 함.
#
$mysqlroot = 1;
# Specify MySQL Root Password
# mysql을 관리할 root의 password 를 지정
# 위에서 $mysqlroot 의 값을 0 으로 지정했을 경우에는 MySQL
# root 가 알려준 mysql 계정 패스워드를 지정함.
#
$passwd = "MySQL_ROOT_PASSWORD";
# $mysqlroot = 0 일 경우에는 아래를 설정함
#
# mysql root 가 생성해준 database name 을 지정
$mysqldatabasename = "";
# mysql root 가 생성해준 database user name 을 지정
$mysqlusername = "";
# apache의 설정파일(httpd.conf)의 경로를 지정
# redhat rpm package의 경우 /etc/httpd/conf/httpd.conf
# debian package의 경우 /etc/apache/httpd.conf
# 수동으로 설치했을 경우 /usr/local/apache/etc/httpd.conf
# 에 위치하는 경우가 많음.
#
$apache_config_file = "/etc/httpd/conf/httpd.conf";
# MySQL의 socket file 위치를 지정. socket file이 무엇인지
# 모르겠으면 localhost 나 127.0.0.1 을 적도록 한다. DB 서
# 버가 외부에 있을 경우에는 해당 DB서버의 ip address나 도
# 메인 이름을 적어주도록 하며, 이 경우에는 DB서버의 mysql
# 에서 설정한 접근 권한으로 설정을 하여야 한다. 즉
# mysql -u USER_NAME -p DB_NAME -h DB_address
# 로 쉘에서 접근이 가능해야 한다.
#
# socket file의 위치를 알고 싶다면 mysql_config --socket
# 명령으로 알수가 있다.
#
$mysql_sock = ":/var/lib/mysql/mysql.sock";
######################################################
?>
계정 유저 즉 MySQL 의 root 패스워드를 모르고 시스템 root 의 권한이 없을경우에는 위의 메세지를 잘 읽으면서 적는다.
그리고 그 아래에는 apache web server의 설정 파일인 httpd.conf가 있는 경로를 적어 주도록 한다. 만약 DirectoryIndex 지시자를 srm.conf 에서 지정을 하는 유저들은 srm.conf의 위치를 지정하기 바란다.
마지막으로 mysql의 sockfile 경로를 지정해 준다. DB 서버가 외부에 있을 경우에는 DB서버의 IP 주소를 지정해 주면 되며, 동일한 서버에 존재할 경우에는 127.0.0.1을 지정하도록 한다.
다음 웹 브라우져로 http://domain.com/jsboard/INSTALLER/ 로 접근을 한다.
------------------------------------------------------
JSBoard Installer
------------------------------------------------------
[ ] Korean [ ] English
------------------------------------------------------
[submit]
------------------------------------------------------
------------------------------------------------------
JSBoard License
------------------------------------------------------
주절주절주절주절 ...........................................
주절주절주절주절 ...........................................
주절주절주절주절 ...........................................
------------------------------------------------------
[AGREE]
------------------------------------------------------
------------------------------------------------------
JSBoard Environment Check
------------------------------------------------------
Jsboard를 사용하기 위한 환경 설정을 검사하고 있습니다
5초 후에 결과를 보실수 있습니다
만약 Linux용 Browser를 사용하신다면 다음 페이지로
자동으로 넘어가지 않을수도 있습니다.
이때에는 INATALL.MANUALY 문서를 참조하셔서 설치를 하십시오
------------------------------------------------------
[ 5초간 기다려 주세요 ]
------------------------------------------------------
주의 할것은 이 부분은 meta tag 로 체크후에 결과 페이지로 넘어 가게 되어 있는데 Linux용 Netscape 4.x 는 Meta tag 가 제대로 작동을 하지 못하는 경우가 많다. 이런 경우에는 windog 에서 install program을 다시 실행 하던지 또는 JSBoard 수동 설치 문서를 참조해서 수동으로 설치를 하기 바란다.
------------------------------------------------------
JSBoard Enviornment Check Reuslt
------------------------------------------------------
OS Type : RedHat
MySQL check : Failed
MySQL login에 실패를 했습니다. jsboard/INSTALLER/include/passwd.php 에
MySQL의 root password가 정확한지 확인해 주시고 맞으면 PHP의 설치시에
--with-mysql 옵션이 들어갔는지 확인해 주십시오
만약 DB server가 독립되어 있다면 INSTALL.MANUALY 문서를 참조하여 설치
를 하시기 바랍니다
index file check : OK
이 부분에서 제대로 설정이 되어 있을 경우에도 에러를 계속 뿌리는 경우가
존재한다. 이럴때에는 httpd.conf의 DirectoryIndex 지시자의 앞에 공백 문
자가 있는지 살펴 보고 만약 공백 문자가 있으면 이를 삭제해 주면 된다.
Permission check : OK
------------------------------------------------------
------------------------------------------------------
혹시 위와 같이 MySQL login failed error 가 발생하면 임의의 php file 을 다음과 같은 내용으로 만들고 테스트를 해 보기 바란다.
<?php
$c = mysql_connect(":socket file 위치","user name","password");
if ($c) echo "OK";
else echo "Failed";
?>
------------------------------------------------------
JSBoard Installer
------------------------------------------------------
MySQL password
[ ]
Password 초기화 [reset]
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
JSBoard Installer
------------------------------------------------------
DB value Admin value
-------------------------------------------------
DB name [ ] ID [ ]
DB user [ ] NAME [ ]
DB pass [ ] EMAIL [ ]
[ E N T E R ]
------------------------------------------------------
DB name과 DB user는 MySQL에 등록이 되어 있지 않은 것을 지정하셔야 합니다.
------------------------------------------------------
Admin value 는 2.0 부터 추가되는 인증 모듈을 위해 설정을 해 주도록 한다. 여기서 지정하는 id, name, email 은 jsboard 2.0 의 전체 관리자 정보를 부여 하는 것이다.
계정 유저의 경우에는 DB value 쪽은 수정을 못하게 고정이 된다.
그리고 Enter 를 click하면, 별다른 에러가 없다면 다음과 같은 경고창이 뜨면서 로그인 페이지로 가게 될것이다.
등록이 완료 되었습니다.
Admin Page로 이동을 합니다.
Admin User의 초기 Password는
0000 입니다.
5 JSBoard 운영 ¶
설치가 완료 되었다면 브라우져는 로그인 창으로 이동을 하게 된다. 여기서 User에는 아까 Admin value 에 지정해 주었던 id 를 적어주고, Password 에는 '0000'을 넣어주도록 한다.
로그인 후에 간혹가다가 IE의 경우 다음과 같은 메세지를 보내는 경우가 있다.
이 메세지를 만나더라도 당황하지 말고 확인을 누른 후에 F5 또는 reload 를 해주면 admin page 에 접속이 된다. 이 에러 메세지는 관리자의 패스워드를 0000에서 변경을 하고 나면 다시는 나지 않는다.
일단 admin 에 로그인을 한 후에 제일 먼저 할 것은 "유저 관리" 버튼을 누르고 admin user 의 password 를 0000 에서 다른 것으로 바꾸어 주도록 한다. 패스워드를 변경한 후에는 로그아웃을 한 후에 다시 로그인을 하도록 한다.
어드민 페이지는 http://domain.com/jsboard/admin/ 으로 접근을 할수가 있다. 패스워드 변경후 다시 로그인을 하였으면 "전역변수 설정" 을 클릭하여 다음의 정보를 변경해 줘야 한다.
# login variation name (This value must be modified as security problem)
$jsboard = "login";
# location of default page after login
$print[dpage] = "http://domain.com/jsboard/list.php?table=test";
# web path of installed jsboard
$board[path] = "http://domain.com/jsboard/";
#################################################
# If registed article as follow information, requried passwd of super user
#################################################
$compare[name] = "쥔장";
$compare[email] = "user@localhost.com";
일단은 기본적으로 이정도만 설정을 하면 전체적인 운영에 별 지장은 없다. 각각 게시판에 대한 설명은 README.OPERATE에 관한 문서를 참조하도록 한다.
6 JSBoard 보안 ¶
보통 CGI 방식을 통한 upload 에 관련하여 보안문제가 많이 발생을 하고 있다. 하지만 단순히 CGI 의 코드만 의존하여 보안문제를 방지 한다는 것은 무리라고 생각이 되어 apache의 설정 file 에서 원천적으로 업로드 file 에 대해서 실행이 되지 않도록 하는 설정을 적용 시켜 보았다. 현재 필자의 개인 서버와 kldp server에서 적용이 되어 있으며 특히 호스팅서버와 같이 여러 계정들이 사용을 하는 경우에 JSBoard 를 사용할수도 있기 때문에 이 셋팅을 해 놓는 것을 권장한다.
설정은 다음과 같이 할수 있다.
<DirectoryMatch "^/.*/jsboard/data">
AddType application/x-httpd-php3-source .phps .php .ph .php3 .cgi .sh .pl .html .htm .shtml .vbs .ins
AddType application/x-httpd-php-source .phps .php .ph .php3 .cgi .sh .pl .html .htm .shtml .vbs .ins
ErrorDocument 403 http://domain.com/ErrorMSG/error_msg.php?l=ko&c=403
<Files ~ ".*\.ph$">
Order allow,deny
Deny from all
</Files>
</DirectoryMatch>
또한 data 라는 이름의 디렉토리 아래로 .ph로 직접 접근할 경우에는 http://domain.com/ErrorMSG/error_msg.php?l=ko&c=403 페이지를 출력 하라는 의미이다.
이 설정은 root 의 권한만 가지고 있으면 누구나 다 설정을 해 주는 것이 좋으며 만약 계정 유저들이라고 해도 서버 관리자에게 이 설정을 해 달라고 하는것이 좋다. 이 설정을 안해서 좋을것이 하나도 없을테니 아마 다 해줄 것이다.
계정 유저들의 경우에는 db 의 password 를 가지고 있는 file을 보호하기 위한 것을 설명한다. 즉 다른 유저가 db 의 패스워드를 볼수 없도록 하기 위한 것으로 이 부분은 root(서버 관리자) 가 해 주어야 할 부분이다. 만약 이것이 불가능 하다면 이 파일들의 권한을 606 으로 그냥 두면 된다. 즉,
- jsbaord/config/global.php,
- jsboard/config/spma_list.php,
shell> chgrp nobody jsboard/config/global.php (root가 실행해야 하는 명령) shell> chgrp nobody jsboard/config/spam_list.txt (root가 실행해야 하는 명령)
-rw-rw---- accountname nobody config/global.php -rw-rw---- accountname nobody config/spam_list.txt
$ chmod 606 config/global.php $ chmod 606 config/spam_list.txt
-rw----rw- accountname accountname config/global.php -rw----rw- accountname accountname config/spam_list.txt
7 Bug report ¶
버그를 발견할 경우 http://kldp.net/projects/jsboard/bugs 에 리포팅을 해 주면 감사하겠다.


