문제는........
mysql_query
(PHP 3, PHP 4 , PHP 5)
mysql_query -- Send a MySQL query
설명
int mysql_query ( string query [, int link_identifier])
mysql_query()는 현재 서버에서 동작중인 데이터베이스로부터 특정 link identifier로 질의를 전송한다. 만일, link_identifier를 설정하지 않으면 가장 최근에 열려진 link를 사용하게 된다. 열려진 link가 없으면, 옵션 인자 없이 실행된 mysql_connect() 함수처럼 link를 생성하여 사용한다.
참고: 질의에 쓰이는 문자열 마지막에 세미콜론(;)를 붙이면 안된다.
mysql_query() 함수는 질의 성공 여부에 따라 TRUE(0이 아닌값) 또는 FALSE를 반환한다. 서버로부터 실행된 질의가 실행되고 그 질의 내용에 문제가 없어야만, TRUE값을 반환한다. 이 반환 값은 질의에 해당하는 열 개수 등과는 관련이 없다.
다음 질의는 틀린 문장이기 때문에 mysql_query()는 실패하며, FALSE값을 반환한다: 예 1. mysql_query()
$result = mysql_query ("SELECT * WHERE 1=1")
or die ("잘못된 질의를 실행했습니다!!");
?>
다음 질의는 문법은 맞지만 실제로 테이블 my_tbl에 행 my_col이 없기 때문에 mysql_query() 함수는 실패하며, FALSE값을 반환한다: 예 2. mysql_query()
$result = mysql_query ("SELECT my_col FROM my_tbl")
or die ("잘못된 질의를 실행했습니다!!");
?>
mysql_query()는 질의로 참조되는 테이블에 대한 접근 권한이 없다면 실패하며, FALSE값을 반환한다.
질의가 성공하면 mysql_num_rows() 함수를 사용하여 SELECT문으로 반환되는 행의 개수를 얻을 수 있으며, mysql_affected_rows() 함수를 사용하면, DELETE, INSERT, REPLACE, UPDATE로 적용된 행의 개수를 얻을 수 있다.
SELECT문을 위해 mysql_query() 함수는 mysql_result() 함수에서 사용할 수 있는 새로운 result identifier를 반환한다. 결과셋을 사용한 후, mysql_free_result() 함수를 사용하여 메모리에서 제거할 수 있다. 그러나, 스크립트가 종료되는 시점에 자동적으로 메모리에서 제거가 된다.
에서.......... 참고: 질의에 쓰이는 문자열 마지막에 세미콜론(;)를 붙이면 안된다.
2006년 1월 16일 월요일
2006년 1월 15일 일요일
간만에 적어보는 내 블로그에서...
한동안 정신이 없었다.. ㅡㅡ;
무슨 도깨비방망이를 휘두르며 있었던 것도 아닌데,
벌써 몇 개의 사이트가 내 손을 거쳐 오픈되었는지..
난 지금 프로그래머다.PHPer라고 말하기엔 쪽팔린다.ㅎㅎ
장시간의 코딩과 그로인한 스트레스성 흡연과 음주
디버깅중엔 ,[쉼표]나 ;[세미콜론]하나 때문에 수십페이지의 수백줄의 코드를 일일이 훑어야하는 짜증을 뒤로한 채
'다시는 푸로그래머를 하지 않으련다.' 맘 먹은지 언 3년.
그런데 지금 나는 프로그래머로 일한다.
이전 직업은 웹마스터. 플래셔. 웹디자이너 ...
다시 시작하는 푸로그래머라는 일이 내겐 그랬다. 그래도 열씨미 해봐야지?
오늘도 이렇게 몇 자 끄적이고 간다.
자주 글을 적으마~
무슨 도깨비방망이를 휘두르며 있었던 것도 아닌데,
벌써 몇 개의 사이트가 내 손을 거쳐 오픈되었는지..
난 지금 프로그래머다.PHPer라고 말하기엔 쪽팔린다.ㅎㅎ
장시간의 코딩과 그로인한 스트레스성 흡연과 음주
디버깅중엔 ,[쉼표]나 ;[세미콜론]하나 때문에 수십페이지의 수백줄의 코드를 일일이 훑어야하는 짜증을 뒤로한 채
'다시는 푸로그래머를 하지 않으련다.' 맘 먹은지 언 3년.
그런데 지금 나는 프로그래머로 일한다.
이전 직업은 웹마스터. 플래셔. 웹디자이너 ...
다시 시작하는 푸로그래머라는 일이 내겐 그랬다. 그래도 열씨미 해봐야지?
오늘도 이렇게 몇 자 끄적이고 간다.
자주 글을 적으마~
php로 DB 백업하기
<?
$mysql_host = "localhost"; // 호스트정보
$mysql_db = ""; // 백업할 DB명
$mysql_user = ""; // 사용자 아이디
$mysql_pass = ""; // 사용자 비번
$fileName = date("Y_m_d_H_i"); //백업받을 파일명
$extention = "sql"; // 백업 받을 파일 확장자
$all = false; //완전한 Insert 문을 작성하려면 true
$drop = false; //drop table 구문을 포함하려면 true
mysql_connect( $mysql_host, $mysql_user, $mysql_pass ) || die("데이타 베이스 접속에 실패하였습니다.");
mysql_select_db( $mysql_db ) || die("DB 접속 실패");
function bak_getTableNames($db) {
$result[0] = mysql_list_tables($db);
$result[1] = mysql_num_rows($result[0]);
return $result;
}
function bak_getFields($table) {
global $all;
$result = mysql_query("show fields from $table");
$i = 0;
while($keys = mysql_fetch_array($result)) {
if(!$i) $defaultOrder = $keys[Field];
if($keys[Key] == 'PRI') {
$orderby = $keys[Field];
break;
}
$i++;
}
if(!$orderby) $orderby = $defaultOrder;
$result = mysql_query("select * from $table order by $orderby");
$nums = mysql_num_fields($result);
if($all == true) {
for($i=0;$i<$nums;$i++) {
$fields[] = mysql_field_name($result,$i);
}
$fields = "(".implode(",",$fields).") ";
}
while($rows = mysql_fetch_row($result)) {
for($i=0;$i<$nums;$i++) {
$insertValues[$i] = $rows[$i];
}
$return .= "INSERT INTO $table ".$fields."values ('".implode("','",$insertValues)."');\n";
}
return $return;
}
$tables = bak_getTableNames($mysql_db);
if($tables[1] > 0) {
$backText = "
# MysqlDump
# 호스트: ".$mysql_host."
# 처리한 시간: ".date('Y년 n월 j일 H시 i분')."
# 서버 버전: ".mysql_get_server_info()."
# 데이터베이스 : `".$mysql_db."`
# --------------------------------------------------------\n\n\n\n\n";
while($rows = mysql_fetch_row($tables[0])) {
$backText .= "
#
# 테이블 구조 `".$rows[0]."`
#\n\n";
$skima = mysql_fetch_array(mysql_query("SHOW CREATE TABLE ".$mysql_db.".".$rows[0]));
if($drop == true) $backText .= "DROP TABLE IF EXISTS ".$skima[0].";\n\n";
$backText .= "CREATE TABLE if not exists ".$skima[0]." ";
$pos = strpos($skima[1]," (");
$backText .= str_replace("`","",substr($skima[1],($pos+1))).";";
$insert = bak_getFields($rows[0]);
$backText .= "
#
# 테이블 '".$rows[0]."' insert 문
#";
if($insert) $backText .= "\n\n\n".$insert;
$backText .= "\n\n\n\n\n";
}
header("Content-Type: application/octetstream");
header("Content-Disposition: attachment; filename=".$fileName.".".$extention);
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
echo $backText;
}
?>
$mysql_host = "localhost"; // 호스트정보
$mysql_db = ""; // 백업할 DB명
$mysql_user = ""; // 사용자 아이디
$mysql_pass = ""; // 사용자 비번
$fileName = date("Y_m_d_H_i"); //백업받을 파일명
$extention = "sql"; // 백업 받을 파일 확장자
$all = false; //완전한 Insert 문을 작성하려면 true
$drop = false; //drop table 구문을 포함하려면 true
mysql_connect( $mysql_host, $mysql_user, $mysql_pass ) || die("데이타 베이스 접속에 실패하였습니다.");
mysql_select_db( $mysql_db ) || die("DB 접속 실패");
function bak_getTableNames($db) {
$result[0] = mysql_list_tables($db);
$result[1] = mysql_num_rows($result[0]);
return $result;
}
function bak_getFields($table) {
global $all;
$result = mysql_query("show fields from $table");
$i = 0;
while($keys = mysql_fetch_array($result)) {
if(!$i) $defaultOrder = $keys[Field];
if($keys[Key] == 'PRI') {
$orderby = $keys[Field];
break;
}
$i++;
}
if(!$orderby) $orderby = $defaultOrder;
$result = mysql_query("select * from $table order by $orderby");
$nums = mysql_num_fields($result);
if($all == true) {
for($i=0;$i<$nums;$i++) {
$fields[] = mysql_field_name($result,$i);
}
$fields = "(".implode(",",$fields).") ";
}
while($rows = mysql_fetch_row($result)) {
for($i=0;$i<$nums;$i++) {
$insertValues[$i] = $rows[$i];
}
$return .= "INSERT INTO $table ".$fields."values ('".implode("','",$insertValues)."');\n";
}
return $return;
}
$tables = bak_getTableNames($mysql_db);
if($tables[1] > 0) {
$backText = "
# MysqlDump
# 호스트: ".$mysql_host."
# 처리한 시간: ".date('Y년 n월 j일 H시 i분')."
# 서버 버전: ".mysql_get_server_info()."
# 데이터베이스 : `".$mysql_db."`
# --------------------------------------------------------\n\n\n\n\n";
while($rows = mysql_fetch_row($tables[0])) {
$backText .= "
#
# 테이블 구조 `".$rows[0]."`
#\n\n";
$skima = mysql_fetch_array(mysql_query("SHOW CREATE TABLE ".$mysql_db.".".$rows[0]));
if($drop == true) $backText .= "DROP TABLE IF EXISTS ".$skima[0].";\n\n";
$backText .= "CREATE TABLE if not exists ".$skima[0]." ";
$pos = strpos($skima[1]," (");
$backText .= str_replace("`","",substr($skima[1],($pos+1))).";";
$insert = bak_getFields($rows[0]);
$backText .= "
#
# 테이블 '".$rows[0]."' insert 문
#";
if($insert) $backText .= "\n\n\n".$insert;
$backText .= "\n\n\n\n\n";
}
header("Content-Type: application/octetstream");
header("Content-Disposition: attachment; filename=".$fileName.".".$extention);
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
echo $backText;
}
?>
2006년 1월 9일 월요일
리눅스서버 명령어
more..
아파치 시작
/usr/local/apache/bin/apachectl start
아파치 stop
/usr/local/apache/bin/apachectl stop
톰캣 시작
$CATALINA_HOME/bin/startup.sh (or catalina.sh start)
톰캣 stop
$CATALINA_HOME/bin/shutdown.sh (or catalina.sh stop)
이 때 주의해야 할 사항은 항상 톰켓을 먼저 시동하고 아파치를 시동해야 한다는 것입니다.
MySql
데몬 실행
/etc/rc.d/init.d/mysqld start
/etc/rc.d/init.d/mysqld stop
ps -ef // 데몬이 떴는지 확인한다
접속
/usr/bin/mysql -p
engis
/usr/local/apache/bin/apachectl start
아파치 stop
/usr/local/apache/bin/apachectl stop
톰캣 시작
$CATALINA_HOME/bin/startup.sh (or catalina.sh start)
톰캣 stop
$CATALINA_HOME/bin/shutdown.sh (or catalina.sh stop)
이 때 주의해야 할 사항은 항상 톰켓을 먼저 시동하고 아파치를 시동해야 한다는 것입니다.
MySql
데몬 실행
/etc/rc.d/init.d/mysqld start
/etc/rc.d/init.d/mysqld stop
ps -ef // 데몬이 떴는지 확인한다
접속
/usr/bin/mysql -p
engis
서버재실행
/etc/rc.d/init.d/named reload
/usr/local/apache/bin/apachectl restart
/etc/rc.d/init.d/sendmail restart
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
2. 계정추가
useradd -m -k /etc/skel-virtual-host -d /hosting/www/계정명(디렉토리명) 계정명(사용자명) --> 서버에 계정방을 만듦
/hosting/www 하위로 현재 생성코져 하는 디렉토리생성
chmod 701 계정명 -> 만들어진 계정의 권한 변경
passwd 계정명 -> 계정에 접근할수있는 패스워드 설정(어디에서 해주던 상관없다)
이후 패스워드를 등록하고 ftp를 이용하여 nastal.net(서버) User(계정명) Pass(패스명)을 넣고 확인해보면 계정접속이 가능하다는 것을 알 수 있다
3. 계정메일세팅
/etc/mail
virtusertable - 메일의 모든 자료를 저장한다.(기본메일 및 추가메일을 설정)
local-host-names - alise를 잡는곳이다. 간단하게 넣어주세요^^
3.1.메일계정추가시
[사용법]# useradd -m -k /etc/skel-virtual-mail/ -d /경로/계정(폴더) 계정(id)
[root@nstal /etc]# useradd -m -k /etc/skel-virtual-mail/ -d /home/shopwiz shopwiz
[root@nstal mail]# vi /etc/passwd - 이곳은 현재 잡힌 계정의 디렉토리를 모두 알수 있다
etc/skel-virtual-mail --> 이곳에는 세팅시마다 기본적으로 등록되는 것들을 넣어둔다.(없어도 무방)
vi /etc/mail/virtusertable <-- 메일계정을 추가한다
3.2. 메일계정수정시
두개의 파일을 수정
virtusertable : ?? 가상메일이 잡힌 곳 같은데...
local-host-names : 이곳 하단에 추가되는 메일계정을 넣어준다.
3.3 메일계정추가(다른예) : 폴더생성없이 계정만 생성할 경우
일단 popusers 라는 가상 그룹으로 지정하며 bin/false를 준다.
(group : popusers, ID : 사용자 아이디)
useradd -g group -M -s /bin/false ID
4. 아파치 버처호스팅추가 <-- 여기서 부터 시작 -->
/usr/local/apache/conf/httpd.conf 파일의 맨 밑부분에 추가
예)
ServerAdmin 계정명@도메인명
DocumentRoot /hosting/www/계정명/public_html
ServerName 도메인명
ServerAlias *.도메인명 도메인명
ErrorLog /root/hostinglog/계정명_error_log
CustomLog /root/hostinglog/계정명_access_log common
////2차도메인으로 잡기
ServerAdmin nunadli@webpiad.net
DocumentRoot /hosting/www/계정명/public_html
ServerName 2차도메인명.일차도메인명
ErrorLog /root/hostinglog/2차_1차_error_log
CustomLog /root/hostinglog/2차_1차_access_log common
참조 :
5. 네임서버등록
- vi /etc/named.conf
zone "도메인명" IN {
type master;
file "shopwiz.zone";
allow-update { none; };
};
- /var/named/shopwiz.rev
159 IN PTR 도메인명.
:
6. DB setting
접속 : mysql -u root -p
패스워드 : lynchmob
mysql> create database db이름;
결과 : Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on 디비명.* to 계정명@localhost identified by '디비패스워드';
결과 : Query OK, 0 rows affected (0.02 sec)
설정이 완료되었는지 확인해보자
mysql -u 계정명 -p 디비명을 누르고 엔터를 치고 패스워드 입력하여 정확하게 들어가면 OK;
결과 : Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 621711 to server version: 3.23.44
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
7. 서버 재 시동
/usr/local/apache/bin/apachectl restart
결과 : /usr/local/apache/bin/apachectl restart
/etc/rc.d/init.d/named reload
결과 : Hangup
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
결과 :
/etc/rc.d/init.d/sendmail restart
결과 : Shutting down sendmail: [ OK ]
Starting sendmail: [ OK ]
7. 다중도메인 등록하기
아파치 버쳐호스팅추가를 아래와 같이 한다.
/usr/local/apache/conf/httpd.conf 파일의 맨 밑부분에 추가
예)
ServerAdmin master@shop-wiz.com
DocumentRoot /hosting/www/계정명/public_html
ServerName 도메인명
ServerAlias *.도메인명 도메인명
ErrorLog /root/hostinglog/계정명_error_log
CustomLog /root/hostinglog/계정명_access_log common
- 이곳에서 Document Root는 동일하게 잡고 도메인명을 틀리게 잡는다.
나머지는 상기 내용들을 훝어보기바란다.
리눅스 하나의 서버로 다중 도메인 세팅
네임서버설정방법
/etc/named.conf
/var/named/nomcomputer.zone를 제일 먼저 설정
네임서버 설정을 하실때 대부분의 에러는 존파일에서 나타납니다.
한가지 방법만 하지마시고 여러가지 방법으로 시도하시면 좋은 결과를 얻으실 수 있습니다.
나중에 도움도 되고요....
존파일을 아래와 같이 설정해보세요!
참고로 지금 잘돌아가는 네임서버의 존파일을 참고했습니다.
---------------------------------------------------------------
$TTL 86400
@ IN SOA ns1.sample2.co.kr. admin.sample2.co.kr. (
15 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.sample2.co.kr.
IN NS ns2.sample3.co.kr.
;
IN MX 10 mail.sample2.co.kr.
;
;
sample2.co.kr. IN A 210.100.20.150
ns1 IN A 210.100.20.150
ns2 IN A 211.***.**.***
www IN A 210.100.20.150
webmail IN A 210.100.20.150
mail IN A 210.100.20.150
;
* IN A 210.100.20.150
______________________________________________________________
존파일 참고하시고요...
제가 봤을땐 전체적으로 구성이 미흡한 것 같습니다.
/etc/named.conf
/var/named/sample2.co.kr.zone
위의 두가지만 설정한다고 네임서버설정이 제대로 되었다고는 볼 수 없습니다.
기본네임서버 설정파일인
/etc/resolv.conf
를 우선적으로 설정해주셔야 되고요...
이외에
/etd/hosts
그리고 네트워크 설정파일인
/etc/sysconfig/network
의 설정을 제대로 하셨는지부터 점검해보세요!
그러면 전체적인 네임서버 설정을 구성해보겠습니다.
DNS(Domain Naming System) 서버
보통 네임서버라고 하는데 네임서버의 역할은 아이피와 도메인의 다리역할을 한다고보면 됩니다.
예)
210.100.20.150 <--네임서버--> sample2.co.kr
아이피와 도메인을 매핑(mapping) 즉, 연결시켜준다는거죠.
목적 : IP주소를 별칭(도메인)으로 지정하여서 간편하게 사용
=>아무래도 아이피를 외우는것보다는 도메인을 외우는게 쉽기때문이죠...
DNS를 전체적인 세팅 절차를 적어보겠습니다.
① 도메인 명을 등록한다.
② 네임서버로 사용할 시스템의 /etc/hosts 파일에 등록한 네임 서버의 정보(호스트명과 도메인 어드레스)를 추가한다.
/etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
210.100.20.150 ns.sample2.co.kr ns // =>호스트명과 도메인명을 추가했다.
③ /etc/resolv.conf 파일에 1차 네임서버로 등록한 네임서버의 정보를 입력한다.
==>resolv.conf 는 네임서버를 지정해주는 파일이다.
가장 기본이되는 네임서버 설정파일입니다.
/etc/resolv.conf
search ns.sample2.co.kr
nameserver 210.100.20.150 // IP주소
nameserver *.*.*...
④ /etc/sysconfig/network 파일에 hostname과 domainname 을 추가한다.
hostname에는 보통 네임서버의 호스트이름인 ns를 사용하며,
domainname에는 도메인 이름을 기입한다.
/etc/sysconfig/network
NETWORKING = yes
HOSTNAME = ns
DOMAINNAME = sample2.co.kr
GATEWAY = 210.100.20.1
=>HOSTNAME 과 DOMAINNAME 을 추가해주었습니다.
=>변경된 내용을 적용하기 위해서 network 데몬을 재시작해줍니다.
#/etc/rc.d/init.d/network restart
또는
#service network restart
☞ 여기에서 service 는
#setup 치고 들어가면
System Service 목록에 있는것들인데 체크가 되어있는것은 리눅스 부팅과 동시에 실행되는 데몬들이고 체크가 되지않은것은 실행되지 않은 데몬들입니다.
(이러한 데몬들은 /etc/rc.d/init.d/ 디렉토리에 있습니다.)
MS 윈도우의 서비스와 같은 개념인데...
즉, MS 윈도우에서는 서비스라 부르고 리눅스에서는 데몬이라 부르죠...
⑤ /etc/named.conf 파일에 forward zone 파일과 reverse zone 파일에대한 정보를 추가한다.
=>named.conf 는 네임서버 설정파일이다.
⑥ /var/named 디렉토리에 forward zone 파일과 reverse zone 파일을 생성한다.
이때 존 파일은 /etc/named.conf 파일에서 지정한 파일 이름을 사용하여야 합니다.
⑦ named 데몬을 재실행하여 변경된 내용을 반영한다.
#/etc/rc.d/init.d/named restart
또는
#service named restart
⑧ named 데몬이 살아있는지 확인한다.
#ps aux | grep named
named 641 0.0 0.8 29624 1056 ? S 17:52 0:00 [named]
root 1428 0.0 0.4 3548 528 pts/0 S 20:33 0:00 grep named
⑨ nslookup 이나 host 또는 dig명령어를 사용하여 자신의 네임서버가 제대로 동작되는지 확인한다.
#nslookup sample2.co.kr
Note: nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead. Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
Server: 210.100.20.150
Address: 210.100.20.150#53
Name: sample2.co.kr
Address: 210.100.20.150
#
네임서버의 전체전인 설정은 대략 이렇습니다. ^^
보니가 여러번 해보신 분이니 전체적인 설정을 정리해봤습니다.
네임서버 설정을 몇줄로 정리한다는건 좀 무리죠...
참고만 하세요.
네임서버 이녀석이 의외로 섬세한 녀석입니다.
꼼꼼히 해주지 않으면 작동을 안하거든요...^^
네임서버 설정 꼭 성공하세요!!
/etc/named.conf
/var/named/nomcomputer.zone를 제일 먼저 설정
/etc/named.conf설정
zone "nomcomputer.com" IN {
TYPE master;
file "nomcomputer.zone";
};
zone "nomcomputer.com" IN {
TYPE master;
file "nomcomputer.zone";
};
/etc/named/nomcomputer.zone설정
$TTL 100
@ IN SOA ns.nomcomputer.com. root.nomcomputer.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
100 ) ; Minimum
IN NS ns.nomcomputer.com
IN MX 10 mail.nomcomputer.com
mail IN A 000.000.000.000
pop3 IN A 000.000.000.000
ns IN A 000.000.000.000
nomcomputer.com. IN A 000.000.000.000
www IN A 000.000.000.000
* IN A 000.000.000.000
$TTL 100
@ IN SOA ns.nomcomputer.com. root.nomcomputer.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
100 ) ; Minimum
IN NS ns.nomcomputer.com
IN MX 10 mail.nomcomputer.com
mail IN A 000.000.000.000
pop3 IN A 000.000.000.000
ns IN A 000.000.000.000
nomcomputer.com. IN A 000.000.000.000
www IN A 000.000.000.000
* IN A 000.000.000.000
more..
[출처]. 네이버지식
네임서버 설정을 하실때 대부분의 에러는 존파일에서 나타납니다.
한가지 방법만 하지마시고 여러가지 방법으로 시도하시면 좋은 결과를 얻으실 수 있습니다.
나중에 도움도 되고요....
존파일을 아래와 같이 설정해보세요!
참고로 지금 잘돌아가는 네임서버의 존파일을 참고했습니다.
---------------------------------------------------------------
$TTL 86400
@ IN SOA ns1.sample2.co.kr. admin.sample2.co.kr. (
15 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.sample2.co.kr.
IN NS ns2.sample3.co.kr.
;
IN MX 10 mail.sample2.co.kr.
;
;
sample2.co.kr. IN A 210.100.20.150
ns1 IN A 210.100.20.150
ns2 IN A 211.***.**.***
www IN A 210.100.20.150
webmail IN A 210.100.20.150
mail IN A 210.100.20.150
;
* IN A 210.100.20.150
______________________________________________________________
존파일 참고하시고요...
제가 봤을땐 전체적으로 구성이 미흡한 것 같습니다.
/etc/named.conf
/var/named/sample2.co.kr.zone
위의 두가지만 설정한다고 네임서버설정이 제대로 되었다고는 볼 수 없습니다.
기본네임서버 설정파일인
/etc/resolv.conf
를 우선적으로 설정해주셔야 되고요...
이외에
/etd/hosts
그리고 네트워크 설정파일인
/etc/sysconfig/network
의 설정을 제대로 하셨는지부터 점검해보세요!
그러면 전체적인 네임서버 설정을 구성해보겠습니다.
DNS(Domain Naming System) 서버
보통 네임서버라고 하는데 네임서버의 역할은 아이피와 도메인의 다리역할을 한다고보면 됩니다.
예)
210.100.20.150 <--네임서버--> sample2.co.kr
아이피와 도메인을 매핑(mapping) 즉, 연결시켜준다는거죠.
목적 : IP주소를 별칭(도메인)으로 지정하여서 간편하게 사용
=>아무래도 아이피를 외우는것보다는 도메인을 외우는게 쉽기때문이죠...
DNS를 전체적인 세팅 절차를 적어보겠습니다.
① 도메인 명을 등록한다.
② 네임서버로 사용할 시스템의 /etc/hosts 파일에 등록한 네임 서버의 정보(호스트명과 도메인 어드레스)를 추가한다.
/etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
210.100.20.150 ns.sample2.co.kr ns // =>호스트명과 도메인명을 추가했다.
③ /etc/resolv.conf 파일에 1차 네임서버로 등록한 네임서버의 정보를 입력한다.
==>resolv.conf 는 네임서버를 지정해주는 파일이다.
가장 기본이되는 네임서버 설정파일입니다.
/etc/resolv.conf
search ns.sample2.co.kr
nameserver 210.100.20.150 // IP주소
nameserver *.*.*...
④ /etc/sysconfig/network 파일에 hostname과 domainname 을 추가한다.
hostname에는 보통 네임서버의 호스트이름인 ns를 사용하며,
domainname에는 도메인 이름을 기입한다.
/etc/sysconfig/network
NETWORKING = yes
HOSTNAME = ns
DOMAINNAME = sample2.co.kr
GATEWAY = 210.100.20.1
=>HOSTNAME 과 DOMAINNAME 을 추가해주었습니다.
=>변경된 내용을 적용하기 위해서 network 데몬을 재시작해줍니다.
#/etc/rc.d/init.d/network restart
또는
#service network restart
☞ 여기에서 service 는
#setup 치고 들어가면
System Service 목록에 있는것들인데 체크가 되어있는것은 리눅스 부팅과 동시에 실행되는 데몬들이고 체크가 되지않은것은 실행되지 않은 데몬들입니다.
(이러한 데몬들은 /etc/rc.d/init.d/ 디렉토리에 있습니다.)
MS 윈도우의 서비스와 같은 개념인데...
즉, MS 윈도우에서는 서비스라 부르고 리눅스에서는 데몬이라 부르죠...
⑤ /etc/named.conf 파일에 forward zone 파일과 reverse zone 파일에대한 정보를 추가한다.
=>named.conf 는 네임서버 설정파일이다.
⑥ /var/named 디렉토리에 forward zone 파일과 reverse zone 파일을 생성한다.
이때 존 파일은 /etc/named.conf 파일에서 지정한 파일 이름을 사용하여야 합니다.
⑦ named 데몬을 재실행하여 변경된 내용을 반영한다.
#/etc/rc.d/init.d/named restart
또는
#service named restart
⑧ named 데몬이 살아있는지 확인한다.
#ps aux | grep named
named 641 0.0 0.8 29624 1056 ? S 17:52 0:00 [named]
root 1428 0.0 0.4 3548 528 pts/0 S 20:33 0:00 grep named
⑨ nslookup 이나 host 또는 dig명령어를 사용하여 자신의 네임서버가 제대로 동작되는지 확인한다.
#nslookup sample2.co.kr
Note: nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead. Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
Server: 210.100.20.150
Address: 210.100.20.150#53
Name: sample2.co.kr
Address: 210.100.20.150
#
네임서버의 전체전인 설정은 대략 이렇습니다. ^^
보니가 여러번 해보신 분이니 전체적인 설정을 정리해봤습니다.
네임서버 설정을 몇줄로 정리한다는건 좀 무리죠...
참고만 하세요.
네임서버 이녀석이 의외로 섬세한 녀석입니다.
꼼꼼히 해주지 않으면 작동을 안하거든요...^^
네임서버 설정 꼭 성공하세요!!
웹호스팅 사용자 셋팅자동생성툴(AutoMaster)
[출처]. SUPERUSER
#!/bin/bash
#########################################################
#####웹호스팅사용자 셋팅스크립트: AutoMaster V 1.0
######################################################
# 1. 제작자 #
# - 이름 : 박성수 #
# - Email : master@superuser.co.kr #
# 2. 저작권 #
# ; 이 프로그램의 저작권은 위의 제작자(박성수)에게 #
# 있으며, 어떠한 경우라도 이 프로그램의 일부분 #
# 또는 전부를 제작자의 서면허락없이 사용하는 것을 #
# 금합니다. 제작자의 허락없이 이 프로그램을 사용할 #
# 시에는 허락을 득하지아니한채 사용한 자에게 #
# 법적인 책임이 있음을 알려드립니다. #
# #
# Date : 2000년 8월 31일 #
# #
# 업그레이드할 것.. #
# 1. 홈페이지 초기파일 (index.html) 사용자별 복사기능 #
#########################################################
# from V0.1 to V0.3 upgrade
# - DNS zone파일 자동생성기능
# - accesswatch 환경파일 자동생성기능
# from V0.30 to V0.31 upgrade (2000.10.22)
# - User Counter datafile 자동생성기능
# from V0.31 to V0.32 upgrade (2000.10.31)
# - /usr/local/aw/cfg/에 생성되는 사용자환경설정파일 버거수정
# from V0.32 to V0.4 upgrade (2000.11.1)
# - /etc/mail/virtusertable에 가상메일등록
# - /etc/mail/relay-domains에 relay허용설정
# from V0.4 to V0.7 upgrade (2000.11.1)
# - 게시판자동생성기능 입력(niceboard)
# from V0.7 to V0.9 upgrade (2000.11.1)
# - 방명록 자동생성기능 입력(nicebook)
# from V0.9 to V1.0 upgrade (2000.11.2)
# - 웹로그접속제한기능 (관리자기능)
#######################################################
# 변수선언
export hostip_address="211.174.58.43"
export name_server="ns.superuser.co.kr"
#임시파일 삭제
rm -f /tmp/httpd.conf_tempfile
rm -f /tmp/named.conf_tempfile
rm -f /tmp/zone_tempfile
rm -f /tmp/logfile_tempfile
rm -f /tmp/aw.cfg_tempfile
#임시파일 생성
touch /tmp/httpd.conf_tempfile
touch /tmp/named.conf_tempfile
touch /tmp/zone_tempfile
touch /tmp/logfile_tempfile
touch /tmp/aw.cfg_tempfile
#사용자생성및 패스워드 설정
/usr/sbin/useradd -m -s /bin/bash -d /home/$1 -g webhost $1
echo " Please input mysql Administrator's passwd"
passwd $1
#용량설정
edquota -u $1
#홈페이지디렉토리생성및 설정
chmod 701 /home/$1
# 홈디렉토리(/home/user)를 701로 설정하는 것이 좋다.
# 다른 일반사용자들은 cd 명령어로 들어올 수 없으며
# Apache(httpd)로 홈페이지는 보여줄수 있다.
# 디렉토리에서 rwx 의 x는 cd 가능을 의미하며,
# r은 들어와서 ls가능을 의미한다.
mkdir /home/$1/www
chmod 705 /home/$1/www
chown $1:webhost /home/$1/www
mkdir /home/$1/www/weblog
chmod 705 /home/$1/www/weblog
chown $1:webhost /home/$1/www/weblog
#고객의 접속통계를고객의 관리자만이 볼수 있도록 접근제한을 설정한다.
touch /home/$1/www/weblog/.htaccess
echo "AuthName \"$2 Administrator\"" >> /home/$1/www/weblog/.htaccess
echo "AuthType Basic" >> /home/$1/www/weblog/.htaccess
echo "AuthUserFile /home/$1/www/weblog/.htpasswd" >> /home/$1/www/weblog/.htaccess
echo "AuthGroupFile /dev/null" >> /home/$1/www/weblog/.htaccess
echo "" >> /home/$1/www/weblog/.htaccess
echo "require valid-user" >> /home/$1/www/weblog/.htaccess
echo " " >> /home/$1/www/weblog/.htaccess
echo " Please input Administrator's passwd"
htpasswd -c /home/$1/www/weblog/.htpasswd $1
cp /sbin/index.html /home/$1/www/index.html
chmod 755 /home/$1/www/index.html
chown $1:webhost /home/$1/www/index.html
mkdir /home/$1/www/cgi-bin
chmod 755 /home/$1/www/cgi-bin
chown $1:webhost /home/$1/www/cgi-bin
mkdir /home/$1/www_log
chmod 705 /home/$1/www_log
chown $1:webhost /home/$1/www_log
#가상호스트설정
#vi /usr/local/apache/conf/httpd.conf
echo "" >> /tmp/httpd.conf_tempfile
echo " ServerAdmin $1@$2" >> /tmp/httpd.conf_tempfile
echo " DocumentRoot /home/$1/www" >> /tmp/httpd.conf_tempfile
echo " ServerName www.$2" >> /tmp/httpd.conf_tempfile
echo " ErrorLog /home/$1/www_log/error_log" >> /tmp/httpd.conf_tempfile
echo " CustomLog /home/$1/www_log/access_log common" >> /tmp/httpd.conf_tempfile
echo " " >> /tmp/httpd.conf_tempfile
cat /tmp/httpd.conf_tempfile >> /usr/local/apache/conf/httpd.conf
#도메인설정
#vi /etc/named.conf
echo "zone \"$2\" {" >> /tmp/named.conf_tempfile
echo " type master;" >> /tmp/named.conf_tempfile
echo " file \"$2.zone\";" >> /tmp/named.conf_tempfile
echo "};" >> /tmp/named.conf_tempfile
cat /tmp/named.conf_tempfile >> /etc/named.conf
#cp /var/named/default.zone /var/named/$2.zone
#vi /var/named/$2.zone
#/var/named/domain.zone파일 생성
#echo "@ IN SOA www.$2. $1.$2. (" >> /tmp/zone_tempfile
#SOA 바로위의 도메인을 ns.superuser.co.kr로 수정함.
echo "@ IN SOA ns.superuser.co.kr. $1.$2. (" >> /tmp/zone_tempfile
echo " 20000402 ; Serial" >> /tmp/zone_tempfile
echo " 21600 ; Refresh(6h)" >> /tmp/zone_tempfile
echo " 900 ; Retry(15min)" >> /tmp/zone_tempfile
echo " 604800 ; Expire(7d)" >> /tmp/zone_tempfile
echo " 43200) ; Minimum(12h);" >> /tmp/zone_tempfile
echo " IN NS $name_server." >> /tmp/zone_tempfile
echo ";" >> /tmp/zone_tempfile
echo " IN A $hostip_address" >> /tmp/zone_tempfile
echo " IN MX 0 $2." >> /tmp/zone_tempfile
echo "www IN A $hostip_address" >> /tmp/zone_tempfile
echo " IN MX 0 $2." >> /tmp/zone_tempfile
cp /tmp/zone_tempfile /var/named/$2.zone
#메일설정(SMTP)
#vi /etc/sendmail.cw
echo $2 >> /etc/sendmail.cw
echo $2 >> /etc/mail/relay-domains
echo "webmaster@$2 $1" >> /etc/mail/virtusertable
#로그분석설정
#vi /usr/local/aw/accesswatch-start
#accesswatch-start파일에 사용자의 로그분석 시작스크립트 입력
echo "$2로그분석중입니다." >> /tmp/logfile_tempfile
echo "/usr/local/aw/aw-parser.pl -c /usr/local/aw/cfg/$2.cfg" >> /tmp/logfile_tempfile
echo "/usr/local/aw/aw-report.pl -c /usr/local/aw/cfg/$2.cfg" >> /tmp/logfile_tempfile
cat /tmp/logfile_tempfile >> /usr/local/aw/accesswatch-start
#/usr/local/aw/cfg디렉토리에 사용자의 로그분석환경설정파일 작성
#cp /usr/local/aw/cfg/default.cfg /usr/local/aw/cfg/$2.cfg
#vi /usr/local/aw/cfg/$2.cfg
echo "###############################################################################" >> /tmp/aw.cfg_tempfile
echo "##### Accesswatch Config File Setup #####" >> /tmp/aw.cfg_tempfile
echo "###############################################################################" >> /tmp/aw.cfg_tempfile
echo "\$accessLog = \"/home/$1/www_log/access_log\";" >> /tmp/aw.cfg_tempfile
echo "\$DNSlookups = 0;" >> /tmp/aw.cfg_tempfile
echo "\$defaultPage = \"index.html\";" >> /tmp/aw.cfg_tempfile
echo "\$includeURL = \".*\";" >> /tmp/aw.cfg_tempfile
echo "\$compressdata = 1;" >> /tmp/aw.cfg_tempfile
echo "\$compresscommand = \"gzip -9fc\";" >> /tmp/aw.cfg_tempfile
echo "\$catcompresscommand = \"gunzip -c\";" >> /tmp/aw.cfg_tempfile
echo "\$compresssuffix = \"gz\";" >> /tmp/aw.cfg_tempfile
echo "\$excludeURL = \".gif\|.jpg\|.jpeg\|.xbm\";" >> /tmp/aw.cfg_tempfile
echo "\$reportBase = \"/home/$1/www/weblog\";" >> /tmp/aw.cfg_tempfile
echo "\$siteName = \"www.$2\";" >> /tmp/aw.cfg_tempfile
echo "\$siteBaseURL = \"http://www.$2\";" >> /tmp/aw.cfg_tempfile
echo "\$orgname = \"www.$2\";" >> /tmp/aw.cfg_tempfile
echo "\$orgdomain = \"$2\";" >> /tmp/aw.cfg_tempfile
echo "\$excludeHosts = \"\";" >> /tmp/aw.cfg_tempfile
echo "###############################################################################" >> /tmp/aw.cfg_tempfile
echo "##### Program Options #####" >> /tmp/aw.cfg_tempfile
echo "###############################################################################" >> /tmp/aw.cfg_tempfile
echo "\$maxPagesToList = -1;" >> /tmp/aw.cfg_tempfile
echo "\$maxDomainsToList = -1;" >> /tmp/aw.cfg_tempfile
echo "\$maxHostsToList = 15;" >> /tmp/aw.cfg_tempfile
echo "\$maxRefsToList = 10;" >> /tmp/aw.cfg_tempfile
echo "\$maxAgentsToList = 15;" >> /tmp/aw.cfg_tempfile
echo "\$customFooter = <> /tmp/aw.cfg_tempfile
echo "" >> /tmp/aw.cfg_tempfile
echo "$2" >> /tmp/aw.cfg_tempfile
echo "" >> /tmp/aw.cfg_tempfile
echo "EOM" >> /tmp/aw.cfg_tempfile
echo "1;" >> /tmp/aw.cfg_tempfile
echo "###############################################################################" >> /tmp/aw.cfg_tempfile
echo "########### End - AccessWatch Custom Configuration ############################" >> /tmp/aw.cfg_tempfile
echo "###############################################################################" >> /tmp/aw.cfg_tempfile
cp /tmp/aw.cfg_tempfile /usr/local/aw/cfg/$2.cfg
#User Counter datafile Setting (Version 0.31 upgrade)
touch /usr/local/apache/Counter/data/$1.dat
chmod 644 /usr/local/apache/Counter/data/$1.dat
chown nobody:webhost /usr/local/apache/Counter/data/$1.dat
cat /usr/local/apache/Counter/data/counter_default_digit.dat >> $1.dat
#고객의 게시판을 생성한다.
#게시판 작업1 게시판파일을 복사하고 권한및 파일수정을 한다.
cd /home/nice/www/
cp -r niceboard /home/$1/www/niceboard/
cd /home/$1/www/
chown -R $1:webhost niceboard
cd /home/$1/www/niceboard/
mv nice.gif $1.gif
mv nice_icon $1_icon
mv nice.cfg $1.cfg
vi auth.inc
vi dbconn.inc
vi $1.cfg
#게시판 작업2 mysql데이터베이스에 사용자에게 필요한 DB작업을 실행한다.
cd /usr/local/mysql/bin/
vi niceboard-create.sql
vi niceboard-create2.sql
mysql -u root -p niceboard < niceboard-create.sql
mysql -u root -p mysql < niceboard-create2.sql
#고객의 방명록을 생성한다.
#방명록작업1 방명록파일을 복사하고 권한및 파일을 수정한다.
cd /home/nice/www/
cp -r nicebook /home/$1/www/
cd /home/$1/www/
chown -R $1:webhost nicebook
mv nice.cfg $1.cfg
mv nice.gif $1.gif
mv nice_icon $1_icon
cd /home/$1/www/nicebook/
vi auth.inc
vi dbconn.inc
vi $1.cfg
#방명록작업2 mysql데이터베이스에 사용자에게 필요한 DB작업을 실행한다.
cd /usr/local/mysql/bin/
vi nicebook-create.sql
mysql -u root -p GUESTBOOK < nicebook-create.sql
#게시판 방명록 적용작업mysql reload
echo " Please input mysql Administrator's passwd"
./mysqladmin -u root -p reload
#변수 선언 해제(메모리에서 할당해제)
unset hostip_address
unset name_server
# 관련서버 restart
/etc/rc.d/init.d/named restart
/usr/local/apache/bin/apachectl restart
#메일설정 적용을위한 메일관련DB작업
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
#########################################################
#####웹호스팅사용자 셋팅스크립트: AutoMaster V 1.0
######################################################
# 1. 제작자 #
# - 이름 : 박성수 #
# - Email : master@superuser.co.kr #
# 2. 저작권 #
# ; 이 프로그램의 저작권은 위의 제작자(박성수)에게 #
# 있으며, 어떠한 경우라도 이 프로그램의 일부분 #
# 또는 전부를 제작자의 서면허락없이 사용하는 것을 #
# 금합니다. 제작자의 허락없이 이 프로그램을 사용할 #
# 시에는 허락을 득하지아니한채 사용한 자에게 #
# 법적인 책임이 있음을 알려드립니다. #
# #
# Date : 2000년 8월 31일 #
# #
# 업그레이드할 것.. #
# 1. 홈페이지 초기파일 (index.html) 사용자별 복사기능 #
#########################################################
# from V0.1 to V0.3 upgrade
# - DNS zone파일 자동생성기능
# - accesswatch 환경파일 자동생성기능
# from V0.30 to V0.31 upgrade (2000.10.22)
# - User Counter datafile 자동생성기능
# from V0.31 to V0.32 upgrade (2000.10.31)
# - /usr/local/aw/cfg/에 생성되는 사용자환경설정파일 버거수정
# from V0.32 to V0.4 upgrade (2000.11.1)
# - /etc/mail/virtusertable에 가상메일등록
# - /etc/mail/relay-domains에 relay허용설정
# from V0.4 to V0.7 upgrade (2000.11.1)
# - 게시판자동생성기능 입력(niceboard)
# from V0.7 to V0.9 upgrade (2000.11.1)
# - 방명록 자동생성기능 입력(nicebook)
# from V0.9 to V1.0 upgrade (2000.11.2)
# - 웹로그접속제한기능 (관리자기능)
#######################################################
# 변수선언
export hostip_address="211.174.58.43"
export name_server="ns.superuser.co.kr"
#임시파일 삭제
rm -f /tmp/httpd.conf_tempfile
rm -f /tmp/named.conf_tempfile
rm -f /tmp/zone_tempfile
rm -f /tmp/logfile_tempfile
rm -f /tmp/aw.cfg_tempfile
#임시파일 생성
touch /tmp/httpd.conf_tempfile
touch /tmp/named.conf_tempfile
touch /tmp/zone_tempfile
touch /tmp/logfile_tempfile
touch /tmp/aw.cfg_tempfile
#사용자생성및 패스워드 설정
/usr/sbin/useradd -m -s /bin/bash -d /home/$1 -g webhost $1
echo " Please input mysql Administrator's passwd"
passwd $1
#용량설정
edquota -u $1
#홈페이지디렉토리생성및 설정
chmod 701 /home/$1
# 홈디렉토리(/home/user)를 701로 설정하는 것이 좋다.
# 다른 일반사용자들은 cd 명령어로 들어올 수 없으며
# Apache(httpd)로 홈페이지는 보여줄수 있다.
# 디렉토리에서 rwx 의 x는 cd 가능을 의미하며,
# r은 들어와서 ls가능을 의미한다.
mkdir /home/$1/www
chmod 705 /home/$1/www
chown $1:webhost /home/$1/www
mkdir /home/$1/www/weblog
chmod 705 /home/$1/www/weblog
chown $1:webhost /home/$1/www/weblog
#고객의 접속통계를고객의 관리자만이 볼수 있도록 접근제한을 설정한다.
touch /home/$1/www/weblog/.htaccess
echo "AuthName \"$2 Administrator\"" >> /home/$1/www/weblog/.htaccess
echo "AuthType Basic" >> /home/$1/www/weblog/.htaccess
echo "AuthUserFile /home/$1/www/weblog/.htpasswd" >> /home/$1/www/weblog/.htaccess
echo "AuthGroupFile /dev/null" >> /home/$1/www/weblog/.htaccess
echo "
echo "require valid-user" >> /home/$1/www/weblog/.htaccess
echo "
echo " Please input Administrator's passwd"
htpasswd -c /home/$1/www/weblog/.htpasswd $1
cp /sbin/index.html /home/$1/www/index.html
chmod 755 /home/$1/www/index.html
chown $1:webhost /home/$1/www/index.html
mkdir /home/$1/www/cgi-bin
chmod 755 /home/$1/www/cgi-bin
chown $1:webhost /home/$1/www/cgi-bin
mkdir /home/$1/www_log
chmod 705 /home/$1/www_log
chown $1:webhost /home/$1/www_log
#가상호스트설정
#vi /usr/local/apache/conf/httpd.conf
echo "
echo " ServerAdmin $1@$2" >> /tmp/httpd.conf_tempfile
echo " DocumentRoot /home/$1/www" >> /tmp/httpd.conf_tempfile
echo " ServerName www.$2" >> /tmp/httpd.conf_tempfile
echo " ErrorLog /home/$1/www_log/error_log" >> /tmp/httpd.conf_tempfile
echo " CustomLog /home/$1/www_log/access_log common" >> /tmp/httpd.conf_tempfile
echo "
cat /tmp/httpd.conf_tempfile >> /usr/local/apache/conf/httpd.conf
#도메인설정
#vi /etc/named.conf
echo "zone \"$2\" {" >> /tmp/named.conf_tempfile
echo " type master;" >> /tmp/named.conf_tempfile
echo " file \"$2.zone\";" >> /tmp/named.conf_tempfile
echo "};" >> /tmp/named.conf_tempfile
cat /tmp/named.conf_tempfile >> /etc/named.conf
#cp /var/named/default.zone /var/named/$2.zone
#vi /var/named/$2.zone
#/var/named/domain.zone파일 생성
#echo "@ IN SOA www.$2. $1.$2. (" >> /tmp/zone_tempfile
#SOA 바로위의 도메인을 ns.superuser.co.kr로 수정함.
echo "@ IN SOA ns.superuser.co.kr. $1.$2. (" >> /tmp/zone_tempfile
echo " 20000402 ; Serial" >> /tmp/zone_tempfile
echo " 21600 ; Refresh(6h)" >> /tmp/zone_tempfile
echo " 900 ; Retry(15min)" >> /tmp/zone_tempfile
echo " 604800 ; Expire(7d)" >> /tmp/zone_tempfile
echo " 43200) ; Minimum(12h);" >> /tmp/zone_tempfile
echo " IN NS $name_server." >> /tmp/zone_tempfile
echo ";" >> /tmp/zone_tempfile
echo " IN A $hostip_address" >> /tmp/zone_tempfile
echo " IN MX 0 $2." >> /tmp/zone_tempfile
echo "www IN A $hostip_address" >> /tmp/zone_tempfile
echo " IN MX 0 $2." >> /tmp/zone_tempfile
cp /tmp/zone_tempfile /var/named/$2.zone
#메일설정(SMTP)
#vi /etc/sendmail.cw
echo $2 >> /etc/sendmail.cw
echo $2 >> /etc/mail/relay-domains
echo "webmaster@$2 $1" >> /etc/mail/virtusertable
#로그분석설정
#vi /usr/local/aw/accesswatch-start
#accesswatch-start파일에 사용자의 로그분석 시작스크립트 입력
echo "$2로그분석중입니다." >> /tmp/logfile_tempfile
echo "/usr/local/aw/aw-parser.pl -c /usr/local/aw/cfg/$2.cfg" >> /tmp/logfile_tempfile
echo "/usr/local/aw/aw-report.pl -c /usr/local/aw/cfg/$2.cfg" >> /tmp/logfile_tempfile
cat /tmp/logfile_tempfile >> /usr/local/aw/accesswatch-start
#/usr/local/aw/cfg디렉토리에 사용자의 로그분석환경설정파일 작성
#cp /usr/local/aw/cfg/default.cfg /usr/local/aw/cfg/$2.cfg
#vi /usr/local/aw/cfg/$2.cfg
echo "###############################################################################" >> /tmp/aw.cfg_tempfile
echo "##### Accesswatch Config File Setup #####" >> /tmp/aw.cfg_tempfile
echo "###############################################################################" >> /tmp/aw.cfg_tempfile
echo "\$accessLog = \"/home/$1/www_log/access_log\";" >> /tmp/aw.cfg_tempfile
echo "\$DNSlookups = 0;" >> /tmp/aw.cfg_tempfile
echo "\$defaultPage = \"index.html\";" >> /tmp/aw.cfg_tempfile
echo "\$includeURL = \".*\";" >> /tmp/aw.cfg_tempfile
echo "\$compressdata = 1;" >> /tmp/aw.cfg_tempfile
echo "\$compresscommand = \"gzip -9fc\";" >> /tmp/aw.cfg_tempfile
echo "\$catcompresscommand = \"gunzip -c\";" >> /tmp/aw.cfg_tempfile
echo "\$compresssuffix = \"gz\";" >> /tmp/aw.cfg_tempfile
echo "\$excludeURL = \".gif\|.jpg\|.jpeg\|.xbm\";" >> /tmp/aw.cfg_tempfile
echo "\$reportBase = \"/home/$1/www/weblog\";" >> /tmp/aw.cfg_tempfile
echo "\$siteName = \"www.$2\";" >> /tmp/aw.cfg_tempfile
echo "\$siteBaseURL = \"http://www.$2\";" >> /tmp/aw.cfg_tempfile
echo "\$orgname = \"www.$2\";" >> /tmp/aw.cfg_tempfile
echo "\$orgdomain = \"$2\";" >> /tmp/aw.cfg_tempfile
echo "\$excludeHosts = \"\";" >> /tmp/aw.cfg_tempfile
echo "###############################################################################" >> /tmp/aw.cfg_tempfile
echo "##### Program Options #####" >> /tmp/aw.cfg_tempfile
echo "###############################################################################" >> /tmp/aw.cfg_tempfile
echo "\$maxPagesToList = -1;" >> /tmp/aw.cfg_tempfile
echo "\$maxDomainsToList = -1;" >> /tmp/aw.cfg_tempfile
echo "\$maxHostsToList = 15;" >> /tmp/aw.cfg_tempfile
echo "\$maxRefsToList = 10;" >> /tmp/aw.cfg_tempfile
echo "\$maxAgentsToList = 15;" >> /tmp/aw.cfg_tempfile
echo "\$customFooter = <
echo "" >> /tmp/aw.cfg_tempfile
echo "$2" >> /tmp/aw.cfg_tempfile
echo "" >> /tmp/aw.cfg_tempfile
echo "EOM" >> /tmp/aw.cfg_tempfile
echo "1;" >> /tmp/aw.cfg_tempfile
echo "###############################################################################" >> /tmp/aw.cfg_tempfile
echo "########### End - AccessWatch Custom Configuration ############################" >> /tmp/aw.cfg_tempfile
echo "###############################################################################" >> /tmp/aw.cfg_tempfile
cp /tmp/aw.cfg_tempfile /usr/local/aw/cfg/$2.cfg
#User Counter datafile Setting (Version 0.31 upgrade)
touch /usr/local/apache/Counter/data/$1.dat
chmod 644 /usr/local/apache/Counter/data/$1.dat
chown nobody:webhost /usr/local/apache/Counter/data/$1.dat
cat /usr/local/apache/Counter/data/counter_default_digit.dat >> $1.dat
#고객의 게시판을 생성한다.
#게시판 작업1 게시판파일을 복사하고 권한및 파일수정을 한다.
cd /home/nice/www/
cp -r niceboard /home/$1/www/niceboard/
cd /home/$1/www/
chown -R $1:webhost niceboard
cd /home/$1/www/niceboard/
mv nice.gif $1.gif
mv nice_icon $1_icon
mv nice.cfg $1.cfg
vi auth.inc
vi dbconn.inc
vi $1.cfg
#게시판 작업2 mysql데이터베이스에 사용자에게 필요한 DB작업을 실행한다.
cd /usr/local/mysql/bin/
vi niceboard-create.sql
vi niceboard-create2.sql
mysql -u root -p niceboard < niceboard-create.sql
mysql -u root -p mysql < niceboard-create2.sql
#고객의 방명록을 생성한다.
#방명록작업1 방명록파일을 복사하고 권한및 파일을 수정한다.
cd /home/nice/www/
cp -r nicebook /home/$1/www/
cd /home/$1/www/
chown -R $1:webhost nicebook
mv nice.cfg $1.cfg
mv nice.gif $1.gif
mv nice_icon $1_icon
cd /home/$1/www/nicebook/
vi auth.inc
vi dbconn.inc
vi $1.cfg
#방명록작업2 mysql데이터베이스에 사용자에게 필요한 DB작업을 실행한다.
cd /usr/local/mysql/bin/
vi nicebook-create.sql
mysql -u root -p GUESTBOOK < nicebook-create.sql
#게시판 방명록 적용작업mysql reload
echo " Please input mysql Administrator's passwd"
./mysqladmin -u root -p reload
#변수 선언 해제(메모리에서 할당해제)
unset hostip_address
unset name_server
# 관련서버 restart
/etc/rc.d/init.d/named restart
/usr/local/apache/bin/apachectl restart
#메일설정 적용을위한 메일관련DB작업
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
2006년 1월 8일 일요일
특수문자를 한눈에...
[출처] 미니위니
ㄱ ! ' , .  ̄ : ; ‥ … ¨ 〃 ― ∥ \ ∼ ´ ~ ˇ ˘ ˝ ˚ ˙ ¸ ˛ ¡ ¿ ː
ㄴ " ( ) [ ] { } ‘ ’ “ ” 〔 〕 〈 〉 《 》 「 」 『 』 【 】
ㄷ + - < = > ± × ÷ ≠ ≤ ≥ ∞ ∴ ♂ ♀ ∠ ⊥ ⌒ ∂ ∇ ≡ ≒ ≪ ≫ √ ∽ ∝ ∵ ∫ ∬ ∈ ∋ ⊆ ⊇⊂ ⊃ ∪ ∩ ∧ ∨ ¬ ⇒ ⇔ ∀ ∃ ∮ ∑ ∏
ㄹ $ % ₩ F ′ ″ ℃ Å ¢ £ ¥ ¤ ℉ ‰ ?? ㎕ ㎖ ㎗ ℓ ㎘ ㏄ ㎣ ㎤ ㎥ ㎦ ㎙ ㎚ ㎛ ㎜ ㎝ ㎞ ㎟ ㎠ ㎡ ㎙ ㏊ ㎍ ㎎ ㎏ ㏏ ㎈ ㎉ ㏈ ㎧ ㎨ ㎰ ㎱ ㎲ ㎳ ㎴ ㎵ ㎶ ㎷ ㎸ ㎹ ㎀ ㎁ ㎂ ㎃ ㎄ ㎺ ㎻ ㎼ ㎽ ㎾ ㎿ ㎐ ㎑ ㎒ ㎓ ㎔ Ω ㏀ ㏁ ㎊ ㎋ ㎌ ㏖ ㏅ ㎭ ㎮ ㎯ ㏛ ㎩ ㎪ ㎫ ㎬ ㏝ ㏐ ㏓ ㏃ ㏉ ㏜ ㏆
ㅁ # & * @ § ※ ☆ ★ ○ ● ◎ ◇ ◆ □ ■ △ ▲ ▽ ▼ → ← ↑ ↓ ↔ 〓 ◁ ◀ ▷ ▶ ♤ ♠ ♡ ♥ ♧ ♣ ⊙ ◈ ▣ ◐ ◑ ▒ ▤ ▥ ▨ ▧ ▦ ▩ ♨ ☏ ☎ ☜ ☞ ¶ † ‡ ↕ ↗ ↙ ↖ ↘ ♭ ♩ ♪ ♬ ㉿ ㈜ № ㏇ ™ ㏂ ㏘ ℡ ?? ª º
ㅂ ─ │ ┌ ┐ ┘ └ ├ ┬ ┤ ┴ ┼ ━ ┃ ┏ ┓ ┛ ┗ ┣ ┳ ┫ ┻ ╋ ┠ ┯ ┨ ┷ ┿ ┝ ┰ ┥ ┸ ╂ ┒ ┑ ┚ ┙ ┖ ┕ ┎ ┍ ┞ ┟ ┡ ┢ ┦ ┧ ┩ ┪ ┭ ┮ ┱ ┲ ┵ ┶ ┹ ┺ ┽ ┾ ╀ ╁ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊
ㅅ ㉠ ㉡ ㉢ ㉣ ㉭ ㉥ ㉦ ㉧ ㉨ ㉩ ㉪ ㉫ ㉬ ㉭ ㉮ ㉯ ㉰ ㉱ ㉲ ㉳ ㉴ ㉵ ㉶ ㉷ ㉸ ㉹ ㉺ ㉻ ㈀ ㈁ ㈂
㈃ ㈄ ㈅ ㈆ ㈇ ㈈ ㈉ ㈊ ㈋ ㈌ ㈍ ㈎ ㈏ ㈐ ㈑ ㈒ ㈓ ㈔ ㈕ ㈖ ㈗ ㈘ ㈙ ㈚ ㈛
ㅇ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓖ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂
ㅈ 0 1 2 3 4 5 6 7 8 9 ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ
ㅊ ½ ⅓ ⅔ ¼ ¾ ⅛ ⅜ ⅝ ⅞ ¹ ² ³ ⁴ ⁿ ₁ ₂ ₃ ₄
ㅋ ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄸ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅃ ㅄ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ
ㅌ ㅥ ㅦ ㅧ ㅨ ㅩ ㅪ ㅫ ㅬ ㅭ ㅮ ㅯ ㅰ ㅱ ㅲ ㅳ ㅴ ㅵ ㅶ ㅷ ㅸ ㅹ ㅺ ㅻ ㅼ ㅽ ㅾ ㅿ ㆀ ㆁ ㆂ ㆃ ㆄ ㆅ ㆆ ㆇ ㆈ ㆉ ㆊ ㆋ ㆌ ㆍ ㆎ
ㅍ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z
ㅎ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω
ㄲ Æ Ð Ħ IJ Ŀ Ł Ø Œ Þ Ŧ Ŋ æ đ ð Ł Ø ij ĸ ŀ ł ø œ ß þ ŧ ŋ ʼn
ㄸ ぁ あ ぃ い ぅ う ぇ え ぉ お か が き ぎ う ぐ け げ こ ご さ ざ し じ す ず せ ぜ そ ぞ た だ ち ぢ っ つ づ て ぞ た だ ち ぢ っ つ づ て で と ど な に ぬ ね の は ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ ぽ ま み む め も ゃ や ゅ ゆ ょ よ ら り る れ ろ ゎ わ ゐ ゑ を ん
ㅃ ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ ダ チ ヂ ッ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ ム メ モ ャ ヤ ュ ユ ョ ヨ ラ リ ル レ ロ ヮ ワ ヰ ヱ ヲ ン ヴ ヵ ヶ
ㅆ А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я а б в г д е ё ж з и й к л м н о п р с т ф х ц ч ш щ ъ ы ы ь э ю я
ㄴ " ( ) [ ] { } ‘ ’ “ ” 〔 〕 〈 〉 《 》 「 」 『 』 【 】
ㄷ + - < = > ± × ÷ ≠ ≤ ≥ ∞ ∴ ♂ ♀ ∠ ⊥ ⌒ ∂ ∇ ≡ ≒ ≪ ≫ √ ∽ ∝ ∵ ∫ ∬ ∈ ∋ ⊆ ⊇⊂ ⊃ ∪ ∩ ∧ ∨ ¬ ⇒ ⇔ ∀ ∃ ∮ ∑ ∏
ㄹ $ % ₩ F ′ ″ ℃ Å ¢ £ ¥ ¤ ℉ ‰ ?? ㎕ ㎖ ㎗ ℓ ㎘ ㏄ ㎣ ㎤ ㎥ ㎦ ㎙ ㎚ ㎛ ㎜ ㎝ ㎞ ㎟ ㎠ ㎡ ㎙ ㏊ ㎍ ㎎ ㎏ ㏏ ㎈ ㎉ ㏈ ㎧ ㎨ ㎰ ㎱ ㎲ ㎳ ㎴ ㎵ ㎶ ㎷ ㎸ ㎹ ㎀ ㎁ ㎂ ㎃ ㎄ ㎺ ㎻ ㎼ ㎽ ㎾ ㎿ ㎐ ㎑ ㎒ ㎓ ㎔ Ω ㏀ ㏁ ㎊ ㎋ ㎌ ㏖ ㏅ ㎭ ㎮ ㎯ ㏛ ㎩ ㎪ ㎫ ㎬ ㏝ ㏐ ㏓ ㏃ ㏉ ㏜ ㏆
ㅁ # & * @ § ※ ☆ ★ ○ ● ◎ ◇ ◆ □ ■ △ ▲ ▽ ▼ → ← ↑ ↓ ↔ 〓 ◁ ◀ ▷ ▶ ♤ ♠ ♡ ♥ ♧ ♣ ⊙ ◈ ▣ ◐ ◑ ▒ ▤ ▥ ▨ ▧ ▦ ▩ ♨ ☏ ☎ ☜ ☞ ¶ † ‡ ↕ ↗ ↙ ↖ ↘ ♭ ♩ ♪ ♬ ㉿ ㈜ № ㏇ ™ ㏂ ㏘ ℡ ?? ª º
ㅂ ─ │ ┌ ┐ ┘ └ ├ ┬ ┤ ┴ ┼ ━ ┃ ┏ ┓ ┛ ┗ ┣ ┳ ┫ ┻ ╋ ┠ ┯ ┨ ┷ ┿ ┝ ┰ ┥ ┸ ╂ ┒ ┑ ┚ ┙ ┖ ┕ ┎ ┍ ┞ ┟ ┡ ┢ ┦ ┧ ┩ ┪ ┭ ┮ ┱ ┲ ┵ ┶ ┹ ┺ ┽ ┾ ╀ ╁ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊
ㅅ ㉠ ㉡ ㉢ ㉣ ㉭ ㉥ ㉦ ㉧ ㉨ ㉩ ㉪ ㉫ ㉬ ㉭ ㉮ ㉯ ㉰ ㉱ ㉲ ㉳ ㉴ ㉵ ㉶ ㉷ ㉸ ㉹ ㉺ ㉻ ㈀ ㈁ ㈂
㈃ ㈄ ㈅ ㈆ ㈇ ㈈ ㈉ ㈊ ㈋ ㈌ ㈍ ㈎ ㈏ ㈐ ㈑ ㈒ ㈓ ㈔ ㈕ ㈖ ㈗ ㈘ ㈙ ㈚ ㈛
ㅇ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓖ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂
ㅈ 0 1 2 3 4 5 6 7 8 9 ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ
ㅊ ½ ⅓ ⅔ ¼ ¾ ⅛ ⅜ ⅝ ⅞ ¹ ² ³ ⁴ ⁿ ₁ ₂ ₃ ₄
ㅋ ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄸ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅃ ㅄ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ
ㅌ ㅥ ㅦ ㅧ ㅨ ㅩ ㅪ ㅫ ㅬ ㅭ ㅮ ㅯ ㅰ ㅱ ㅲ ㅳ ㅴ ㅵ ㅶ ㅷ ㅸ ㅹ ㅺ ㅻ ㅼ ㅽ ㅾ ㅿ ㆀ ㆁ ㆂ ㆃ ㆄ ㆅ ㆆ ㆇ ㆈ ㆉ ㆊ ㆋ ㆌ ㆍ ㆎ
ㅍ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z
ㅎ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω
ㄲ Æ Ð Ħ IJ Ŀ Ł Ø Œ Þ Ŧ Ŋ æ đ ð Ł Ø ij ĸ ŀ ł ø œ ß þ ŧ ŋ ʼn
ㄸ ぁ あ ぃ い ぅ う ぇ え ぉ お か が き ぎ う ぐ け げ こ ご さ ざ し じ す ず せ ぜ そ ぞ た だ ち ぢ っ つ づ て ぞ た だ ち ぢ っ つ づ て で と ど な に ぬ ね の は ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ ぽ ま み む め も ゃ や ゅ ゆ ょ よ ら り る れ ろ ゎ わ ゐ ゑ を ん
ㅃ ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ ダ チ ヂ ッ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ ム メ モ ャ ヤ ュ ユ ョ ヨ ラ リ ル レ ロ ヮ ワ ヰ ヱ ヲ ン ヴ ヵ ヶ
ㅆ А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я а б в г д е ё ж з и й к л м н о п р с т ф х ц ч ш щ ъ ы ы ь э ю я
2006년 1월 6일 금요일
'2005 파리나무십자가 수원공연 [12월 23일]-3
사진을 정리하다 누락되서 올려둔다.
내용인 즉, 40,000원짜리티켓이 당일 60,000원짜리로 뻥튀기 된 것.
이유는 잘 모르겠지만, 암튼...S석으로 변경되서 맨 앞에서 보게되었다.
카메라를 가져가 사진을 찍으려고 성애한테서 카메라도 빌렸다가 '카메라를 들고 오지 마라'는 글을 인터넷에서 읽고, 그냥 갔었는데 웬걸..사람들 모두~ 사진찍고 후레시 터뜨리고 ㅡㅡ..
대략..바보되었다는..
아쉬운 맘 뒤로한채 폰카로 한장 찰칵~!찍었다
표만... ㅠㅠ
ㅎㅎㅎ 나중에 좋은 기억이 되겠지?
'2005 파리나무십자가 수원공연 [12월 23일]-1
'2005 파리나무십자가 수원공연 [12월 23일]-2
2006년 1월 4일 수요일
한잔의 여유~
TakeOut커피..샌드프레소
이런게 여윤데...ㅎㅎ 한결 가벼워진 맘으로 사진을 찍었다.
DeadLine전에 작업을 모두 마무리!
고마바~~
2006년 1월 1일 일요일
Linux 에서 umask란?
umask는 주어진 콘테스트에서 새로 만들어진 파일과 디렉토리 퍼미션에 적용될 마스크를 지정해주는 지시자입니다. 새로운 디렉토리와 파일들이 쓰기 권한을 가진 그룹이나 전체가 되는 것을 막기 위해 Umask를 합리적인 표준값인 002, 007, 020, 070, 022등으로 설정합니다. 002 umask가 의미하는것은 디렉토리는 퍼미션 775 파일은 퍼미션 664를 갖도록 하는겁니다......
Umask | 디렉토리허가권 | 파일 허가권 |
002 | 775 | 664 |
007 | 770 | 660 |
020 | 757 | 646 |
070 | 705 | 604 |
022 | 755 | 644 |
vsftp 가이드
vsftp 가이드
Solaris&Linux | 05/11/01 06:31
FTP서버 vsftpd 설치와 운영 (한글로그 패치 포함)
글쓴이 : 좋은진호 (2003년 10월 09일 오전 02:54) 읽은수: 12,740 [ 네트워크 # 트랙백(1) ]
작성자 : 좋은진호(truefeel, http://coffeenix.net/)
작성일 : 2003.10.01(수)
수정일 : 2004.01.08(목), chroot_list_enable 글 추가
이 글은 7월에 썼던 'vsftpd에서 한글파일로그와 lastlog 로긴확인하기'를 기초로 작성하였다.
1. vsftpd FTP 서버에 대해
vsftpd는 UNIX 시스템에서 사용할 수 있는 free FTP 서버(라이센스는 GPL)이다.
vsftpd가 내세우고 있는 것은 보안, 성능, 안정성이다. 지금까지 vsftpd의 자체 보안 문제가 있어
보안권고가 나온 적은 없다.(Redhat의 rpm 패키지중에 tcp_wrappers 지원없이 만들어져서 업데이트
rpm은 나온 적 있음)
* 지원 및 테스트된 OS
- Linux (Redhat, SuSE, Debian)
- Solaris (버전에 따라 IPv6나 inet_aton함수때문에 설치가 잘 안될 수 있음)
- FreeBSD, OpenBSD
- HP-UX
- IRIX
* 주요 기능
- 가상 IP별 별도의 환경 설정 기능 (설정파일의 listen_address= 이용)
- 가상 사용자 설정
- 전송 대역폭 지정
- PAM 지원 (버전 1.2.0부터는 PAM을 통한 wtmp에 로긴 로그를 남김)
- xferlog 표준 로그 파일보다 상세한 자체 로그 파일 형식 지원
- Standalone 방식과 inetd(xinetd)를 통한 운영 모두 지원
- IP별 다른 환경 파일 지정 기능 (tcp_wrappers와 함께 사용할 때)
- ...
2. vsftpd 설치
※ 설치는 Redhat 기준. 솔라리스의 PAM에 대한 것은 README.solaris 파일 참조한다.
http://vsftpd.beasts.org/ 에서 최신버전(현재 1.2.0)의 소스를 받아온다.
-------------------------------------------------------------
# tar xvfz vsftpd-1.2.0.tar.gz
# cd vsftpd-1.2.0
-------------------------------------------------------------
한글로 된 파일명을 전송할 때 로그에 파일명이 ???? 로 남지 않도록
logging.c 파일을 연 후 140번째 줄의
str_replace_unprintable(p_str, '?');
를 다음처럼 주석 처리한다.
/* str_replace_unprintable(p_str, '?'); */
또한 tcp_wrappers를 통한 접속제어를 사용하려면 builddefs.h 에서
#undef VSF_BUILD_TCPWRAPPERS 를
#define VSF_BUILD_TCPWRAPPERS 로 바꾼다.
-------------------------------------------------------------
# make
# make install (vsftpd 데몬, man page, xinetd 용 설정 파일 설치)
# cp vsftpd.conf /etc (환경설정 파일 복사)
# chmod 600 /etc/vsftpd.conf
# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd (PAM 설정 파일 복사)
-------------------------------------------------------------
/etc/pam.d/vsftpd 첫번째 줄에 다음과 같이 있다.
pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
즉, /etc/ftpusers 파일에 존재하는 ID는 접속할 수 없게된다.(sense=deny)
-------------------------------------------------------------
# FTP 접속을 허용하지 않을 ID를 등록한다.
# /etc/passwd를 참조해서 설치할 서버의 환경에 맞게 등록
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
smmsp
xfs
gdm
mysql
-------------------------------------------------------------
3. vsftpd.conf 의 주요 설정
-------------------------------------------------------------
# anonymous 사용자의 접속 허용 여부 (default = YES)
# 공개된 형태의 FTP 서버로 운영할 것이 아니라면 NO로 한다.
anonymous_enable=NO
# 로컬 계정 사용자의 접속 허용 여부 (default = NO)
local_enable=YES
# write 명령어 허용 여부 (defualt = NO)
write_enable=YES
# 로컬 계정 사용자용 umask (default = 077)
local_umask=022
# anonymous 사용자가 파일을 업로드 할 수 있는지 여부 (default = NO)
# anon_upload_enable=YES
# anonymous 사용자의 디렉토리 생성 허용 여부 (default = NO)
# anon_mkdir_write_enable=YES
# 파일 전송 로그를 남길 것인지 여부 (default = YES)
xferlog_enable=YES
# xferlog 표준 포맷으로 로그를 남길지 여부 (기본 설정파일은 YES)
# 아래에서 NO로 설정했을 때를 설명함
xferlog_std_format=YES
# 파일 전송 로그 파일명
xferlog_file=/var/log/vsftpd.log
# FTP 서버 접속할 때 로긴 메시지 (default = vsFTPd 버전번호)
# 한글 사용 가능
# ftpd_banner=Welcome to blah FTP service.
# 사용자의 홈디렉토리를 벗어나지 못하도록 제한하기 위한 설정 (default=NO)
# 제한이 필요할 경우 YES로 바꾼 후 제한할 사용자 ID를 chroot_list_file= 에 설정한 파일에
# 지정한다.
# chroot_local_user= 설정과 관련이 있으니 '3. 문제 해결'을 꼭 읽어보라.
#
# chroot_list_enable=YES
# chroot_list_file=/etc/vsftpd.chroot_list
# -------------------------------------------------------------------
# 기본 설정 파일에는 없는 설정값으로 필요한 설정만 추가한다.
# ※ 중요한 설정은 굵은 글씨로 표시
# -------------------------------------------------------------------
# PAM 파일명을 지정 (설치할 때 /etc/pam.d/vsftpd명으로 복사함)
pam_service_name=vsftpd
# wtmp에 로그 남기기 (YES로 해야만 last 명령어로 접속 여부 확인 가능)
session_support=YES
# 사용자가 자신의 home directory를 벗어나지 못하도록 설정
chroot_local_user=YES
# 새로운 디렉토리에 들어갔을 때 뿌려줄 환경 메시지를 저장한 파일명
# message_file=.message
# xferlog 형식으로 log를 남기려면 (위에서 이미 YES로 했음)
# xferlog_std_format=NO
#
# - xferlog 표준 포맷은 로긴, 디렉토리 생성등의 로그를 남기지 않음
# 그러나 vsftpd 스타일 로그는 이를 포함한 보다 상세한 로그를 남김
# - vsftpd 스타일 로그 예
#
# Sun Jul 12 01:38:32 2003 [pid 31200] CONNECT: Client "127.0.0.1"
# Sun Jul 12 01:38:34 2003 [pid 31199] [truefeel] FAIL LOGIN: Client "127.0.0.1"
# Sun Jul 12 01:38:38 2003 [pid 31199] [truefeel] OK LOGIN: Client "127.0.0.1"
# Sun Jul 12 01:38:41 2003 [pid 31201] [truefeel] OK MKDIR: Client "127.0.0.1", "/mp3"
# Sun Jul 12 01:39:06 2003 [pid 31201] [truefeel] OK UPLOAD: Client "127.0.0.1", "/델리
# 스파이스 5집 - [04]키치죠지의 검은 고양이.mp3", 6855473 bytes, 3857.39Kbyte/sec
# 전송속도 제한 (0은 제한없음, 단위는 초당 bytes)
anon_max_rate=0
local_max_rate=0
trans_chunk_size=0
# 최대 접속 설정 (단 xinetd를 통하지 않고 standalone으로 동작할 때만 사용 가능)
# standalone을 위해서는 listen=YES 추가하고 별도로 vsftpd를 띄워야 함
#
# max_clients=최대 접속자 수, max_per_ip=IP당 접속 수
# max_clients=100
# max_per_ip=3
# Standalone 으로 운영할 때 listen=YES. 포트 변경을 원할 경우 listen_port 설정
# 디폴트 포트는 21번 포트이다.
# listen=YES
# listen_port=21
-------------------------------------------------------------
필요한 설정이 끝났으면 xinetd를 재실행한다.
-------------------------------------------------------------
# /etc/rc.d/init.d/xinetd restart
-------------------------------------------------------------
4. 문제 해결
1) ftpwho 같은 명령은 있나?
또한 last를 해도 접속된 걸 확인할 수가 없는데 방법이 없나?
ftpwho 형태의 명령은 없으며 임시적으로 다음 명령어 등으로 확인할 수 있다.
# ps -ef|grep vsftpd
# fuser -v ftp/tcp
vsftpd v1.2.0이상부터 PAM을 통해 wtmp에 로그를 남기므로 last로 접속여부를 확인할 수 있다.
2) 한글 파일명이 전송될 때는 vsftpd.log 에 ???? 로 남는다. 해결책은?
vsftpd는 출력할 수 없다고 판단하는
ASCII 코드 31 이하, 128~159, 177 문자를 모두 ? 로 바꿔서 저장을 한다.
따라서 이 부분을 처리하지 않고 저장하도록 소스를 수정한 후 컴파일하면 해결된다.
3) 사용자가 홈디렉토리를 못 벗어나게 하고 싶는데?
/etc/vsftpd.conf에 다음을 추가하면, 모든 사용자는 자신의 홈디렉토리만 접근할 수 있다.
chroot_local_user=YES
또한 특정 사용자로만 제한을 하고 싶다면 다음과 같이 한다. /etc/vsftpd.chroot_list에는 제한할
사용자 ID를 한줄에 하나씩 나열하면 된다.
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
주의할 것은 chroot_local_user=YES와 chroot_list_enable=YES를 함께 사용할 경우에는
/etc/vsftpd.chroot_list에 포함된 사용자 ID만 제한없이 홈디렉토리를 벗어날 수 있다.
즉, 반대로 작용한다.
standalone으로 FTP서버가 동작중이면 재실행 필요. standalone에 대해서는 6)번에서.
4) root로 접속할 수는 없나?
가능하면 root 접속은 허용하지 않기를 바란다.
/etc/ftpusers 파일에서 root를 빼면 접속이 가능하다.
5) ID/비밀번호가 정확히 맞는데 로긴할 때 자꾸 530 Login incorrect. 라고 나온다.
/etc/ftpusers (또는 vsftpd.ftpusers)에 등록된 사용자인지 확인한다.
여기에 등록된 사용자는 로긴할 수 없다. 이럴 때 /var/log/messages에 다음과 같은 로그가 남는다.
Aug 16 22:21:52 truefeel vsftpd: PAM-listfile: Refused user xxxxxxxx for service vsftpd
6) standalone으로 운영하고 싶다.
(즉, apache나 sendmail처럼 xinetd 통하지 않고 운영을 원한다.)
/etc/xinetd.d/vsftpd (vsftpd가 아닌 다른 파일명일 수 있음) 에서 disable = yes 로 변경하여
xinetd로 서비스 하지 않도록 설정한다. xinetd 를 재실행하면 이제 xinetd를 통한 ftp 서비스는 종료된다.
레드햇의 경우 /etc/rc.d/init.d/xinetd restart
이제 vsftpd 데몬를 실행한다. (소스로 설치시 기본 경로는 /usr/local/sbin)
# /usr/local/sbin/vsftpd &
7) 다른 포트(기본 21번)를 사용하고 싶다. (예를 들어 11121번 포트를 원할 때)
* xinetd를 이용하는 경우
/etc/service 에 'ftp2 11121/tcp' 한 줄을 추가한다.
그리고 /etc/xinetd.d/vsftpd (vsftpd가 아닌 ftp와 같은 다른 파일명일 수 있음) 에서
service ftp 를 service ftp2로 바꾸고, xinetd 를 재실행한다.
* standalone으로 운영하는 경우
/etc/vsftpd.conf 에서 listen_port=11121 을 추가하고 vsftpd 서버를 재실행한다.
바뀐 포트로 운영중인지 확인은 netstat -atnp(리눅스) 또는 netstat -an(그 이외 유닉스)
8) 업로드 파일 크기를 제한하는 방법은 없나요? 이를테면 5MB이상의 파일은 업로드 못한다든지.
현재 1.2.1버전까지 vsftpd 자체에 설정하는 방법은 없습니다.
5. 참고할만한 문서
* vsftpd 1.2.0 설치 문서
ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-1.2.0/INSTALL
* vsftpd.conf man page
* vsftpd에서 한글파일로그와 lastlog 로긴확인하기 (좋은진호)
http://coffeenix.net/board_view.php?bd_code=4
* vsftpd에서 전송속도 제한 (bandwidth limit) (좋은진호)
http://coffeenix.net/board_view.php?bd_code=21
Solaris&Linux | 05/11/01 06:31
[출처]. http://blog.naver.com/jjzhyh586/20019004361
FTP서버 vsftpd 설치와 운영 (한글로그 패치 포함)
글쓴이 : 좋은진호 (2003년 10월 09일 오전 02:54) 읽은수: 12,740 [ 네트워크 # 트랙백(1) ]
작성자 : 좋은진호(truefeel, http://coffeenix.net/)
작성일 : 2003.10.01(수)
수정일 : 2004.01.08(목), chroot_list_enable 글 추가
이 글은 7월에 썼던 'vsftpd에서 한글파일로그와 lastlog 로긴확인하기'를 기초로 작성하였다.
1. vsftpd FTP 서버에 대해
vsftpd는 UNIX 시스템에서 사용할 수 있는 free FTP 서버(라이센스는 GPL)이다.
vsftpd가 내세우고 있는 것은 보안, 성능, 안정성이다. 지금까지 vsftpd의 자체 보안 문제가 있어
보안권고가 나온 적은 없다.(Redhat의 rpm 패키지중에 tcp_wrappers 지원없이 만들어져서 업데이트
rpm은 나온 적 있음)
* 지원 및 테스트된 OS
- Linux (Redhat, SuSE, Debian)
- Solaris (버전에 따라 IPv6나 inet_aton함수때문에 설치가 잘 안될 수 있음)
- FreeBSD, OpenBSD
- HP-UX
- IRIX
* 주요 기능
- 가상 IP별 별도의 환경 설정 기능 (설정파일의 listen_address= 이용)
- 가상 사용자 설정
- 전송 대역폭 지정
- PAM 지원 (버전 1.2.0부터는 PAM을 통한 wtmp에 로긴 로그를 남김)
- xferlog 표준 로그 파일보다 상세한 자체 로그 파일 형식 지원
- Standalone 방식과 inetd(xinetd)를 통한 운영 모두 지원
- IP별 다른 환경 파일 지정 기능 (tcp_wrappers와 함께 사용할 때)
- ...
2. vsftpd 설치
※ 설치는 Redhat 기준. 솔라리스의 PAM에 대한 것은 README.solaris 파일 참조한다.
http://vsftpd.beasts.org/ 에서 최신버전(현재 1.2.0)의 소스를 받아온다.
-------------------------------------------------------------
# tar xvfz vsftpd-1.2.0.tar.gz
# cd vsftpd-1.2.0
-------------------------------------------------------------
한글로 된 파일명을 전송할 때 로그에 파일명이 ???? 로 남지 않도록
logging.c 파일을 연 후 140번째 줄의
str_replace_unprintable(p_str, '?');
를 다음처럼 주석 처리한다.
/* str_replace_unprintable(p_str, '?'); */
또한 tcp_wrappers를 통한 접속제어를 사용하려면 builddefs.h 에서
#undef VSF_BUILD_TCPWRAPPERS 를
#define VSF_BUILD_TCPWRAPPERS 로 바꾼다.
-------------------------------------------------------------
# make
# make install (vsftpd 데몬, man page, xinetd 용 설정 파일 설치)
# cp vsftpd.conf /etc (환경설정 파일 복사)
# chmod 600 /etc/vsftpd.conf
# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd (PAM 설정 파일 복사)
-------------------------------------------------------------
/etc/pam.d/vsftpd 첫번째 줄에 다음과 같이 있다.
pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
즉, /etc/ftpusers 파일에 존재하는 ID는 접속할 수 없게된다.(sense=deny)
-------------------------------------------------------------
# FTP 접속을 허용하지 않을 ID를 등록한다.
# /etc/passwd를 참조해서 설치할 서버의 환경에 맞게 등록
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
smmsp
xfs
gdm
mysql
-------------------------------------------------------------
3. vsftpd.conf 의 주요 설정
-------------------------------------------------------------
# anonymous 사용자의 접속 허용 여부 (default = YES)
# 공개된 형태의 FTP 서버로 운영할 것이 아니라면 NO로 한다.
anonymous_enable=NO
# 로컬 계정 사용자의 접속 허용 여부 (default = NO)
local_enable=YES
# write 명령어 허용 여부 (defualt = NO)
write_enable=YES
# 로컬 계정 사용자용 umask (default = 077)
local_umask=022
# anonymous 사용자가 파일을 업로드 할 수 있는지 여부 (default = NO)
# anon_upload_enable=YES
# anonymous 사용자의 디렉토리 생성 허용 여부 (default = NO)
# anon_mkdir_write_enable=YES
# 파일 전송 로그를 남길 것인지 여부 (default = YES)
xferlog_enable=YES
# xferlog 표준 포맷으로 로그를 남길지 여부 (기본 설정파일은 YES)
# 아래에서 NO로 설정했을 때를 설명함
xferlog_std_format=YES
# 파일 전송 로그 파일명
xferlog_file=/var/log/vsftpd.log
# FTP 서버 접속할 때 로긴 메시지 (default = vsFTPd 버전번호)
# 한글 사용 가능
# ftpd_banner=Welcome to blah FTP service.
# 사용자의 홈디렉토리를 벗어나지 못하도록 제한하기 위한 설정 (default=NO)
# 제한이 필요할 경우 YES로 바꾼 후 제한할 사용자 ID를 chroot_list_file= 에 설정한 파일에
# 지정한다.
# chroot_local_user= 설정과 관련이 있으니 '3. 문제 해결'을 꼭 읽어보라.
#
# chroot_list_enable=YES
# chroot_list_file=/etc/vsftpd.chroot_list
# -------------------------------------------------------------------
# 기본 설정 파일에는 없는 설정값으로 필요한 설정만 추가한다.
# ※ 중요한 설정은 굵은 글씨로 표시
# -------------------------------------------------------------------
# PAM 파일명을 지정 (설치할 때 /etc/pam.d/vsftpd명으로 복사함)
pam_service_name=vsftpd
# wtmp에 로그 남기기 (YES로 해야만 last 명령어로 접속 여부 확인 가능)
session_support=YES
# 사용자가 자신의 home directory를 벗어나지 못하도록 설정
chroot_local_user=YES
# 새로운 디렉토리에 들어갔을 때 뿌려줄 환경 메시지를 저장한 파일명
# message_file=.message
# xferlog 형식으로 log를 남기려면 (위에서 이미 YES로 했음)
# xferlog_std_format=NO
#
# - xferlog 표준 포맷은 로긴, 디렉토리 생성등의 로그를 남기지 않음
# 그러나 vsftpd 스타일 로그는 이를 포함한 보다 상세한 로그를 남김
# - vsftpd 스타일 로그 예
#
# Sun Jul 12 01:38:32 2003 [pid 31200] CONNECT: Client "127.0.0.1"
# Sun Jul 12 01:38:34 2003 [pid 31199] [truefeel] FAIL LOGIN: Client "127.0.0.1"
# Sun Jul 12 01:38:38 2003 [pid 31199] [truefeel] OK LOGIN: Client "127.0.0.1"
# Sun Jul 12 01:38:41 2003 [pid 31201] [truefeel] OK MKDIR: Client "127.0.0.1", "/mp3"
# Sun Jul 12 01:39:06 2003 [pid 31201] [truefeel] OK UPLOAD: Client "127.0.0.1", "/델리
# 스파이스 5집 - [04]키치죠지의 검은 고양이.mp3", 6855473 bytes, 3857.39Kbyte/sec
# 전송속도 제한 (0은 제한없음, 단위는 초당 bytes)
anon_max_rate=0
local_max_rate=0
trans_chunk_size=0
# 최대 접속 설정 (단 xinetd를 통하지 않고 standalone으로 동작할 때만 사용 가능)
# standalone을 위해서는 listen=YES 추가하고 별도로 vsftpd를 띄워야 함
#
# max_clients=최대 접속자 수, max_per_ip=IP당 접속 수
# max_clients=100
# max_per_ip=3
# Standalone 으로 운영할 때 listen=YES. 포트 변경을 원할 경우 listen_port 설정
# 디폴트 포트는 21번 포트이다.
# listen=YES
# listen_port=21
-------------------------------------------------------------
필요한 설정이 끝났으면 xinetd를 재실행한다.
-------------------------------------------------------------
# /etc/rc.d/init.d/xinetd restart
-------------------------------------------------------------
4. 문제 해결
1) ftpwho 같은 명령은 있나?
또한 last를 해도 접속된 걸 확인할 수가 없는데 방법이 없나?
ftpwho 형태의 명령은 없으며 임시적으로 다음 명령어 등으로 확인할 수 있다.
# ps -ef|grep vsftpd
# fuser -v ftp/tcp
vsftpd v1.2.0이상부터 PAM을 통해 wtmp에 로그를 남기므로 last로 접속여부를 확인할 수 있다.
2) 한글 파일명이 전송될 때는 vsftpd.log 에 ???? 로 남는다. 해결책은?
vsftpd는 출력할 수 없다고 판단하는
ASCII 코드 31 이하, 128~159, 177 문자를 모두 ? 로 바꿔서 저장을 한다.
따라서 이 부분을 처리하지 않고 저장하도록 소스를 수정한 후 컴파일하면 해결된다.
3) 사용자가 홈디렉토리를 못 벗어나게 하고 싶는데?
/etc/vsftpd.conf에 다음을 추가하면, 모든 사용자는 자신의 홈디렉토리만 접근할 수 있다.
chroot_local_user=YES
또한 특정 사용자로만 제한을 하고 싶다면 다음과 같이 한다. /etc/vsftpd.chroot_list에는 제한할
사용자 ID를 한줄에 하나씩 나열하면 된다.
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
주의할 것은 chroot_local_user=YES와 chroot_list_enable=YES를 함께 사용할 경우에는
/etc/vsftpd.chroot_list에 포함된 사용자 ID만 제한없이 홈디렉토리를 벗어날 수 있다.
즉, 반대로 작용한다.
standalone으로 FTP서버가 동작중이면 재실행 필요. standalone에 대해서는 6)번에서.
4) root로 접속할 수는 없나?
가능하면 root 접속은 허용하지 않기를 바란다.
/etc/ftpusers 파일에서 root를 빼면 접속이 가능하다.
5) ID/비밀번호가 정확히 맞는데 로긴할 때 자꾸 530 Login incorrect. 라고 나온다.
/etc/ftpusers (또는 vsftpd.ftpusers)에 등록된 사용자인지 확인한다.
여기에 등록된 사용자는 로긴할 수 없다. 이럴 때 /var/log/messages에 다음과 같은 로그가 남는다.
Aug 16 22:21:52 truefeel vsftpd: PAM-listfile: Refused user xxxxxxxx for service vsftpd
6) standalone으로 운영하고 싶다.
(즉, apache나 sendmail처럼 xinetd 통하지 않고 운영을 원한다.)
/etc/xinetd.d/vsftpd (vsftpd가 아닌 다른 파일명일 수 있음) 에서 disable = yes 로 변경하여
xinetd로 서비스 하지 않도록 설정한다. xinetd 를 재실행하면 이제 xinetd를 통한 ftp 서비스는 종료된다.
레드햇의 경우 /etc/rc.d/init.d/xinetd restart
이제 vsftpd 데몬를 실행한다. (소스로 설치시 기본 경로는 /usr/local/sbin)
# /usr/local/sbin/vsftpd &
7) 다른 포트(기본 21번)를 사용하고 싶다. (예를 들어 11121번 포트를 원할 때)
* xinetd를 이용하는 경우
/etc/service 에 'ftp2 11121/tcp' 한 줄을 추가한다.
그리고 /etc/xinetd.d/vsftpd (vsftpd가 아닌 ftp와 같은 다른 파일명일 수 있음) 에서
service ftp 를 service ftp2로 바꾸고, xinetd 를 재실행한다.
* standalone으로 운영하는 경우
/etc/vsftpd.conf 에서 listen_port=11121 을 추가하고 vsftpd 서버를 재실행한다.
바뀐 포트로 운영중인지 확인은 netstat -atnp(리눅스) 또는 netstat -an(그 이외 유닉스)
8) 업로드 파일 크기를 제한하는 방법은 없나요? 이를테면 5MB이상의 파일은 업로드 못한다든지.
현재 1.2.1버전까지 vsftpd 자체에 설정하는 방법은 없습니다.
5. 참고할만한 문서
* vsftpd 1.2.0 설치 문서
ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-1.2.0/INSTALL
* vsftpd.conf man page
* vsftpd에서 한글파일로그와 lastlog 로긴확인하기 (좋은진호)
http://coffeenix.net/board_view.php?bd_code=4
* vsftpd에서 전송속도 제한 (bandwidth limit) (좋은진호)
http://coffeenix.net/board_view.php?bd_code=21
사용자가 ftp만 접속하게 하게 설정하기
[출처]. http://blog.naver.com/norther80/80010288140
사용자가 ftp만 접속하게 하고 싶을 때는
telnet 계정을 막아야 하는데
어찌 하더라... 이거는
% vi /etc/passwd
freewill:x:503:5002::/home/FreeUser/freewill/./:/bin/true
유저의 디렉터리를 막고 true 라는 쉘을 쓰게 하면 되죠
그러나 하나 더있죠!!
그냥은 true 쉘을 쓸수 없습니다.
그럼 어떻게..
% vi /etc/shells
...........
/bin/true
이렇게 추가를 해주면
뚝딱~
Putty
다운로드
SSH와 Telnet 그리고 Rlogin을 이용할 수 있는 무료 클라이언트 PuTTY이다.
SSH, Telnet, Rlogin은 모두 네트워크를 통해서 다른 컴퓨터에 접속할 수 있는 방법들로, 정확히 말하면 네트워크 프로토콜이다.
UNIX 또는 VMS 시스템에 접근할 수 있는 계정을 가지고 있거나, ISP에서 제공하는 웹 서버용 쉘 계정을 가지고 있는 경우에 유용하게 쓰일 수 있는 프로그램이며, SSH는 Telnet과 Rlogin과는 달리 최신 프로토콜로서, 강력한 암호 기능을 구현하여 각종 공격으로부터 방어를 할 수 있는 높은 보안을 지원하는 프로토콜이다.
Telnet은 서버 접속 시, 환경 변수와 같은 몇 가지 설정을 하지 않고도 간편하게 접속 할 수 있는 반면, SSH와 Rlogin에서는 이를 지원하지 않는다.
SSH와 Rlogin은 패스워드를 입력하지 않고도 서버에 로그인이 가능하며, SSH에서는 서버에 접속하여 자동으로 명령을 전송할 수 있어 자동화 프로세싱이 가능하다.
가능하면 강력한 보안이 지원되는 SSH 프로토콜을 이용하기를 바라며, 만약 서버에서 지원이 되지 않는다면 서버 관리자에게 설치를 요청해야한다
SSH, Telnet, Rlogin은 모두 네트워크를 통해서 다른 컴퓨터에 접속할 수 있는 방법들로, 정확히 말하면 네트워크 프로토콜이다.
UNIX 또는 VMS 시스템에 접근할 수 있는 계정을 가지고 있거나, ISP에서 제공하는 웹 서버용 쉘 계정을 가지고 있는 경우에 유용하게 쓰일 수 있는 프로그램이며, SSH는 Telnet과 Rlogin과는 달리 최신 프로토콜로서, 강력한 암호 기능을 구현하여 각종 공격으로부터 방어를 할 수 있는 높은 보안을 지원하는 프로토콜이다.
Telnet은 서버 접속 시, 환경 변수와 같은 몇 가지 설정을 하지 않고도 간편하게 접속 할 수 있는 반면, SSH와 Rlogin에서는 이를 지원하지 않는다.
SSH와 Rlogin은 패스워드를 입력하지 않고도 서버에 로그인이 가능하며, SSH에서는 서버에 접속하여 자동으로 명령을 전송할 수 있어 자동화 프로세싱이 가능하다.
가능하면 강력한 보안이 지원되는 SSH 프로토콜을 이용하기를 바라며, 만약 서버에서 지원이 되지 않는다면 서버 관리자에게 설치를 요청해야한다
useradd(adduser) 명령어 사용법
[출처] http://cafe.naver.com/bphper/14
1. 기 능
새로운 유저를 등록할 때 사용하는 명령어
2. 문 법
# adduser [옵션] 계정명
3. 옵 션
-c comment /etc/passwd 파일의 comment 필드에 넣을 정보를 입력할 수 있다. 이 정보는 계정에 대한 개인 정보이다.
-d home_dir 유저의 로그인 디렉토리인 홈디렉토리를 변경한다. default로는 /home 디렉토리 아래에 일반계정의 홈디렉토리가 생성되는데 이 디렉토리를 다른 곳으로 지정하고자 할 때 사용되는 옵션이다.
-e expire_date 계정이 만료될 시기를 지정하면서 계정을 생성한다. 계정 만료 시기는 YYYY-MM-DD 형식으로 지정한다.
-g initial_group 기본적으로 계정을 생성하면 그와 똑 같은 그룹 명으로 그룹이 생성되고, 그 그룹에 속하게 된다. 예를 들어 linuxone이라는 계정을 생성하면 linuxone이라는 그룹도 같이 생성되고, linuxone 유저는 linuxone 그룹에 속하게 되는 것이다. 그런데, 이 정보를 변경하여, 로그인 그룹을 바꾸고자 하는 경우 이 옵션을 사용한다. xg 옵션에는 그룹명이 아닌 GID 값을 인자 값으로 사용한다.
4. 사용 방법 및 정보
가) 이 명령으로 계정을 생성하면, /etc/passwd, /etc/group, /etc/shadow 파일에 계정 정보가 저장된다.
[root@ls ]# adduser linuxone
Ex) /etc/passwd
유저명:패스워드:uid:gid:계정에 대한 부가적 정보:홈디렉토리:쉘
ebowski:x:500:500:education:/home/lebowski:/bin/bash
linuxone:x:502:502:lebowski:/home/linuxone:/bin/bash
tech:x:503:503::/home/tech:/bin/bash
/etc/group
그룹명:그룹패스워드:gid:그룹멤버
lebowski:x:500:
linuxone:x:502:
tech:x:503:
/etc/shadow
username:password:last:may:must:warn:expire:disable:reserved
lebowski:$1$qRCtPY54$fO2FeZ88qmKVIGOqxg6Uv1:12853:0:99999:7:::
linuxone:$1$KRNAQz/m$lXS.F9AGQ7DBatQhkkKoK.:12850:0:99999:7:::
tech:$1$fAyrW7dw$l5BPS3cV0qdThzSi9zBr81:12853:0:99999:7:::
나) useradd사용 시 기본값 지정하여 변경하기
[root@ls ]# useradd -D 현재 default로 설정 되어 있는 값들을 보여줌 (/etc/default/useradd 에 정의)
[root@ls ]# useradd -D -g GID 변경 #useradd_D -d 사용자의 홈 디렉토리 지정
[root@ls ]# useradd -D -s 사용자가 사용할 쉘
[root@ls ]# useradd -D -k 사용자의 홈 디렉토리에 복사될 파일들이 있는 곳
[root@ls ]# useradd newuser _G group1, group2 … 새로운 사용자를 또 다른 그룹의 멤버로 등록 (각각의 그룹은 콤마(,)로 분리)
'2006년이 밝아왔다
2006년 첫날, 일어나 집앞 주차장에서 담배 한대 피우면서,
이런저런 생각들을 했다.
올해에는 얕고 넓게 주의를 알아가는 일보단,
깊고, 좁게 조금씩 알아가야겠다는 생각으로,
예전보다 더 많이 FLASH를 후벼 파야겠다는 생각으로,
지금 하고 있는 일을 통해 더 많은 사람들을 아울러야겠다는 생각도,
기대만큼 이뤄지지 않더라도 내일을 기약하며 도약하는 맘 잃지 않도록.
이제 난 30대다.
이런저런 생각들을 했다.
올해에는 얕고 넓게 주의를 알아가는 일보단,
깊고, 좁게 조금씩 알아가야겠다는 생각으로,
예전보다 더 많이 FLASH를 후벼 파야겠다는 생각으로,
지금 하고 있는 일을 통해 더 많은 사람들을 아울러야겠다는 생각도,
기대만큼 이뤄지지 않더라도 내일을 기약하며 도약하는 맘 잃지 않도록.
이제 난 30대다.
피드 구독하기:
덧글 (Atom)