마스터포유(Master4U)
Monday, 17 of January
 

제목: 실전 쉘스크립트 및 리눅스관련 팁 모음
분류: 리눅스
이름: 김인호 * http://www.master4u.net


등록일: 2006-04-24 10:22
조회수: 215371 / 추천수: 16
 
 
2005/02/24[번역|004] 실전! 셸 스크립트 교실  (Linux_Script)
2005/02/24[번역|003] 실전! 셸 스크립트 교실  (Linux_Script)
2005/02/24[번역|002] 실전! 셸 스크립트 교실  (Linux_Script)
2005/02/24[번역|001] 실전! 셸 스크립트 교실  (Linux_Script)
2005/02/13[제로보드] 광고글 막기  (Homepage_제로보드)
2005/02/13리눅스 설정 파일  (Linux_명령어&설정)
2005/02/13페도라 에서 한글 사용  (Linux_일반)
2005/02/13서버 모니터링 툴의 강자, RRDtool 가이드  (Linux_일반)
2005/02/13나의 리눅스 관련 팁  (Linux_일반)
2005/02/13「리눅스에서의 개인정보 보호·보안」필수 체크리스트  (Linux_보안)
2005/02/13백업시점에서 지난파일 자동으로 지우기  (Linux_Script)
2005/02/13사용자 쿼터설정  (Linux_보안)
2005/02/13서버점검사항  (Linux_보안)
2005/02/13Fedora 3 사용 팁  (Linux_일반)
2005/02/13[웹 서버] 소스로 APM 설치 (작성: 정성재 정리:임헌정)  (Linux_일반)
2005/02/13고스트 사용 설명-Ghost 이미지를 복원할 수 있는 부팅용 CD 작성 방법  (Computer_일반)
2005/02/12제로보드 회원과 연동이 가능한 웹하드(오렌지디스크)  (Homepg_일반)
2005/02/11리눅스 데몬 종류 & 설명 | Linux 2004/06/02 14:58  (Linux_일반)
2005/02/11리눅스 시스템을 위한 성능 최적화 기법  (Linux_보안)
2005/02/09Linuxer와 MSN  (Linux_일반)
2005/02/09How to use yum - Introduction  (Eenglish)
2005/02/08[zog][펌글]조그 - N@search 유사 검색어기능 패치  (Homepage_조그)
2005/02/08[zog][펌글]본문 Show/Hide 기능.  (Homepage_조그)
2005/02/07NFS 서버 구축하기  (Linux_일반)
2005/02/06shade webhard 0.7.8 (2004-12-29) 웹 하드 설치  (Homepg_일반)
2005/02/06[Tip] Gmail 계정 리눅스에 마운트하기  (Linux_일반)
2005/02/05[제로보드] 듀란님의 전체쪽지 기능추가판  (Homepage_제로보드)
2005/02/05[제로보드] 제로보드 & HTTP 인증 연동  (Homepage_제로보드)
2005/02/04phpMyAdmin 설치하기  (DB_Mysql)
2005/02/04리눅스 팁 모음  (Linux_일반)
2005/02/04Fedora Core 2 FTP 설치기  (Linux_일반)
2005/02/02리눅스에 제로보드 설치하기...  (Homepg_일반)
2005/02/02[펌글]성공하는 리더들의 7가지 습관  (Scrap_Tip)
2005/02/01[웹 서버] 아파치를 FTP 자료실로 사용법  (Linux_일반)
2005/02/01류범룡 님의 mysql설치법  (DB_Mysql)
2005/02/01유범용님 추천 리눅스 사이트  (Linux_보안)
2005/02/01[제로보드] outlogin에서 레벨 숫자대신 간단한 단어로 보이기(아이쿠님 소스 수정)  (Homepage_제로보드)


[번역|004] 실전! 셸 스크립트 교실  (Linux_Script) (2005/02/24 07:03 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=206

-----------------------------역자의변 ------------------------------
아래 문서는 "마그마그" (http://www.mag2.com)를 통해 발행되고 있는
"實踐!シェルスクリプト敎室" (실천! 셸 스크립트 교실)이라는 메일 매거진의
번역입니다.

유닉스 계열 서버 관리자들을 대상으로한 셸 스크립트 강좌입니다. 리눅스를
다루는 데에 셸 스크립트에 대한 지식이 유용한데도 이런 기초적인 강좌를
볼 수 없는 것 같아, 기계번역의 도움을 받아 저작자(요기상)의 허락없이(!)
올립니다.

내용에 대한 질문은 원저작자에게, 번역에 대한 질문은 번역자인 저
( daewon_yoon@hanmail.net )에게 부탁드립니다.

원문은 다음 url을 통해 읽을 수 있습니다.
http://backno.mag2.com/reader/Back?id=0000124615

이 번역물은
http://cafe.daum.net/joalinux -> 강좌
http://cafe.daum.net/withlearn -> 자유게시판
에 올리겠습니다.

주된 내용은 모두 읽어보고 바로잡겠지만, 잡담 부분엔 어색한 기계
번역이 남아있을 수 있습니다.
-----------------------------역자의변 끝----------------------------
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2004.03.08
실전!셸 스크립트 교실
http://qmailsolutions.com/shellscript/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Vol.004 ━━━

┌─────────────────────────────────┐
│ Linux, FreeBSD, Solaris 등 UNIX 서버 관리를 위해서는 셸 스크립트 │
│ 가 필수도구입니다.이 메일 매거진은, 실전적인 셸 스크립트를 소개 │
│ 하여 서버 관리자의 나날이 행복해지는 것을 목표로 합니다. │
└─────────────────────────────────┘

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ INDEX
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 □ 지난 강좌의 복습 ~메뉴 형식에서 선택하기(1)~
 □ 실전!셸 스크립트 교실 ~메뉴 형식에서 선택하기(2)~
 □ 나의 UNIX력 ~누구라도 모두 초심자였다∼
 □ 끝에

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 지난 강좌의 복습
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 지난 강좌(Vol.003)에서는,

   ~메뉴 형식에서 선택하는(1)~

 의 제1회째로서 다음과 같은 메뉴 형식에서 내용을 선택하는 경우의,

+--------------------------------------+
| 업무 메뉴 |
| |
| 1. 유저의 등록·삭제 |
| 2. WEB 서버 재기동 |
| 3. 전원 셧다운 |
| |
| 번호를 입력===> _ |
| |
+--------------------------------------+

 (1) 메뉴의 표시
 (2) prompt 표시(다음 줄로 넘어가지 않는다.)

 를 소개했습니다.

 "(1) 메뉴의 표시" 를 실시하기 위해서는, echo 명령어를 사용하면 된다
는 것과 "(2) prompt 표시" 를 위해서도, echo 명령어를 사용하지만,

 echo -n 옵션을 사용한다
 echo "표시시키고 싶은 문자열 \c"

 의 2가지 방법이 있다는 것을 소개했습니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 실전!셸 스크립트 교실 ~메뉴 형식에서 선택하기(2)~
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 UNIX의 오퍼레이션은 기본적으로 CUI(Character User Interface)에 기반합니다.
정형적인 작업이나, 긴급시 등 시스템 담당자 이외의 누군가가 정형적인 일을 할
필요가 있을지도 모릅니다. 그러한 경우에 도움이 되는 방법입니다.
다음과 같은 메뉴를 생각해 봅시다.

+--------------------------------------+
| 업무 메뉴 |
| |
| 1. 유저의 등록·삭제 |
| 2. WEB 서버 재기동 |
| 3. 전원 셧다운 |
| |
| 번호를 입력===> _ |
| |
+--------------------------------------+

 메뉴 형식에서 선택하는 경우의 생각할 포인트는 몇군데가 있겠지만,
대략적으로 다음과 같을 거라고 생각합니다.

(1) 메뉴의 표시
(2) prompt를 표시한다(다음 줄로 넘어가지 않는다)
(3) 입력한 데이터를 셸 변수에 입력
(4) 셸 변수에 대응한 명령어를 실행한다

전회의 메일 매거진에서는, (2)까지 소개했습니다. 이번은 그 계속이 됩니다.

(3) 입력한 데이터를 셸 변수에 입력

키보드등에서 입력한 데이터를 셸 변수에 입력하려면 , read 명령어
를 사용합니다. 예를 들어, 다음과 같이 합니다.

---
echo -n "번호를 입력===> "
read menuno
echo ${menuno}
---

실행하면 다음과 같이 됩니다.

---
번호를 입력===> 1(Enter)
1
---

키보드로부터 입력을 기다리고, 번호를 입력하고 Enter
키를 입력하면, 변수 menuno 에 번호가 들어갑니다. 입력하는 내용은 한 문자
뿐 아니라, "yes" "no" 와 같은 문자열이 될 수도 있습니다.

(4) 셸 변수에 대응한 명령어를 실행한다

변수에 대해서 복수의 조건에 따라 다른 작업을 하고 싶은 경우에는
((a)의 경우, (b)의 경우, (c)의 경우등), case문을 사용합니다.
다음 예는, 메뉴 번호에 대응한 명령어를 실행시키는 예입니다.

---
case ${menuno} in
1) adduser ;;
2) apachectl graceful ;;
3) shutdown -h now ;;
*) echo "메뉴 번호가 틀렸습니다."
exit 1 ;;
esac
---

위 스크립트는, 변수 ${menuno} 가,
1 인 경우: adduser 를 실행
2 인 경우: "apachectl graceful" 를 실행
3 인 경우: "shutdown -h now" 를 실행
그 이외: "메뉴 번호가 다릅니다." 라고 표시하고 종료한다
는 의미가 됩니다. 변수에 든 값을 참조해야 하기 때문에, 셸 변수 menuno는
${menuno} 와 같이 써줍니다.

유저를 등록하는 명령어는 여러가지 UNIX 마다 다릅니다만, 여기에서는
단순하게 adduser 명령어로 해두었습니다.

각각의 조건을 쓴 후,";;"(세미콜론 2개)으로 종료합니다.

어느 조건에도 들어맞지 않는 경우는 "*)" 로 표시합니다. 단, 이 문장은
마지막에 써야 합니다. 첫 줄에 써 버리면, 모든 조건이 이곳에서 지시한
명령만 처리하고 끝나 버립니다.
또, case문은 esac로 종료합니다.(esac= case를 거꾸로 써준 것입니다.)

===< 정리 >===

지난 강좌와 이번 호의 내용을 셸 스크립트에 정리하면 다음과 같이 됩니다.

---
01:#!/bin/sh
02:
03:echo " 업무 메뉴"
04:echo ""
05:echo " 1. 유저의 등록·삭제"
06:echo " 2. WEB 서버 재기동"
07:echo " 3. 전원 슛다운"
08:echo ""
09:echo -n " 번호를 입력===> "
10:
11:read menuno
12:
13:case ${menuno} in
14: 1) adduser ;;
15: 2) apachectl graceful ;;
16: 3) shutdown -h now ;;
17: *) echo "메뉴 번호가 다릅니다."
18: exit 1 ;;
19:esac
20:
21:exit 0
----

 일단 이것이라도 동작합니다만, 좀 더 개량의 여지가 있다고 생각합니다.
다음 강좌에선 이 스크립트를 개선해 갈 것입니다.◆◆ 응용편 ◆◆이 됩니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 나의 UNIX 경험담 ~누구라도 모두 초심자였다∼
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 「 나의 UNIX경험담」이라고 하는 것으로, 내가 UNIX와 관계를 갖게 된 계기
등을 소개해 갈 것입니다.

 내가 UNIX를 시작해 손댄 것은, 대학생이었던 92년(12년이나 전...)에 「정보
처리연습」이라고 하는 수업으로, Fortran라고 하는 언어의 프로그래밍이었습니
다. 당시는 인타넷트의 "인" 자도 없고(라고 하는 것보다는 몰랐던 것 뿐일지도
...), 게다가 만지고 있던 기계가 UNIX 워크스테이션이다는 것도 몰랐습니다.
 나중에 알았습니다만, SUN 마이크로의 워크스테이션이었다고 합니다.
다른 대학의 친구에게선 묘하게 시기심 같은 것도 받고 있었습니다. 게다가
「무었때문에 「포-트-란」같은 것까지 하는거지? (C언어만 하면 되는데)」라고
까지 친구들은 말할 지경 이었습니다.

 Fortran라고 하는 언어는, 왼쪽에서 6자리수째까지는 문장을 쓸 수 없는
이상한 언어였습니다. 실제로 프로그래밍 하기 전에 「coding sheet」라고
불리는 시트에 문자를 쓰든지 했습니다. 더 옛날에는, 이것이 펀치카드 (천
공카드)를 사용해 구멍을 뚫는 작업이 되는 것입니까....덧붙여서,
C언어로 말하는 제일 간단한,"Hello,World" 프로그램은 이런 느낌입니다.

---
WRITE(*,*) 'Hello,World'
END
---

 그 무렵 제일 고민거리가, vi에디터였습니다. 기본적인 키(삽입코
만드(aio)나, 커서 이동(hjkl))가 있습니다만, 기억할 수 없었습니다.
지금의 vi에디터는 화살표 키를 인식하는 것도 많습니다만, 당시는 커서
키로 이동하려고 하면,

 「삑」

소리가 나오고, 이상한 이스케이프 코드가 출력됩니다.엄청
바보 취급 당한 기분이 되어있었습니다.

 Fortran는, 개발 환경이 있는 UNIX(FreeBSD나 Linux등)에서는, g77라고 하는
컴파일러가 있습니다. 시험해 보는 것도 좋을지도 모릅니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 끝에
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 무언가에 촉발 된 것처럼 간단 라이트를 만들어 보았습니다.이른바 100엔 상품
그리고 「이런 응 할 수 있었습니다만 ♪」같은 기획물입니다.

재료라든지, 완성의 그림등이↓에 있습니다.
http://qmailsolutions.com/wiki/pukiwiki.php?%A4%AA%BC%EA%B7%DA%A5%E9%A5%A4%A5%C8
너무 간단합니다....

 또 다시 꽃가루 알레르기의 화제입니다만...드디어 본격적인 증상이 와 버렸습니다.
한밤중 고기 사미로 일어나 버리는→눈이 가렵기 때문에 긁어 버리는→눈을 씻으러 간다
→재채기가 또 나온다고 하는 악순환이 계속 되고 있습니다.

 마침내 자고 있는 동안 고기 사미가 나왔는지, 잠 달리하게 되어 끝해
.지금 왼쪽을 향하는 것이 괴롭습니다....저녁 반주가 원인이었는가 해들.어제는 마시지 않고
잤습니다만 쾌조였습니다.성격상(?) 마시는 것이 많기 때문에, 가능한 한 마시면 취기
각해를 하고 나서 자기로 하겠습니다.

 다음 번 전달은,3/15(월) 전달 예정입니다.
 내용은, ~메뉴 형식에서 선택하는(3)~응용편을 소개합니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 코멘트 모집중입니다
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

「실전!셸 스크립트 교실」에서는, 여러분으로부터의 의문·질문·감상·요망을
모집하고 있습니다.

「여기를 이해하기 어려웠다」
「이런 일은 할 수 있는 거야?」
「이런 테마를 취급했으면 좋겠다」
「잘 움직이지 않는 셸 스크립트를 보았으면 좋겠다」

등, 부담없이 info@qmailsolutions.com 에 메일에서 부탁합니다.

받은 내용에 관해서는, 본문중에 인용하는 경우가 있습니다.
기본적으로 이름은 공개하지 않습니다만, 공개해 주었으면 한 경우는 그 취지 연락해 주십시오.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
「실전!셸 스크립트 교실」(Vol.004)
(메일 매거진 ID:0000124615)

● 발행·편집: 요기길이2

● 감상·의문·질문 등
WEB http://qmailsolutions.com/shellscript/
메일 info@qmailsolutions.com

● 등록·해제·백 넘버
http://www.mag2.com/m/0000124615.htm

이 메일 매거진은 「마그마그!」(을)를 이용해 발행하고 있습니다.

(C) 2004 YOGI George info@qmailosolutions.com

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
[번역|003] 실전! 셸 스크립트 교실  (Linux_Script) (2005/02/24 07:02 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=205

-----------------------------역자의변 ------------------------------
아래 문서는 "마그마그" (http://www.mag2.com)를 통해 발행되고 있는
"實踐!シェルスクリプト敎室" (실천! 셸 스크립트 교실)이라는 메일 매거진의
번역입니다.

유닉스 계열 서버 관리자들을 대상으로한 셸 스크립트 강좌입니다. 리눅스를
다루는 데에 셸 스크립트에 대한 지식이 유용한데도 이런 기초적인 강좌를
볼 수 없는 것 같아, 기계번역의 도움을 받아 저작자(요기상)의 허락없이(!)
올립니다.

내용에 대한 질문은 원저작자에게, 번역에 대한 질문은 번역자인 저
( daewon_yoon@hanmail.net )에게 부탁드립니다.

원문은 다음 url을 통해 읽을 수 있습니다.
http://backno.mag2.com/reader/Back?id=0000124615

이 번역물은
http://cafe.daum.net/joalinux -> 강좌
http://cafe.daum.net/withlearn -> 자유게시판
에 올리겠습니다.

주된 내용은 모두 읽어보고 바로잡겠지만, 잡담 부분엔 어색한 기계
번역이 남아있을 수 있습니다.
-----------------------------역자의변 끝----------------------------
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2004.03.01
실전!셸 스크립트 교실
http://qmailsolutions.com/shellscript/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Vol.003 ━━━

┌─────────────────────────────────┐
│ Linux, FreeBSD, Solaris 등 UNIX 서버 관리를 위해서는 셸 스크립트 │
│ 가 필수도구입니다.이 메일 매거진은, 실전적인 셸 스크립트를 소개 │
│ 하여 서버 관리자의 나날이 행복해지는 것을 목표로 합니다. │
└─────────────────────────────────┘

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ INDEX
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 □ 지난 강좌의 복습
 □ Q&A코너
 □ 실전!셸 스크립트 교실 ~전날의 날짜를 구한다∼
 □ 끝에

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 지난 강좌의 복습
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 지난 강좌(Vol.002)에서는,

   ~전날의 날짜를 구한다∼

 는 작업을 했습니다. 로그 파일의 이름을 붙일 때 이전날의 날짜를 구하는
방법을 소개했습니다. 예를 들어 2004/03/01에 스크립트를 실행했다면,
"access_log-20040229" 처럼 되는 것입니다. 다음의 경우에 대해 소개했습니다.

 1. 쉘상에서 계산하는 방법
 2. date 명령어를 사용하는 방법
 3. perl을 사용하는 방법
 4. 환경 변수를 이용하는 방법

date 명령어의 경우는, -v 옵션을 이용해서
===
yymmdd=`date -v1d '+%Y%m%d'`
===
로 합니다. 그리고, 환경 변수를 이용하는 방법은
===
yymmdd=`env TZ=JST+15 date '+%Y%m%d'`
===
처럼 사용하는 방법을 소개했습니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ Q&A코너
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

여러분으로부터의 의견· 요망의 코너입니다.

□ cd 했을 때에, 동시에 ls명령어를 실행하고 싶다(E07Kaz씨)

 cd 를 실행했을 때에, 동시에 ls를 실행하고 싶다고 하는 욕심많은
요청입니다. csh계 경우에는, alias 명령어로 인수를 넘겨줄 수 있기 때문에
~/.cshrc 파일에 다음과 같이 써주면 됩니다.

---
alias cd 'cd \!*; ls'
---

 bash등의 sh계의 경우는, 내가 조사한 바로는, alias 명령어를 통해 인수를
가질 수 없는 것 같습니다. 그러한 경우는 쉘 함수를 이용합니다. 다음 내용을
~/.profile 파일에 추가하면 될 것입니다.

---
cdls(){
cd $* && ls
}
---

 이렇게 해서 cdls라고 하는 명령어로, cd 했을 경우에 ls로 파일 리스트가
표시되게 됩니다. 또, && 로 명령어를 연결해서 존재하지 않는 디렉토리에
대해서 cd 명령어를 실행했을 경우 등, cd 명령어가 실패했을 경우에는
ls 명령어가 실행되지 않게 됩니다.

 단지, 쉘 함수의 경우는 alias와 달리 cd 명령어 그 자체를 치환해 버리는
것은 불가능해 보입니다. (재귀적으로 cd명령어를 실행해 버리기 때문에).
이 해결 방법은 조금 자신이 없습니다, 다른 의견 대환영입니다.

E07Kaz씨, 감사합니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 실전! 셸 스크립트 교실 ~메뉴 형식에서 선택한다∼
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 UNIX의 오퍼레이션은 기본적으로 CUI(Character User Interface)에 기반합니다.
정형적인 작업이나, 긴급시 등 시스템 담당자 이외의 누군가가 정형적인 일을 할
필요가 있을지도 모릅니다. 그러한 경우에 도움이 되는 방법입니다.
다음과 같은 메뉴를 생각해 봅시다.

+--------------------------------------+
| 업무 메뉴 |
| |
| 1. 유저의 등록·삭제 |
| 2. WEB 서버 재기동 |
| 3. 전원 셧다운 |
| |
| 번호를 입력===> _ |
| |
+--------------------------------------+

 메뉴 형식에서 선택하는 경우의 생각할 포인트는 몇군데가 있겠지만,
대략적으로 다음과 같을 거라고 생각합니다.

(1) 메뉴의 표시
(2) prompt를 표시한다(다음 줄로 넘어가지 않는다)
(3) 입력한 데이터를 셸 변수에 입력
(4) 셸 변수에 대응한 명령어를 실행한다

차례로 생각해 봅시다.

(1) 메뉴의 표시

이것은 단순하게 echo문을 여러 개 쓰는 것으로 실현될 수 있습니다.

---
echo " 업무 메뉴"
echo ""
echo " 1. 유저의 등록·삭제"
echo " 2. WEB 서버 재기동"
echo " 3. 전원 슛다운"
echo ""
---

(2) prompt를 표시한다(다음 줄로 넘어가지 않는다)

다음줄로 넘어가지 않고 표시를 하고 싶은 경우도, echo 명령어을 사용해서
실현할 수 있습니다. 그 경우, echo 명령어는 다음의 2개의 패턴이 있습니다.

 [1] echo -n 옵션으로 지정하는 것
 [2] echo "문자열 \c"로 지정하는 것

시스템이 사용하는 echo 명령어가 어느 패턴으로 개행문자가 없는 출력을 하고
있는지 알려면, "echo -n" 라고 입력하고, "-n" 라고 표시되면 [2]의 패턴,
아무것도 표시되지 않으면,[1]의 패턴입니다.

[1] 의 패턴이면,
---
echo -n " 번호를 입력===> "
---
[2] 의 패턴이면,
---
echo " 번호를 입력===> \c"
---

됩니다.

여기까지 쓰고 힘이 다해 버렸습니다....이후의 내용은 다음회에 소개합니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 끝에
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 10년 정도 꽃가루 알레르기에 골치를 썩이고 있습니다만, 금년도 또 다시 발병
해 버렸습니다. 작년은 요구르트라든지 차조기라든지 첨다라든지 여러가지 시험
했습니다만, 결국 이비과의 약부탁이 되어 버렸습니다.

 아는 사람의 이비과에 말해 왔습니다만, 약의 이름으로 회화하고 있는 거에요.

의사:「(약은) 작년무엇 마셨어?」
 나:「아레그라야」
의사:「아레그라로 어땠어요?」
 나:「아마 괜찮았다고 생각하는데」
의사:「자, 아레그라 내밀기와 구카등, 증상 나빠지면 약인가 있는군」

 이래서야 약국에 가고 있는 것과 다르지 않는 것은 아닌지?이렇게 말할 것 같습니다.
처방전이 없으면 살 수 없기 때문에 어쩔 수 없는 부분입니다만.

 화분의 비산량이 적다고, 증상이 적게 된다는 것에서는
없기 때문에, 약은 필요하네요.

 본메일 매거진은, 격주간으로 전달하고 있었습니다만, 이번 달부터 주간으로 전달
하기로 했습니다.내용적으로 적게 되어 버립니다만, 그 만큼 타임리하게 전달할 수
있을까라고 생각합니다.

 메일 매거진을 쓰고 있으면, 쓰고 싶은 모드가 됩니다만, 1주가 지난다
음엔 쓰고 싶은 모드로부터 빠져 나가 버리고, 아무래도 잊어 버립니다
(웃음)

 다음 번 전달은 3/8(월) 전달 예정입니다. 내용은, ~메뉴 형식에서 선택한다∼
를 이어서 소개합니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 코멘트 모집중입니다
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

「실전! 셸 스크립트 교실」에서는, 여러분으로부터의 의문·질문·감상·요망을
모집하고 있습니다.

「여기를 이해하기 어려웠다」
「이런 일은 할 수 있는 거야?」
「이런 테마를 취급했으면 좋겠다」
「잘 움직이지 않는 셸 스크립트를 보았으면 좋겠다」

등, 부담없이 info@qmailsolutions.com 에 메일에서 부탁합니다.

받은 내용에 관해서는, 본문중에 인용하는 경우가 있습니다.
기본적으로 이름은 공개하지 않습니다만, 공개해 주었으면 한 경우는 그 취지 연락해 주십시오.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
「실전!셸 스크립트 교실」(Vol.003)
(메일 매거진 ID:0000124615)

● 발행·편집: 요기길이2

● 감상·의문·질문 등
WEB http://qmailsolutions.com/shellscript/
메일 info@qmailsolutions.com

● 등록·해제·백 넘버
http://www.mag2.com/m/0000124615.htm

이 메일 매거진은 「마그마그!」(을)를 이용해 발행하고 있습니다.

(C) 2004 YOGI George info@qmailosolutions.com

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
[번역|002] 실전! 셸 스크립트 교실  (Linux_Script) (2005/02/24 07:01 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=204

-----------------------------역자의변 ------------------------------
아래 문서는 "마그마그" (http://www.mag2.com)를 통해 발행되고 있는
"實踐!シェルスクリプト敎室" (실천! 셸 스크립트 교실)이라는 메일 매거진의
번역입니다.

유닉스 계열 서버 관리자들을 대상으로한 셸 스크립트 강좌입니다. 리눅스를
다루는 데에 셸 스크립트에 대한 지식이 유용한데도 이런 기초적인 강좌를
볼 수 없는 것 같아, 기계번역의 도움을 받아 저작자(요기상)의 허락없이(!)
올립니다.

내용에 대한 질문은 원저작자에게, 번역에 대한 질문은 번역자인 저
( daewon_yoon@hanmail.net )에게 부탁드립니다.

원문은 다음 url을 통해 읽을 수 있습니다.
http://backno.mag2.com/reader/Back?id=0000124615

이 번역물은
http://cafe.daum.net/joalinux -> 강좌
http://cafe.daum.net/withlearn -> 자유게시판
에 올리겠습니다.

주된 내용은 모두 읽어보고 바로잡겠지만, 잡담 부분엔 어색한 기계
번역이 남아있을 수 있습니다.
-----------------------------역자의변 끝----------------------------
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2004.02.16
실전! 셸 스크립트 교실
http://qmailsolutions.com/shellscript/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Vol.002 ━━━

┌─────────────────────────────────┐
│ Linux, FreeBSD, Solaris 등 UNIX 서버 관리를 위해서는 셸 스크립트 │
│ 가 필수도구입니다.이 메일 매거진은, 실전적인 셸 스크립트를 소개 │
│ 하여 서버 관리자의 나날이 행복해지는 것을 목표로 합니다. │
└─────────────────────────────────┘

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ UNIX 서버 관리자 여러분!셸 스크립트로부터 도망치고 있지 않습니까?
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

「언제나 사용하고 있는 툴이 사용하기 어려워」
「셸 스크립트는 어쩐지 어려울 것 같다」

시스템 관리 현장에 있으면, 그런 일이 자주 있습니다.
비슷비슷한 명령어를 하나하나 쳐서 입력했기 때문에 잘못한 적은 없습니까?

셸 스크립트는 어려운 것은 없습니다.요령만 알게되면 「확실하고」「오차없이」
목적하는 작업을 실행할 수 있습니다.「반드시」서버 관리자의 생활이
*** 행복하게 *** 될 수 있어요.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ INDEX
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 □ 지난번 강좌의 복습
 □ Q&A코너
 □ 실전! 셸 스크립트 교실 ~전날의 날짜를 구한다∼
 □ 끝에

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 지난번 강좌의 복습
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 지난번 강좌(창간호)에서는,

   ~파일명에 날짜를 붙이자∼

 는 생각으로, 로그 파일 등의 파일명에 날짜를 붙이는 방법을
소개했습니다.

다음의 예는, apache 의 로그 파일을 로테이션 하는 예입니다.

===
01:#!/bin/sh
02:
03:logfile="/var/www/logs/http-access_log"
04:mv ${logfile} ${logfile}-`date '+%Y%m%d'`
05:apachectl graceful
06:exit 0
===

 단지, 로그 로테이션 프로그램의 기동 타이밍이 0:00이기 때문에,
실제로는 전날의 날짜를 요구할 필요가 있습니다. 전회는 여기까지
이야기하고 마쳤습니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ Q&A코너
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

여러분으로부터의 의견· 요망의 코너입니다.

(1) 이 메일 매거진은 전송 해도 괜찮은 것일까요?(M.H씨)

 전송에 관해서는 문제 없습니다. 일부분만 전송 해도 괜찮습니다.
그 때는, 「실전! 셸 스크립트 교실」로부터 인용한 것을 덧붙여
두어 주세요.

M.H씨, 감사합니다.

(2) 셸 스크립트를 일부러 만들지 않아도, 명령어 라인에서 다음과 같이
입력하면 간단해요. (쟈스민씨)
===
01:% foreach i (`find . -name "*.htm"`)
02:foreach? mv $i $i:r.html
03:foreach? end
04:%
===

 익숙해지면 이 방법이 확실히 편하네요. 나 자신도 명령어 라인은 csh
(tcsh)로 스크립트는 sh계를 사용하고 있습니다. 단지, "$i:r" 이라고 써서
확장자(extension) 이외의 부분을 꺼낼 수 있는 것은 몰랐습니다.

단순한 sh계라면 어렵습니다만, bash등의 경우는 다음과 같이 할 수 있군요.

===
01:$ for i in `find . -name *.htm`
02:> do
03:> mv ${i} ${i%.htm}.html
04:> done
05:$
===

쟈스민씨, 감사합니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 실전!셸 스크립트 교실 ~전날의 날짜를 구한다∼
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 로그 로테이션의 스크립트를 작성하는 경우에, 전날의 날짜를 구해야만 할 때
가 자주 있습니다. 그러한 경우에 도움이 되는 내용입니다.

 지난번 강좌에서는 힌트로 다음과 같은 것을 언급했습니다.

 1. 셸상에서 계산하는 방법
 2. date 명령어를 사용하는 방법
 3. perl를 사용하는 방법
 4. 환경 변수를 이용하는 방법

 차례로 소개해 보자고 생각했습니다만, 셸상에서 계산하는 방법은
꽤나 귀찮은 데다가, 버그가 들어가기 쉬워서 추천할 수 없습니다.
( 실은 소개하려고 생각해서, 쉘 버젼을 써 봤지만, 윤년의 계산 등등
너무 길어질 뿐만 아니라, 스마트한 방법이 아니기 때문에 그만두었습니다)
어떻게 보면 나쁜 예일지도 모릅니다.

그 외의 방법을 소개해 갑니다.

 2. date 명령어를 사용하는 방법

 date 명령어의 -v 옵션을 사용하면 현재의 날짜로부터 「0일전」이라고
말한 날짜를 취득할 수 있습니다. 1일전의 날짜를 표시하고 싶은 경우는
"date -v1d" 와 같이 지정합니다. 따라서 지난번 강좌의 apache 로그의
예라면 다음과 같이 됩니다.

===
01:#!/bin/sh
02:
03:logfile="/var/www/logs/http-access_log"
04:mv ${logfile} ${logfile}-`date -v1d '+%Y%m%d'`
05:apachectl graceful
06:exit 0
===

 ※ 4째줄의 date 명령어의 옵션에 "-v1d" 가 추가되었습니다.

 3. perl을 사용하는 방법

 date 명령어를 사용하는 방법은 매우 편리하고 직접적인 방법입니다.그러나,
-v 옵션을 사용할 수 있는 date 명령어는 모든 OS에 들어가 있는 것은 아닙
니다. 그래서, perl을 사용하는 방법을 소개합니다.


===
01:#!/bin/sh
02:
03:prevdate(){
04:perl -e '
05: ($sec,$min,$hour,$mday,$mon,$year) = localtime( time()-86400 ) ;
06: printf("%04d%02d%02d", $year+1900, $mon+1, $mday ) ;
07:'
08:}
09:
10:yymmdd=`prevdate`
11:
12:logfile="/var/www/logs/http-access_log"
13:mv ${logfile} ${logfile}-${yymmdd}
14:apachectl graceful
15:exit 0
===

 3째줄부터 8째줄까지가, perl로 이전날짜를 구하는 부분입니다.3째줄의 time() 함수
를 이용해서, 현재의 시각을 1970년 1월 1일00:00:00 부터의 지나간 초수로 구합니다.
거기로부터 1일의 초수 86400(=24*60*60)을 뺀 후, 날짜 포맷으로 고칩니다.

 10째줄에 셸 변수 yymmdd 에 전날의 날짜를 대입하고 있습니다.
 perl 명령어를 쓸 수 있을 때에는 꽤 좋은 방법이 아닐까요.

 4. 환경 변수를 사용하는 방법

 어떤 의미 꽁수입니다. 다음의 예를 보기로 합시다.

===
01:#!/bin/sh
02:
03:yymmdd=`env TZ=JST+15 date '+%Y%m%d'`
04:
05:logfile="/var/www/logs/http-access_log"
06:mv ${logfile} ${logfile}-${yymmdd}
07:apachectl graceful
08:exit 0
===

 UNIX의 TZ환경 변수를 사용합니다. 일본 시간의 경우는 통상 TZ=JST-9 가 되고
있으니까, 이것을 24시간 이전으로 늦춥니다(JST+15=JST-9+24). 일시적으로 환경
변수를 변경하고 싶은 경우는, env 명령어를 사용합니다. 3째줄에서 전날의 날짜를
구하고 있습니다.

 일본 시간에서만 쓸 수 있는 스크립트이지만, 어찌보면 간단한 버젼입니다.


┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 끝에
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 2/7(토)에 「 제4회 오픈 소스 소프트웨어 세미나」에 참가하고 왔습니다.
강연 내용이 매우 재미있게 도움이 되었습니다. 친목회 뿐만이 아니라 2차회까지
참가했습니다.

 나 자신 인터넷에 관련되기 시작한 것이 다른 사람보다 빨랐기 때문이라고도
생각하지만, 현재 인터넷은 초기의 서로돕는 「상조회」적인 내용은 이미 퇴색되
었고, SPAM이나 바이러스에 오염되어 버리고 있습니다.
 내가 인터넷을 알았을 무렵은, NetNews에 쎈~ 분들이 널려있어서, 벌벌 하면서
투고하곤 했지만, 좋은 의미에서도 나쁜 의미에서도 바뀌어 왔어요.

 내 쪽으로 회장의 모습등을 정리해 보았습니다.
http://qmailsolutions.com/wiki/ 로부터 「 제4회 오픈 소스 소프트웨어
세미나」에의 링크를 더듬어 보세요. 

 선물은 「가는 국수 파이」를 사 왔습니다. 가방에 여유가 없었기 때문에,
포장판매가 편했다고 말하는 것이 이유라도 있었습니다만.「가는 국수 파이」는,
다음의 사이트를 잘 안고(?) 실려 있습니다.

 http://www.asahi-net.or.jp/~wf5t-hrd/nagoya/miyage/kisi_pai.htm

 다음 번 전달은,3/1(월) 전달 예정입니다.내용은, ~메뉴 형식에서 선택한다∼
의 예정입니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 코멘트 모집중입니다
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

「실전!셸 스크립트 교실」에서는, 여러분으로부터의 의문·질문·감상·요망을
모집하고 있습니다.

「여기를 이해하기 어려웠다」
「이런 일은 할 수 있는 거야?」
「이런 테마를 취급했으면 좋겠다」
「잘 움직이지 않는 셸 스크립트를 보았으면 좋겠다」

등, 부담없이 info@qmailsolutions.com 에 메일에서 부탁합니다.

받은 내용에 관해서는, 본문중에 인용하는 경우가 있습니다.
기본적으로 이름은 공개하지 않습니다만, 공개해 주었으면 한 경우는 그 취지 연락해 주십시오.


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
「실전!셸 스크립트 교실」(Vol.002)
(메일 매거진 ID:0000124615)

● 발행·편집: 요기길이2

● 감상·의문·질문 등
WEB http://qmailsolutions.com/shellscript/
메일 info@qmailsolutions.com

● 등록·해제·백 넘버
http://www.mag2.com/m/0000124615.htm

이 메일 매거진은 「마그마그!」를 이용해 발행하고 있습니다.

(C) 2004 YOGI George info@qmailosolutions.com

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
[번역|001] 실전! 셸 스크립트 교실  (Linux_Script)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=203

--------------------------------역자의변 --------------------------------
아래 문서는 "마그마그" (http://www.mag2.com)를 통해 발행되고 있는
"實踐!シェルスクリプト敎室" (실천! 셸 스크립트 교실)이라는 메일 매거진의
번역입니다.

유닉스 계열 서버 관리자들을 대상으로한 셸 스크립트 강좌입니다. 리눅스를
다루는 데에 셸 스크립트에 대한 지식이 유용한데도 이런 기초적인 강좌를
볼 수 없는 것 같아, 기계번역의 도움을 받아 저작자(요기상)의 허락없이(!)
올립니다.

내용에 대한 질문은 원저작자에게, 번역에 대한 질문은 번역자인 저
( daewon_yoon@hanmail.net )에게 부탁드립니다.

원문은 다음 url을 통해 읽을 수 있습니다.
http://backno.mag2.com/reader/Back?id=0000124615

이 번역물은
http://cafe.daum.net/joalinux -> 강좌
http://cafe.daum.net/withlearn -> 자유게시판
에 올리겠습니다.

주된 내용은 모두 읽어보고 바로잡겠지만, 잡담 부분엔 어색한 기계
번역이 남아있을 수 있습니다.
--------------------------------역자의변 끝--------------------------------


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2004.02.03
실전! 셸 스크립트 교실
http://qmailsolutions.com/shellscript/

━━━━━━━━━━━━━━━━━━━━━━━━━━ 창간호 (Vol.001) ━━

┌─────────────────────────────────┐
│ Linux, FreeBSD, Solaris 등 UNIX 서버 관리를 위해서는 셸 스크립트 │
│ 가 필수도구입니다.이 메일 매거진은, 실전적인 셸 스크립트를 소개 │
│ 하여 서버 관리자의 나날이 행복해지는 것을 목표로 합니다. │
└─────────────────────────────────┘

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ UNIX 서버 관리자 여러분! 셸 스크립트로부터 도망치고 있지 않습니까?
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

「언제나 사용하고 있는 툴이 사용하기 어려워」
「셸 스크립트는 어쩐지 어려울 것 같다」

시스템 관리 현장에 있으면, 그런 일이 자주 있습니다.
비슷비슷한 명령어를 하나하나 쳐서 입력했기 때문에 잘못한 적은 없습니까?

셸 스크립트는 어려운 것은 없습니다.요령만 알게되면 「확실하고」「오차없이」
목적하는 작업을 실행할 수 있습니다.「반드시」서버 관리자의 생활이
*** 행복하게 *** 될 수 있어요.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ INDEX
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 □ 자기 소개
 □ 추천 메일 매거진
 □ 전회의 복습
 □ Q&A코너
 □ 실전!셸 스크립트 교실 ~파일명에 날짜를 붙인다∼
 □ 끝에

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 자기 소개
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 처음 뵙겠습니다.「실전!셸 스크립트 교실」발행인 與儀丈二입니다.

 1972 년생입니다.성씨( 「요기」라고 말합니다)가 드물다고 말해집니다.
오키나와에는 그 나름대로 많은 성씨입니다.학년에서는 나를 포함해 대개 2~3명
있었습니다.

 지금은 도쿄에 살고 있습니다만, 출신은 오키나와현의 오키나와시라고 말하는
곳입니다. 오키나와시와 말하는 이름이 평범?이룰 수 있는 있어인가, 「나하와
어떻게 다른 거야?」라고 말해지는 일이 있습니다. 오키나와시는, 쇼와 49년에
코자시와 근처의 미사토무라가 합병해 할 수 있었습니다. 8월의 말이 되면
「에이서 축제」가 있습니다.

↓↓참고로 이런 느낌 입니다.↓↓
http://www.geocities.co.jp/SilkRoad/9613/koza/koza04.html

 덧붙여서 콘노구의 캠프 시즌입니다만, 오키나와시에는 히로시마가 와있습니다.

 일은, 프리랜서로 서버의 구축이나 서버에 관한 책의 집필을 하고 있습니다.
WEB/메일/DNS 서버등의 구축을 하는 것이 많습니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 추천 메일 매거진
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

●「Linux 의 지혜봉투 >>& 당신의 비밀집」

 Linux 의 기본 조작에 비법을 플러스 해 매주 신고.미공개의 비법이나 독자의 투고
 재료도 게재.초심자도 상급자 벌써 울릴 수 있었던 구, 그 Linux 자격인정시험의
필자가 쓰고 있습니다.
 
 http://www.u-waza.org/linux-tips/regist.html

 나 자신 UNIX의 관리자 경험으로서는 깁니다만, 문제 형식이 되어 있으면 의외로
 「어때?」(이)라는 느낌으로 기분빌려주어지는 것이 많은 메일 매거진입니다.

●「Linux 서버 관리자 경험을 만들자!」

 Linux로 DNS·WEB·MAIL 서버를 실제로 관리해 보는 「관리자 경험을 만든다」
 기획입니다.편입 Linux·RHCE·LPIC 재료도 넣어서 갑니다

 http://homepage3.nifty.com/sysaho/mag.html

 qmail의 설명이 회화 형식이 되고, 꽤 재미있습니다.스킬 업에 관한
 내용이 풍부합니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 전회의 복습
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 전회(창간 준비호)에서는,

   ~파일명을 한꺼번에 변경하고 싶다∼

 는 생각으로, 파일명을 한꺼번에 변경하는 방법을 소개했습니다.

 또, 현재 디렉토리상의 파일 뿐만이 아니라, 현재 디렉토리
이하의 파일 모든 것을 변경하기 위해서 find 명령어를 사용한 예도 소개
했다. 다음의 스크립트는 find 명령어를 사용한 예입니다.

--- 파일명을 "*htm" → "*html" 로 변경 ---
===
01:#!/bin/sh
02:
03:for file in `find ./ -name "*.htm"`
04:do
05: newfile=`echo ${file} | sed 's/htm$/html/'`
06: mv ${file} ${newfile}
07:done
===

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ Q&A코너
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 ~파일의 「내용」을 한꺼번에 변경하려면 ~

 전회 내용의 응용입니다.파일의 「이름」이아닌 「내용」을 한꺼번에 바꾸려면,
for 루프로 파일을 선택하는 것까지는 똑같고, 파일을 선택한 후의 처리만
조금 바뀌면 됩니다.

다음의 스크립트는, HTML 파일 안의 내용을 일괄적으로 변환하는 예입니다.

===
01:#!/bin/sh
02:
03:for file in `find ./ -name "*.html"`
04:do
05: sed 's#<img src="/logo.png" />#<img src="/images/logo.png" />#' ${file} > ${file}.tmp
06: mv ${file}.tmp ${file}
07:done
===

 5번줄에서 변경한 내용을 임시파일 (${file}. tmp)에 잠시 저장합니다. 6번줄에
변환한 일시파일을 원래의 파일에 덛어쓰고 있습니다. 또 실제변환에는 sed
명령어를 사용하고 있습니다만, "/" (slash)를 포함한 문자열을 변경하고 싶은
때는, 변환 패턴의 구분 문자로서 "#" (샤프)를 사용하면 번거롭게 "\/" 와 같이
이스케이프 문자를 쓰지 않아도 되기 때문에 편리합니다.

 나의 사이트는 태그 입력식 에디터(HTML Project 2)를 사용하고 있어서,
HTML 태그를 직접 입력해서 작성합니다만, 여러분의 사이트는 어떻습니까?

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 실전! 셸 스크립트 교실 ~파일명에 날짜를 붙인다∼
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 서버 관리자를 맡고 있으면, 로그 파일 등의 파일명에 날짜를 붙이는
일이 많아집니다. 명령어 라인상에서,

 「오늘은 2004/02/03 이니까...그래 access_log-20040203 로 하자」

이런 식으로 일을 하고 있지 않습니까? 다음 방법은, 로그 파일의 로테이션
프로그램을 작성할 때에는 참고가 된다고 생각합니다.

 날짜를 출력하려면, date 명령어를 사용하면 됩니다. date 명령어에는
포맷 출력 기능이 있습니다. 포맷 출력은,+(플러스)에 이어
%(퍼센트)로 시작되는 포맷 문자를 씁니다.

===
% date '+%Y/%m/%d %H:%M:%S'
2004/02/03 06:52:12
===

 주된 포맷 문자는 다음과 같습니다. 날짜는 소문자, 시각은 대문자라고
기억해 두면 좋을 것입니다.

%Y: 해(4자리수)
%y: 해(아래 2자리수)
%m: 달(2자리수)
%d: 일(2자리수)
%H:시간(2자리수)
%M: 분 (2자리수)
%S: 초(2자리수)

다음의 예는 아파치(apache)의 로그 파일을 로테이션 하는 예입니다.

===
01:#!/bin/sh
02:
03:logfile="/var/www/logs/http-access_log"
04:mv ${logfile} ${logfile}-`date '+%Y%m%d'`
05:apachectl graceful
06:exit 0
===

 4번줄에 파일을 변경할 때에,"http-access_log-20040203"와 같이 날짜명이
들어갑니다. 로그를 붙여바꾼 후에, 5번줄 "apachectl graceful" 로 새로운
로그파일을 오픈합니다.

◆◆ 응용편 ◆◆

 로그 그 자체는 0:00~23:59 를 단위로 하기 때문에, cron등을 이용해 스크
립트를 자동으로 실행할 시각으로 0:00 를 잡아 실시하게 됩니다.
 그런데 , 날짜가 넘어가면 "http-access_log-20040203" 라는 하는 파일명
에 전날(2004/02/02) 로그의 내용이 저장되어 버리기 때문에, 위 스크립트는
썩 좋다고 말할 수는 없습니다.

 여기서 「전날의 날짜 구하기」라는 처리가 필요하게 됩니다만, 이것에 대
해서는 다음 번의 메일 매거진에서 소개합니다. 당장 생각나는 것으론, 몇가
지 해법이있습니다. 여기에서는, 힌트를 소개해 둡니다.

=힌트=

 1. 셸상에서 계산하는 방법
 2. date 명령어를 사용하는 방법
 3. perl을 사용하는 방법
 4. 환경 변수를 이용하는 방법

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 끝에
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 이번 주 토요일에 「 제4회 오픈 소스 소프트웨어 세미나」를 참가하기 위해
나고야까지 다녀 오겠습니다. 강연의 감상이나 모습은, 다음 번 메일 매거진으
로 보고합니다.

 회장이 변경이 되어, 정원이 증가했습니다(50명→100명).
 ↓↓자세한 것은 이쪽↓↓
 http://wiki.tokai-ic.or.jp/hiki.cgi?OpenSourceSM4

 나고야에서 추천하는 선물은 무엇이지요? 선물 정보도 모집중입니다.

 다음 번 메일 매거진은, 2/17(화) 전달 예정입니다.

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃■ 코멘트 모집중입니다
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

「실전!셸 스크립트 교실」에서는, 여러분으로부터의 의문·질문·감상·요망을
모집하고 있습니다.

「여기를 이해하기 어려웠다」
「이런 일은 할 수 있는 거야?」
「이런 테마를 취급했으면 좋겠다」
「잘 움직이지 않는 셸 스크립트를 보았으면 좋겠다」

등, 부담없이 info@qmailsolutions.com 로 메일 부탁합니다.

받은 내용에 관해서는, 본문중에 인용하는 경우가 있습니다.
기본적으로 이름은 공개하지 않습니다만, 공개해 주었으면 한 경우는 그 취지
연락해 주십시오.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
「실전!셸 스크립트 교실」창간호(Vol.001)
(메일 매거진 ID:0000124615)

● 발행·편집: 與儀丈二

● 감상·의문·질문 등
WEB http://qmailsolutions.com/shellscript/
메일 info@qmailsolutions.com

● 등록·해제·백 넘버
http://www.mag2.com/m/0000124615.htm

이 메일 매거진은 「마그마그!」를 이용해 발행하고 있습니다.

(C) 2004 YOGI George info@qmailosolutions.com

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
[제로보드] 광고글 막기  (Homepage_제로보드) (2005/02/13 11:31 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=202

요즘들어 광고가 하도 많이 올라 오길래..광고를 막을 방법을 생각해 봤습니다...

index.htm 파일을 열고 (홈페이지열면  제일 처음에 보이는 페이지..)

제일 위에...

<? SetCookie ("nospam","snowin",time()+86400,"/","$HTTP_HOST"); ?>

이걸 써주세요..

그리고 제로보드 폴더 안에 write_ok.php 파일을 여시구요..

/***************************************************************************
* 게시판 설정 체크
**************************************************************************/ <= 요거 밑에다...

// 광고로봇 방지
        if(!$member[no]) {
        if ($nospam != "snowin") {
        Error("쿠키가 없네..너 어디로 들어 왔냐.?");
        }}

이렇게 써주세요..

snowin <= 요거는 자기만 아는 걸로 고쳐 주세요...혹시나 광고 로봇 만드는 넘들이...
               쿠키까지 만들어 글쓸지도 모르니...

광고로봇은 도메인/bbs/write.php?id=freebbs&name=111<= 요런식으로 글을 등록한다고 생각 하고..요런 꽁수를 부려 봤습니다..

광고로봇들은 메인페이지 안보고 바로 게시판에 가서 글을 쓸꺼라 생각 하고...
첫 화면을 본 사람들만 글을 쓸수 있게 한겁니다..

(첫페이지 보고 들어 오는 알바생들은 막을수 없습니다...ㅜ.ㅜ 나쁜넘들...)

제홈에서 사용중인데...일주일째..아직까지 광고는 올라 오지 않고 있습니다...아 좋다..ㅜ.ㅜ

중복 인가요..?? 음...설마 내머리에서 독창적인게..나올리가...ㅜ.ㅜ



***** 관리자님에 의해서 게시물 카테고리변경되었습니다 (2005-09-16 08:29)



***** 관리자님에 의해서 게시물 카테고리변경되었습니다 (2005-12-14 08:00)



***** 임헌정님에 의해서 게시물 카테고리변경되었습니다 (2005-12-21 07:54)
관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
리눅스 설정 파일  (Linux_명령어&설정) (2005/02/13 07:26 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=201





제목 없음




분류 및 사용법

Subodh Soni
IBM 소프트웨어 엔지니어
2001년 12월


이 글은 멀티 유저/멀티태스킹 환경에서 사용자 권한, 시스템 애플리케이션, 데몬, 서비스, 기타 관리 태스크 등을 제어하는 리눅스 시스템의 설정 파일을 설명하고 있다. 사용자 계정 관리, 디스크 할당, 이메일 및 뉴스그룹 관리, 커널 매개변수 설정 등이 태스크에 포함된다.

Introduction
모든 리눅스 프로그램은 특정 연산을 수행하기 위해서 CPU가 실행하는 opcode 리스트를 갖고 있는 실행 파일이다. 예를 들어, ls 명령어는 /bin/ls 파일이 제공한다. 이 파일은 현재 디렉토리에 있는 파일을 스크린상에 디스플레이 하는 데 필요한 머신 인스트럭션 리스트를 갖고 있다. 거의 모든 프로그램은 각자가 선호하는 대로 커스터마이징 할 수 있고 설정 파일 변경도 가능하다.


리눅스용 표준 설정 파일 포맷이 있는가?
한 마디로 말해서, 없다! 리눅스 초보 사용자들이라면 각각의 설정 파일들이 하나의 도전처럼 느껴질 것이다. 좌절감도 느낄 것이다. 리눅스에서 각 프로그래머는 자유롭게 원하는 대로 설정 파일 포맷을 선택할 수 있다. 포맷 옵션은 /etc/shells 파일에서부터 Apache의 복잡한 /etc/httpd.conf 파일 까지 다양하다.


시스템 설정 파일이란 무엇인가?
커널 그 자체는 "프로그램"이다. 커널에 설정 파일이 필요한 이유는? 커널은 시스템의 사용자와 그룹의 리스트를 알고 있어야 한다. 파일 권한도 관리해야 한다. 이러한 파일들은 프로그램에 의해 읽히지 않고 시스템 라이브러리의 함수에 의해 읽혀지며 커널에 의해 사용된다는 것에 주목하라. 예를 들어, 사용자의 (암호화된) 패스워드를 필요로 하는 프로그램은 /etc/passwd 파일을 열어서는 안된다. 대신, 시스템 라이브러리 함수인 getpw()를 호출해야 한다. 이러한 종류의 함수는 시스템 호출(system call)로 알려져 있다. /etc/passwd 파일을 열고 요청된 사용자의 패스워드를 찾는 것은 커널의 몫이다.


Red Hat Linux 시스템의 설정 파일 대부분은 /etc 디렉토리에 있다. 설정 파일들은 다음과 같은 카테고리로 광범위하게 구분된다:


액세스 파일














/etc/host.conf 네트워크 도메인 서버에게 호스트네임을 찾는 방법을 알려준다.
/etc/hosts 알려져 있는 호스트의 리스트를 포함하고 있다(로컬 네트워크 에서). 시스템의 IP가 동적으로 생성되지 않을 경우 사용될 수 있다.
/etc/hosts.allow hosts_access와 같은 Man page. tcpd에 의해 읽힌다.
/etc/hosts.deny hosts_access와 같은 Man page. tcpd에 의해 읽힌다.


부팅과 로그인/로그아웃




















/etc/issue & /etc/issue.net 이 파일들은 mingetty에 의해 읽혀져서 터미널 (issue) 또는 텔넷 세션(issue.net)을 통해 연결하는 사용자에게 "welcome" 스트링을 디스플레이 한다. Red Hat 릴리스 넘버, 이름, 커널 ID 등을 설명하는 라인이 포함되어 있다. rc.local에 의해 사용된다.
/etc/redhat-release Red Hat 릴리스 넘버와 이름을 설명하는 줄이 포함되어 있다. rc.local에 의해 사용된다.
/etc/rc.d/rc 인자로서 패스된 레벨과 함께 모든 런레벨을 위해 실행된다. 예를 들어, Graphics 모드 (X-Server)에서 머신을 부팅하기 위해서는 명령어 라인에서 다음의 명령어를 실행시켜야 한다: init 5. 런레벨 5는 그래픽 모드에서 시스템을 시작한다.
/etc/rc.d/rc.local 공식적인 것인 아니다. rc나 rc.sysinit, 또는 /etc/inittab로 부터 호출된다.
/etc/rc.d/rc.sysinit 모든 런레벨들을 위해 실행되는 첫 번째 스크립트.
/etc/rc.d/rc/rcX.d rc로 부터 실행되는 스크립트(X 는 1에서 5까지의 어떤 숫자도 될 수 있다). 이러한 디렉토리들은 "run-level" 스펙의 디렉토리이다. 시스템이 시작하면 이것은 런레벨이 초기화되었는지를 확인하고 해당 런레벨에 대한 특정 디렉토리에 있는 시작 스크립트를 호출한다.


파일시스템
커널은, 사용된 인터럽트, 초기화된 디바이스, 메모리 통계 같은 시스템 매개변수들을 결정하는 데 유용하게 사용되는 데이터 구조들을 디스플레이 하는 인터페이스를 제공한다. 이 인터페이스는 /proc filesystem 으로 알려진 더미 파일시스템을 제외하고는 개별적으로 제공된다. /proc/modules 파일은 시스템에서 포팅된 모듈을 목록화한다. 이 정보는 명령에 의해 읽혀서 인간이 읽을 수 있는 포맷으로 디스플레이 한다. 같은 방식으로, 아래 테이블에 지정된 mtab 파일은 /proc/mount 파일을 읽는다. 이 파일은 현재 마운트 된 파일 시스템을 포함하고 있다.










/etc/mtab /proc/mount 파일이 변경되면 이것도 지속적으로 변한다. 다시말해서, 파일시스템이 마운트 또는 언마운트 될 때 변경사항이 이 파일에 즉시 반영된다는 것을 의미한다.
/etc/fstab 컴퓨터에 현재 마운트 가능한 파일시스템을 목록을 보여준다. 컴퓨터가 부팅되면 이것은 mount -a 명령어를 실행하기 때문에 중요하다.
/etc/mtools.conf DOS 타입의 파일시스템에서 모든 연산 (mkdir, copy, format 등)에 대한 설정.


시스템 관리


























/etc/group 지정된 그룹에 포함된 유효한 그룹 이름과 사용자가 포함되어 있다. 다중 태스크를 수행하고 있다면 단일 사용자는 한 그룹 이상 있을 수 있다.
/etc/nologin /etc/nologin 파일이 존재한다면, login(1)은 root에게만 액세스를 허용한다. 다른 사용자들은 파일의 콘텐츠에 보여지고 로그인은 거부된다.
etc/passwd "man passwd"를 참조하라. 패스워드를 포함하여 사용자 계정 정보를 보유하고 있다.
/etc/rpmrc rpm 명령어 설정. 모든 rpm 명령행 옵션은 파일에 모두 세팅되어 어떤 rpm 명령어라도 시스템에서 실행될 때 모든 옵션이 전역으로 적용될 수 있도록 한다.
/etc/securetty root의 로그인이 허용된 tty 라인의 디바이스 이름들을 포함하고 있다.
/etc/usertty
/etc/shadow
사용자 계정과 패스워드에 대한 암호화된 패스워드 정보를 포함하고 있다. 다음의 필드들이 포함된다:

  • 로그인 이름
  • 암호화된 패스워드
  • 패스워드가 마지막으로 변경된 1970년 1월 1일 이후의 날들
  • 패스워드가 변경되기 전의 날들
  • 패스워드가 변경된 후의 날들
  • 패스워드가 종료되기 전의 날들
  • 계정을 사용할 수 없도록 패스워드가 종료된 후의 날들
  • 계정을 사용할 수 없는 1970년 1월 1일 이후의 날들
/etc/shells 시스템에 사용할 수 있는 쉘 리스트를 보유하고 있다.
/etc/motd 데이 메시지(day message); 관리자가 리눅스 서버의 모든 사용자들에게 특정 메시지를 전달할 때 사용됨.


네트워킹









































/etc/gated.conf gated를 위한 설정. gated 데몬에 의해서만 사용된다.
/etc/gated.version gated 데몬의 버전 넘버를 포함하고 있다.
/etc/gateway routed 데몬에 의해 선택적으로 사용된다.
/etc/networks 네트워크에서 머신이 연결된 곳 까지 액세스가 가능한 네트워크의 이름과 주소 목록을 보여준다. 명령어에 의해 사용된다. 네트워크 용 이름의 사용을 허용한다.
/etc/protocols 현재 사용가능한 프로토콜 목록을 보여준다. NAG (Network Administrators Guide)과 man page를 참조하라.
C 인터페이스는 getprotoent이다. 결코 변경해서는 안된다.
/etc/resolv.conf 프로그램이 IP 어드레스 해독을 요청할 때 커널에게 어떤 네임 서버가 쿼리되어야 하는지를 말해준다.
/etc/rpc NFS 호출에 사용될 수 있는 RPC와 원격 파일시스템 마운팅을 위한 인스트럭션 및 규칙이 포함되어 있다.
/etc/exports 익스포트 된 파일 시스템 (NFS)과 파일시스템 권한.
/etc/services 넘버/프로토콜을 포팅하기 위해 네트워크 서비스 이름을 변환한다. inetd, telnet, tcpdump, 기타 프로그램에 의해 읽힌다. C 액세스 루틴이 있다.
/etc/inetd.conf inetd용 config 파일. inetd man page를 참조하라. inetd가 데몬과 기타 서비스 제공자를 관리하는데 필요한 각 네트워크 서비스용 엔트리를 보유하고 있다. 서비스는 실행되겠지만 /etc/services에 있는 주석을 제거하여 실행중일 때에도 사용할 수 없도록 한다. Format:
/etc/sendmail.cf 메일 프로그램인 sendmail의 설정 파일.
/etc/sysconfig/network NETWORKING=yes 또는 no를 나타낸다. rc.sysinit에 의해 읽힌다.
/etc/sysconfig/network-scripts/if* Red Hat 네트워크 설정 스크립트.


시스템 명령어
시스템 명령어는 시스템을 관리하고 모든 작업을 적절히 수행할 수 있도록 한다. login 또는 bash와 같은 프로그램들은 모두 시스템 명령어이다. 그들과 연관된 파일들은 그래서 특별히 중요한 것이다. 다음은 사용자들과 관리자들이 관심을 가지고 있는 파일 목록들이다.











    








/etc/lilo.conf 시스템의 디폴트 부팅 명령어 라인 매개변수와 부팅에 사용되는 다양한 이미지를 포함하고 있다. LILO 프롬프트에서 Tab을 누르면 리스트를 볼 수 있다.
/etc/logrotate.conf /var/log 디렉토리의 로그 파일을 보관하고 있다.
/etc/identd.conf Identd는 RFC 1413 문서에 지정되어 있는 표준 IDENT 사용자 식별 프로토콜에 제안된 TCP/IP를 구현하는 서버이다. identd는 특정 TCP/IP 커넥션을 보고 커넥션을 소유한 프로세스의 사용자 이름을 리턴하면서 실행된다. 사용자 이름 대신에 다른 정보를 리턴하는 경우도 있다. identd man page를 참조하라.
/etc/ld.so.conf Dynamic Linker용 설정.
/etc/inittab 유닉스의 첫 번째 설정 파일이다. UNIX 머신이 켜진 후에 시작하는 첫 번째 프로그램은 init이다. inittab으로 인해서 무엇을 시작해야 할 지를 안다. 런레벨 변경 때 init에 의해 읽히고 메인 프로세스의 시작을 제어한다.
/etc/termcap 모든 가능한 터미널 타입과 기능을 포함하고 있는 데이터베이스.


데몬
데몬은 비대화형(non-interactive) 모드에서 실행하는 프로그램이다. 일반적으로 데몬 태스크는 네트워킹 분야와 관련이 있다: 연결을 기다렸다가 서비스를 제공한다. 웹서버에서 ftp 서버 까지 리눅스에 사용할 수 있는 많은 데몬들이 있다.





        




        
/etc/syslogd.conf syslogd 데몬 용 설정 파일. syslogd는 다른 프로그램에서 시스템으로 오는 메시지를 기록하는 데몬이다.

/etc/httpd.conf
Apache 웹서버 용 설정 파일. /etc에 파일은 존재하지 않는다. /usr/local/httpd/conf/나 /etc/httpd/conf/에 파일이 존재한다. 반드시 Apache 설치를 점검해야 한다.리눅스 시스템의 프록시 세팅을 변경하기 위해 수정될 수 있는 lynx.cfg 파일의 일부분이다. 이 세팅은 각각의 쉘에서 lynx를 실행하는 모든 사용자들에게 (디폴트로) 적용된다. 단, 사용자는 --cfg = "mylynx.cfg.을 지정하여 디폴트 설정 파일을 오버라이딩 하지 않아야 한다.

/etc/lynx.cfg의 프록시 세팅






.h1 proxy
.h2 HTTP_PROXY
.h2 HTTPS_PROXY
.h2 FTP_PROXY
.h2 GOPHER_PROXY
.h2 NEWS_PROXY
.h2 NNTP_PROXY
# Lynx version 2.2 and beyond supports the use of proxy servers that can act as
# firewall gateways and caching servers. They are preferable to the older
# gateway servers. Each protocol used by Lynx can be mapped separately using
# PROTOCOL_proxy environment variables (see Lynx Users Guide). If you have
# not set them externally, you can set them at run time via this configuration file.
# They will not override external settings. The no_proxy variable can be used
# to inhibit proxying to selected regions of the Web (see below). Note that on
# VMS these proxy variables are set as process logicals rather than symbols, to
# preserve lowercasing, and will outlive the Lynx image.
#
.ex 15
http_proxy:http://proxy3.in.ibm.com:80/
ftp_proxy:http://proxy3.in.ibm.com:80/
#http_proxy:http://penguin.in.ibm.com:8080
#ftp_proxy:http://penguin.in.ibm.com:8080/

.h2 NO_PROXY
# The no_proxy variable can be a comma-separated list of strings defining
# no-proxy zones in the DNS domain name space.  If a tail substring of the
# domain-path for a host matches one of these strings, transactions with that
# node will not be proxied.
.ex
no_proxy:demiurge.in.ibm.com, demiurge



설정 파일 변경하기
설정 파일을 변경할 때, 그 설정을 사용하는 프로그램이 시스템 관리자나 커널에 의해 제어되지 않을 경우 재시작해야 한다. 일반 사용자는 시스템 프로그램이나 데몬을 시작하거나 종료할 권한이 없다.


커널
커널에서 설정 파일을 변경하면 즉시 시스템에 영향을 미친다. 예를 들어, 사용자를 추가하기 위해서 passwd 파일을 변경하면 사용자는 변경된 것을 바로 사용할 수 있다. 또한 리눅스에는 /proc/sys 디렉토리에 튜닝 가능한 커널 매개변수가 있다. 이러한 모든 파일에 대한 쓰기 액세스는 수퍼유저에게만 주어진다; 다른 사용자들은 읽기 전용 액세스만 가능하다. 이 디렉토리에 있는 파일들은 리눅스 커널 소스와 같은 방식으로 구분된다. 이 디렉토리의 모든 파일은 시스템 퍼포먼스를 변경하기 위해 동적으로 수정될 수 있는 커널 데이터 구조를 나타낸다.


Note: 이 파일의 어떤 값을 변경하기 전에 시스템에 치명적인 손상을 피하기 위해 파일에 대한 모든 것을 숙지해야 한다.
/proc/sys/kernel/ 디렉토리의 파일들





























파일 이름

설명
threads-max 커널이 실행할 수 있는 최대 태스크의 수.
ctrl-alt-del 1 이면, 키 시퀀스를 눌러 시스템을 재부팅한다.
sysrq 1 이면, Alt-SysRq는 Active 이다.
osrelease 오퍼레이팅 시스템의 릴리스를 디스플레이 한다.
ostype 오퍼레이팅 시스템의 타입을 디스플레이 한다.
hostname 시스템의 호스트 이름.
domainname 시스템이 존재하고 있는 네트워크 도메인.
modprobe 시작할 때 modprobe가 자동으로 실행되어야 하는지와 필요한 모듈을 설정해야 하는지를 결정한다.


데몬과 시스템 프로그램
데몬은 뒤에서 조용히 태스크를 수행하는 프로그램이다. 일반적으로 ftpd (ftp server daemon), telnetd (telnet server daemon), syslogd (system logging daemon) 등이 있다. 어떤 데몬들은 실행중에 설정 파일을 자세하게 관찰하고 이것이 변경될 때 자동적으로 리로드(reload)한다. 하지만 대부분의 데몬들은 자동적으로 리로드 하지 않는다. 설정 파일이 변경되었다는 것과 리로드 해야 한다는 것을 알려야 한다. 서비스 명령어를 사용하는 서비스를 재시작하면 된다.


예를들어, 네트워크 설정을 변경했다면 다음과 같은 것을 만들어야 한다:
service network restart.


Note: 이 서비스들은 일반적으로 /etc/rc.d/init.d/* 디렉토리에 있는 스크립트들이다. 시스템이 부팅될 때 init에 의해 시작된다. 서비스를 재시작 하려면 다음과 같이 한다:
/etc/rc.d/init.d/ start | stop | status
시작, 종료, 상태는 이러한 스크립트들이 액션을 수행하는 인풋으로서 취하는 값이다.


사용자 프로그램
사용자 또는 시스템 프로그램은 시작할 때마다 설정 파일을 읽는다. 어떤 시스템 프로그램들은 컴퓨터가 켜질 때 스폰(spawn)되어 /etc/에 있는 설정파일에서 읽혀지는 것에 의존한다. 그래서, 사용자 프로그램이 시작되면 디폴트 설정은 /etc/ 디렉토리에 있는 파일에서 읽힌다. 나중에 사용자는 rc 와 . (dot) 파일을 사용하여 프로그램을 커스터마이징 할 수 있다.


사용자 설정 파일: . (dot) 파일과 rc 파일
지금까지, 프로그램들이 쉽게 설정되는 방법을 살펴보았다. 하지만 /etc/에서 프로그램이 설정되는 방식을 별로 좋아하지 않는 사용자가 있다면? "일반적인" 사용자는 /etc로 가서 설정 파일을 변경할 수 없다; 파일시스템의 관점에서 보면 root가 소유하고 있다! 이것이 바로 대부분의 사용자 프로그램들이 두 개의 설정 파일들을 정의하는 이유이다: 첫 번째는 /etc/에서 "시스템" 레벨로 다른 하나는 홈 디렉토리에 위치한 "개인적(private)" 레벨.


내 시스템의 경우 매우 유용한 wget 유틸리티를 설치했다. /etc/에는 /etc/wgetrc 파일이 있다. 홈 디렉토리에는 .wgetrc 파일이 있다. 이것은 커스터마이징 된 설정을 설명하고 있다. 다른 사용자들 역시 그들의 홈 디렉토리에 (/home/other) .wgetrc 파일이 있다; 물론 이 파일은 사용자가 wget 명령어를 실행할 때 읽혀질 것이다. 다시말해서, /etc/wgetrc 파일은 wget을 위한 "디폴트" 값을 제공한다. 그리고 /home/xxx/.wgetrc 파일은 특정 사용자를 위해 "커스터마이징" 목록을 보여준다. 어떤 프로그램들은 /etc/에 디폴트 설정 파일만을 가지고 있고 사용자가 이것을 커스터마이징 할 수 없도록 한다.


일반적으로 사용되는 rc와 . (dot) 파일






































































































Filename

Description
~/.bash_login "man bash"를 참조하라.
~/.bash_logout Look at "man bash"를 참조하라. 종료할 때 배쉬 로그인 쉘에 의해 소스를 받는다.
~/.bash_profile Sourced by bash login shells after /etc/profile 다음에 배쉬 로그인 쉘에 의해 소스를 받는다.
~/.bash_history 이전에 실행된 명령어 리스트.
~/.bashrc  "man bash"를 참조하라. BASH_ENV 또는 ENV가 세팅되지 않으면 비 대화형 쉘 소스는 없다.
~/.emacs 시작할 때 emacs에 의해 읽힌다.
~/.forward
이메일 주소를 포함하고 있다면 ~ 의 소유자에게 보낸 모든 메일은 그 이메일 주소로 포워딩된다.
~/.fvwmrc ~/.fvwm2rc fvwm과 fvwm2 (기본적인 X Window manager)용 설정 파일.
~/.hushlogin "man login"을 참조하라. 메일 노티스, 마지막 로그인 정보, MOD가 없는 "조용한" 로그인.
~/.mail.rc 메일 프로그램용 사용자 init 파일.
~/.ncftp/ ncftp 프로그램용 디렉토리; 북마크, 로그, 매크로, 선호 (preference), 트레이스 등이 포함된다. man ncftp를 참조하라.
~/.profile "man bash"를 참조하라. ~/.bash_profile과 ~/.bash_login이 존재하지 않으면 배쉬로 취급된다. Bourn-heritage 쉘에 의해 사용된다.
~/.pinerc Pine 설정
~/.muttrc Mutt 설정
~/.exrc vi의 설정을 제어한다.
~/.vimrc "Vim" 디폴트 설정 파일. .exrc와 같다.
~/.gtkrc GNOME 툴킷.
~/.kderc KDE 설정.
~/.netrc ftp용 디폴트 로그인 이름/패스워드.
~/.rhosts rsh, rlogin 등의 툴에 의해 사용된다. 호스트 위장이 쉽기 때문에 보안이 취약하다.

  1. 사용자 (~/의 소유자) 또는 수퍼유저가 소유해야 한다.
  2. 이 계정으로 사용자가 액세스한 호스트 목록을 나타낸다.
  3. 심볼릭 링크라면 무시된다.
~/.rpmrc "man rpm"를 참조하라. /etc/rpmrc이 없으면 rpm에 의해 읽힌다.
~/.signature 이 계정에서 보내진 메일에 자동적으로 첨부되는 메시지 텍스트.
~/.twmrc twm (The Window Manager) 설정 파일.
~/.xinitrc

시작할 때 X에 의해 읽힌다 (xinit 스크립트가 아니다). 대부분 몇 개의 progs를 실행한다.
Example: exec /usr/sbin/startkde 라인이 이 파일에 존재하면 startx 명령어가 이 계정으로 만들어질 때 KDE Window Manager는 시작된다.

~/.xmodmaprc 이 파일은 xmodmap 프로그램으로 전달되어 어떤 이름이라도 될 수 있다 (예를 들어, ~/.Xmodmap와 ~/.keymap.km).
~/.xserverrc 실행할 X를 찾을 수 있다면 X 서버로서 xinit에 의해 실행된다.
~/News/Sent-Message-IDs gnu용 디폴트 메일 히스토리 파일.
~/.Xauthority xdm 프로그램으로 읽히고 작성되어 권한을 핸들하는데 사용된다. X, xdm, xauth man page를 참조하라.
~/.Xdefaults,
~/.Xdefaults-hostname
호스트네임으로 시작하는 동안 X 애플리케이션에 의해 읽힌다.
~/.Xmodmap .xmodmaprc에 대한 포인트; 레드햇은 이 이름을 사용하는 .xinitrc가 있다.
~/.Xresources X 리소스 데이터베이스를 로딩하기 위해 xrdb로 전달된 파일 이름. 긴 .Xdefaults 파일을 읽는 애플리케이션이 필요가 없다.

~/mbox
오래된 사용자 메일.


참고자료





관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
페도라 에서 한글 사용  (Linux_일반) (2005/02/13 07:20 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=200

SSH 터미널에서 한글이 깨지는 거다. 게다가 이경우 vi 편집기도 이상 동작을 한다. 도저히 터미널에서 작업을 할 수가 없었다.



여러번의 또 삽질 끝에 알아내었다.



유니코드 utf-8 때문이었다. Fedora에서는 기본으로 한글코드를 (사실은 모든 코드다) utf-8을 사용한다. 그런데 이 코드가 문제가 많다. 정확히 말하면 코드에는 문제가 없겠지만, 이를 사용하는 다른 시스템들이 지원을 안하는 경우때문에 문제가 발생한다. 그래서 코드를 eucKR로 바꾸는 작업을 해주면 일반적으로 사용하는 경우 문제를 해결할 수 있다.

여러가지 방법이 있겠지만 대략 2가지 방법으로 해결이 가능하다고 한다. 그러나 나는 아래의 방법으로 문제를 해결했다.



== i18n 파일의 수정 ==

/etc/sysconfig/i18n 파일을 아래와 같이 수정한다.



#vi /etc/sysconfig/i18n


LANG="ko_KR.eucKR"
SUPPORTED="ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"




관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
서버 모니터링 툴의 강자, RRDtool 가이드  (Linux_일반) (2005/02/13 07:19 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=199

제 목 : 서버 모니터링 툴의 강자, RRDtool 가이드 (작성중. alpha 버전)
작성자 : 좋은진호(truefeel)
작성일 : 2003.9.22(월)~

그래픽 모니터링 툴인 RRDtool과 그 프론트엔드 툴 HotSaNIC의 설치, 운영가이드이다.

1. RRDtool의 이해
2. RRDtool 설치
3. HotSaNIC 설치
4. RRDtool 직접 다루기
5. 문제 해결
6. 이용 사례



1. RRDtool의 이해

RRDtool에 대해 들어가기 전에 먼저 MRTG 툴을 설명할 필요가 있을 듯 하다.
MRTG(Multi Router Traffic Grapher)는 이름에서도 드러난대로, SNMP 프로토콜을 사용하여
라우터를 거쳐가는 트래픽을 실시간 그래픽을 통해 모니터링하는데 가장 많이 사용한다.
이외에 시스템을 모니터링하는 여러 addon들이 있다.
DISK 사용량, CPU사용량, 메모리 사용량, 데몬, 세션 개수 등..
심지어는 P2P인 당나귀의 트래픽, 프락시 서버인 Squid 트래픽까지 실시간(실시간이라기
보다는 특정 시간간격으로 변화하여 보여준다는게 더 정확하지만)으로 웹에서 볼 수 있다.

RRDtool은 MRTG처럼 실시간 그래픽 모니터링 기능을 가지고 있으면서 보다 더 개선된 형태의
툴이다. 보다 빠르고 시스템 로드를 덜 잡아먹는다. 또한 MRTG의 제약이었던 2개 이상의 데이터를
하나의 그래픽을 통해 표시할 수 있다. 그래픽의 유연성(?)면에서도 단연 RRDtool이 압도한다.

[ MRTG로 트래픽 모니터링하는 화면 ]


[ RRDtool과 HotSaNIC으로 CPU 사용률을 모니터링하는 화면 ]


2. RRDtool 설치

RRDtool :
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/

RRDtool의 시스템 요구사항은 다음과 같다.

Perl 5.005 (컴파일시에 문제가 발생하면 더 최신 것을 설치해본다.)
GNU make
GNU gcc

위 RRDtool 사이트에서 최신 버전을 받아온다. /usr/local/rrdtool에 하는 것으로 가정한다.


# tar xvfz rrdtool-1.0.45.tar.gz
# cd rrdtool-1.0.45
# ./configure --prefix=/usr/local/rrdtool
# make install
# make site-perl-install
... 중략 ...
Installing /usr/lib/perl5/site_perl/5.8.0/RRDp.pm
Installing /usr/share/man/man3/RRDp.3pm
... 생략 ...


3. HotSaNIC 설치

HotSaNIC :
http://hotsanic.sourceforge.net/archive/

HotSaNIC은 RRDtool을 사용하는 툴로 시스템 통계정보를 그래프로 생성해준다.

* 시스템 요구 사항

- RRDtool
- iptables 또는 ipchains (네트워크 트래픽 통계용으로 쓰기 위함)

위 사이트에서 받은 최신 버전은 컴파일없이 환경설정만으로 바로 사용하므로
/usr/local에서 압축을 푼다.


# cd /usr/local
# tar xvf HotSaNIC-0-5-0-pre3.tgz ( HotSaNIC/ 디렉토리가 생성된다. )
# cd HotSaNIC



1) 제공하는 모듈

HotSaNIC은 어떤 모듈을 통해 시스템 통계를 제공하는지 알아보고,
그 모듈을 사용할 것인지 안할 것인지를 판단해보자.


---------   ----------------------------------------------------------- ---------------
모듈      처리하는 통계 정보                      truefeel의 권장
---------   ----------------------------------------------------------- ---------------
APCUSV    APC UPS의 현황 (apcaccess 툴 사용)             N
         (APC UPS를 사용하지 않고 또한 있더라도 서버와 연결하여

                    모니터링중이 아니라면 N)
APPS     데몬, 응용프로그램별 프로세스 현황                Y
          (프로세스 이름 별도 설정 필요)
DISKIO     각 HDD별(파티션별이 아님) 입출력                   Y
          (별도 설정 필요)
DNET     Distributed.Net관련 RC5, OGR, DES, CSC ???         N
NETWORKS  네트워크 트래픽 (별도 설정 필요)                     Y
PART    파티션별 사용량                                  Y
PING     지정한 서버로 ping time 결과 (ping서버 설정 필요)        ping할 서버가

                                                                                                            있다면
SENSORS CPU, 마더보드 등의 온도, 전압등의 수치              원하는대로
SHOUTCAST 지정한 서버와 포트로의 스트링 현황 (서버, 포트 설정 필요)  N
SYSTEM  시스템의 프로세스 수, CPU 사용률, load, 메모리 사용률, ...      Y
TRAFFIC  네트워크 인터페이스별(eth0, ...) 트래픽                   Y
        (SNMP를 통해 라우터나 다른 서버의 트래픽도 모니터링 가능,
         물론 이 때는 별도 설정 필요)
WORMS  웹로그 파일을 이용한 님다, 코드레드 등의 웜 공격 건수           Y
       (웹로그 경로 설정 필요. 문자열 지정으로 다른 웜 공격도 설정 가능)
--------- ----------------------------------------------------------- ----------------


2) setup.pl로 기본 환경 파일 생성

이제 setup.pl 으로 기본 환경 설정을 해보자.
과정은 길지만 간단하다. 모듈을 보고 Y로 할 것인, N로 할 것인지를 결정한다.
이 설정은 나중에 ./setup.pl으로 변경할 수 있으므로 맘 편하게 진행해라.
(반복되는 내용이라 메시지 중간중간 생략하였다.)


# ./setup.pl
Configuring modules:


Module found: APCUSV
----------------------------------------
Do you want to use this module ? (Y)es / (n)o > n

Module found: APPS
----------------------------------------
Do you want to use this module ? (Y)es / (n)o >
Do you want to show this module's graphs on the webpage ? (Y)es / (n)o >

... 중략 ...

Module found: DISKIO  ... 중략 ...
Module found: DNET   ... 중략 ...
Module found: NETWORKS
----------------------------------------
Do you want to use this module ? (Y)es / (n)o >
Do you want to show this module's graphs on the webpage ? (Y)es / (n)o >

setting up networks ...

Configuring local interfaces.
(i)nternal means an interface pointiong to your local machines (intranet)
(e)xternal means an interface connecten with the internet
(n)one means you don't want to account this interface.

Please answer these:
found: eth0 - (i)nternal, (e)xternal or (n)one ? e

found: lo - (i)nternal, (e)xternal or (n)one ? n

... 중략 ...

Module found: PART   ... 중략 ...
Module found: PING   ... 중략 ...
Module found: SENSORS  ... 중략 ...
Module found: SHOUTCAST ... 중략 ...
Module found: SYSTEM  ... 중략 ...
Module found: TRAFFIC
----------------------------------------
Do you want to use this module ? (Y)es / (n)o >
Do you want to show this module's graphs on the webpage ? (Y)es / (n)o >

setting up traffic ...

Configuring local interfaces. Please answer these:
found: eth0 - (y)es or (n)o ? y

found: lo - (y)es or (n)o ? n


Please check the settings file and adapt it to satisfy your needs.
If you have any interfaces slower than 100 MBit, please change the
corrosponding default values.

... 중략 ...

Module found: WORMS  ... 중략 ...
----------------------------------------
Ok.
Writing main settings ...
 checking for OS-type (current: not configured)
OSTYPE="Linux"
 checking path to "rrdtimer" (current: not configured)
DAEMONDIR="/usr/local/HotSaNIC"
 checking path to "rrdtool" (current: not configured)
the following possibilities have been detected:
0 /usr/bin
1 /usr/local/rrdtool/bin

which one shall i use (0=default ... 1) ? > 1 ( rrdtool이 2군데 설치된 경우이다.)
BINPATH="/usr/local/rrdtool/bin" (RRDtool 실행이 있는 디렉토리)
LOGDIR="$DAEMONDIR/var/log/"   (로그가 저장될 디렉토리)
PIDFILE="$DAEMONDIR/var/rrdtimer.pid"
DIAGRAMLOG="last"
LOGSIZE="200000"
LOGBACKUPS="5"
DEBUGLEVEL="-1"
STIME="120"
SCHEDULE_MIN="100"
SCHEDULE_MAX="200"
RUN="apcusv apps diskio dnet networks part ping sensors shoutcast system traffic worm
s"
WEBDIR="not configured"
WIDTH="600"
HEIGHT="200"
IMAGEFORMAT="gif"
SHOW="apcusv apps diskio dnet networks part ping sensors shoutcast system traffic wor
ms"
ORDER="traffic system part ping dnet sensors"
DTIME="15" (15분 간격으로 이미지를 갱신한다.)
CTIME="24" (24시간 간격으로 통계화면 메인에 표시될 작은 크기의 이미지를 갱신한다.)
 guessing convert method...
 checking for Image::Magick perl module... not found
 checking path to "convert" from ImageMagick (current: not configured)
detected: /usr/bin/convert
is this corrrect? (y)
 checking path to "snmpwalk" (current: not configured)
detected: /usr/bin/snmpwalk
is this corrrect? (y)
SNMPWALK="/usr/bin/snmpwalk"
 checking path to "snmpget" (current: not configured)
detected: /usr/bin/snmpget
is this corrrect? (y)
SNMPGET="/usr/bin/snmpget"
checking path to "snmpbulkwalk" (current: not configured)
detected: /usr/bin/snmpbulkwalk
is this corrrect? (y)
SNMPBULKWALK="/usr/bin/snmpbulkwalk"

--- Main settings generated. ---

Writing start/stop script "rrdgraph" ... Ok.

Now adapt all settings files to satisfy your needs.
They are all linked to the directory /var/settings .


3) 필요한 디렉토리 생성

이제 RRDtool의 웹용 이미지와 html이 저장될 디렉토리와 로그 파일 저장 디렉토리를 생성한다.
디폴트로 로그는 HoSaNIC 홈의 var/log에 생성된다.
(html 홈은 /usr/local/apache/htdocs/ 라고 가정)


# mkdir /usr/local/apache/htdocs/rrdtool
# mkdir var/log


4) 환경 파일의 주요 설정

HoSaNIC 홈/settings가 주 설정 파일이고
HoSaNIC 홈/modules/모듈명/settings는 각 모듈별 설정 파일이다.

주 settings 파일에서 주요 설정을 살펴보자.(반드시 확인할 것에 * 표시해둠)


# BINPATH  = rrdtool 실행 파일이 있는 경로 (*)
BINPATH="/usr/local/rrdtool/bin"

# LOGDIR   = HoSaNIC의 로그 파일 경로
# LOGSIZE  = 로그 파일 크기
# LOGBACKUPS = 지정한 개수만큼 로그는 로데이터션되어 백업된다.
#       로그 파일명은 HotSaNIC.log, HotSaNIC.log.1, ...
LOGDIR="$DAEMONDIR/var/log/"
LOGSIZE="200000"
LOGBACKUPS="5"

# RUN  = 실행할 모듈 목록 (*)
# SHOW = 웹페이지로 표시할 모듈 목록 (*)
# ORDER = 표시할 모듈의 순서를 지정(먼저 쓴 것부터 왼쪽에 표시함)
RUN="apps diskio networks part ping sensors system traffic"
SHOW="apps diskio networks part ping sensors system traffic"
ORDER="traffic system part ping sensors"

# WEBDIR   = 생성된 이미지, html이 저장될 디렉토리 (*)
# IMAGEFORMAT = 이미지 파일 형식 (gif 또는 png)
WEBDIR="/usr/local/apache/htdocs/rrdtool"
IMAGEFORMAT="gif"

# DTIME = 지정한 간격으로 이미지를 생성한다. (단위는 분)
# CTIME = 지정한 간격으로 모니터링 메인화면의 작은 이미지를 생성한다. (단위는 시간)
#     따라서 처음 설치한 후 지정한 시간내에 convert.pl 명령을 하지 않으면 메인화면의
#     이미지는 최소 지정 시간동안 볼 수 없다.
DTIME="15"
CTIME="24"

# CONVERTPATH = ImageMagick 를 사용하여 이미지를 생성한다. convert 경로를 지정한다.
CONVERTPATH="/usr/bin/convert"

# REFRESH = 지정한 초단위로 웹페이지를 리프레쉬해서 보여준다. 기본 300초(5분)
REFRESH="300"



각 모듈별 설정은 해당 디렉토리의 settings을 보면 자세히 설명이 되어 있다.
여기서는 ping, diskio, apps에 대해서만 예를 들어본다.

* ping 모듈 ( HoSaNIC홈/modules/ping/settings )

 192.168.123.15(파일서버)에 대해 ping을 한다면, 다음을 추가하면 된다.


HOST=192.168.123.15,File Server


 설정했는데 ping 이미지가 생성안된다면 '5. 문제해결'에 해결방법을 설명해뒀다.

* diskio 모듈 ( HoSaNIC홈/modules/ping/settings )

/proc/stat 에서 disk_io 라인을 살펴보면 다음과 같이 되어 있다.

disk_io: (2,0):(1,1,2,0,0) (3,0):(306090,39930,942826,266160,5212040)
(3,1):(55015,28746,1435800,26269,909568) (8,0):(50,50,253,0,0)

여기서 (3,0) = hda, (3,1) = hdb, (8,0) = sda를 각각 의미한다.
따라서 hda와 hdb의 disk 입출력을 보려면 다음과 같이 설정한다.


DEV=3_0,hda
DEV=3_1,hdb


* apps 모듈 ( HoSaNIC/modules/apps/settings )


APP=httpd,Apache
APP=sendmail,Sendmail
APP=mysqld,Mysql Server
APP=hanterm,hanterm
APP=xmms,xmms
APP=MozillaFirebird-bin,Mozilla Web Browser


5) 실행

자~ 이제 웹페이지를 생성하고 rrdgraph만 실행하면 모니터링할 수 있다.


# ./makeindex.pl
# ./rrdgraph start



이제 웹브라우저를 띄우고 보면 된다. 아직 이미지도 안나온는데 뭘 보라는 것일까?
최소 15분(settings의 DTIME)이 지내야 모듈내의 큰 이미지들이 생성되고
24시간(CTIME)이 지나면 메인의 작은 이미지가 보일 것이다.
24시간 전이라도 적당한 시기에 ./convert.pl을 실행하면 메인에서도 이미지를 볼 수 있다.

부팅할 때 자동으로 rrdgraph가 실행되록 하려면 어떻게 해야할까?
rrdgraph 스크립트를 /etc/rc.d/init.d 에 복사를 한 후 chkconfig로 서비스를 추가한다.


# cp rrdgraph /etc/rc.d/init.d
# chkconfig -add rrdgraph



4. RRDtool 직접 다루기

HoSaNIC은 이미 정해진 모듈을 통해서 RRDtool을 다루는 것이다.
이제 시스템관리자가 원하는 데이터를 RRDtool로 직접 조작하여 통계용 이미지를 생성하는
방법을 알아본다. 간단히 과정을 정리해보면.

- RRDtool용 자체 DB(일반적으로 .rrd로 지정)를 생성한다.(create) ->
- 데이터를 업데이트하거나 (update) 가져온다.(fetch) ->
- 이미지를 생성한다. (graph)

1) rrdtool 명령 익히기

DB 생성, 이미지 만드는 것은 모두 RRDtool홈/bin/rrdtool 명령을 통해서 한다.


* 형식 : rrdtool [명령] [명령 옵션...]
* 예  : rrdtool create coffeenix_status.rrd DS:....


rrdtool에서 사용 가능한 명령은 무엇이 있을까?


---------- -----------------------------------------------------------------------
명 령   설 명
---------- -----------------------------------------------------------------------
create   새로운 RRD DB를 만든다.
update   DB에 새 데이터를 저장한다.
graph    저장된 DB자료를 이용해서 이미지를 생성한다. (.gif 또는 .png)
dump    RRD DB의 데이터를 XML 포맷으로 뽑아준다.
restore   XML 포맷에서 RRD DB로 저장한다.
fetch    RRD DB에서 데이터를 얻어온다.
tune    RRD DB의 설정을 변경한다.
last    RRD DB의 최종 업데이트 시간을 알려준다.
info    RRD DB의 헤더 정보를 보여준다. (파일명, 최근업데이트일, 설정값...)
rrdresize  RRA 크기를 변경한다. 가능하면 사용하지 말기를
xport    RRD DB의 데이터를 XML 포맷으로 뽑아준다. (출력 포맷 지정)
---------- -----------------------------------------------------------------------


2) 샘플 DB 생성

3) 이미지 만들기

5. 문제 해결

1) HoSaNIC 로그 파일을 보니 Can't locate RRDs.pm in @INC (@INC contains... 오류가 있습니다.

  RRDtool 설치할 때 make site-perl-install 를 하지 않아 RRDs.pm 펄 모듈이
  설치되지 않아서 입니다.
  RRDtool 소스 디렉토리에 가서 make site-perl-install을 하세요.
 
2) makeindex.pl 실행할 때 다음 오류가 발행합니다.
  WEBDIR (path to HotSaNIC's output directory) does not exist.

  시스템 모니터링 결과가 저장될 웹디렉토리를 생성하지 않았다.
  위 글중 '3 - 3) 필요한 디렉토리 생성'을 확인해봐라.

3) 시간이 한참지났는데 ping 이미지가 생성이 안됩니다. 물론 ping설정은 했습니다.
  로그를 보니 Can't locate asm/unistd.ph in @INC (did you run h2ph?).. 가 있습니다.

  펄용 헤더 파일이 없기 때문입니다. 펄 헤더로 변환해주는 h2ph로 해결할 수 있습니다.

  cd /usr/include; h2ph -r -l .

6. 이용 사례

 

 
관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
나의 리눅스 관련 팁  (Linux_일반) (2005/02/13 07:17 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=198

제목 없음

리눅스를 사용하면서 내가 깜박 깜박 잊어버리는 자잘한 팁을 모았음. 검색이 어려우면 키워드로 검색할 것.

내용

  1. GUI
    1. DESKTOP X Window선택
    2. X Window에서 해상도 조절
    3. X window 해상도를 설정하려면
    4. ami실행 후 메뉴가 깨져 있을 때
    5. ami실행 후 한영키를 사용하고 싶은 경우
    6. 휠마우스에서 휠이 작동을 안할 때
    7. 원격에서 리모트서버의 X application실행시
    8. 폰트서버 설정
    9. KDE 3.x 버전에서 윈도우용 트루타입 폰트를 못 찾는 경우
    10. 한텀(hanterm) 타이틀바에 디렉토리 경로 보이게 하기
  2. Pacakge 관리
    1. RPM 관련 커맨드
    2. rpm package설치시 상호의존성이 얽혀있을 땐 한 command로 설치
    3. 필요없는 rpm지우기
    4. 레드헷 8.0에서 up2date 사용하기
  3. Network
    1. Network 설정 파일들
    2. 급하게 Network설정을 해야할 경우
    3. 하나의 랜카드에 여러개의 ip추가하기
    4. 열린 포트를 사용하는 프로세서를 확인하려면
    5. ping 무시하기
    6. TCP/IP속도 증가시키기
  4. VI
    1. vi 에디터 내에서 ^M을 입력하려면
    2. vi 에데터 내에서 ^M을 없애려면
    3. vi에서 라인끝 빈칸 지우기
    4. vi에서 벨소리 제거
    5. vi에디터에서 삭제/복사 간편하게
    6. vi에디터에서 어떤 문자열을 찾고자 할 때 대소문자 안가리게 하려면
    7. vi에디터에서 '숫자'만큼의 컬럼으로 이동
    8. vi에서 화면 나누기
    9. 파일 네비게이션
    10. vi내에서 파일 네비게이션 바 만들기
    11. 여러개의 파일 편집하기
    12. vi로 파일비교
    13. 잠시 쉘로 나가기
    14. vi에서 자동들여쓰기를 안하려면
    15. vim 의 syntax 기능에서 underline 없애기
    16. 윈도우에서 작성한 한글이 페도라2(Fedora Core2) 에서 깨져보일 때
  5. System 관리
    1. Swap공간을 알려주는 명령어 (process check)
    2. 현재 디렉토리가 차지하는 용량 보기
    3. run-level을 변경하려면
    4. CPU정보를 알고 싶다면
    5. MEM정보
    6. 특정 데몬이 띄워져 있는지 확인하려면
    7. 현재 구동중인 데몬을 트리형식으로 보려면
    8. 시스템 부하상태 보기
    9. shell을 vi 스타일로
    10. 최신 커널버전 알기
    11. prompt에 full path 표시를 하고싶다면
    12. log파일에서 내용만 지우기
    13. 현재 연결되어 있는 TCP port보기
    14. LILO에서 싱글부팅
    15. grub에서 싱글부팅
    16. 하위 디렉토리까지 문자열 검색하려면
    17. world writable file 찾기
    18. ext2에서 ext3로 업그레이드 하기
    19. logon기록을 보려면
    20. remote환경에 있는 윈도우 폴더 마운트하기
    21. 터미널에서 디렉토리, 파일 색상 변경
    22. 서브 디렉토리까지 한번에 생성
    23. alias 적용안하기
    24. 이동한 바로 직전의 디렉토리로
    25. 일정기간 동안 접근하지 않는 파일 삭제하기
    26. setuid가 설정된 루트쉘 검색
    27. MySQL Connection Failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) 에러가 나는 경우
    28. 특정 유저만 su 허락하기
    29. 작업중 로그인 막기
    30. 크기가 가장 큰 파일, 디렉토리 찾기
    31. 현재 디렉토리의 크기만을 파악할때
    32. 시스템 정보 감추기
    33. 메모리를 가장 많이 잡아먹는 프로세스 알아내기
    34. FTP로 들어온 사용자 확인하기
    35. 원하지 않는 사용자 죽이기
    36. 몇일 이상된 파일만 mv또는 cp
    37. 터미널에서 백스페이스를 누르면 ^H 와 같은 이상한 문자가 출력되는 현상
    38. 텔넷이나 ftp 외부 사용시 root로 접속 가능하게 하는 방법
    39. 여러 파일 안에 있는 내용중 특정단어를 바꾸고 싶을 때
    40. 윈도우 디렉토리 마운트후 한글 디렉토리가 깨져보일 때
    41. tail 명령어 활용
    42. shell prompt 변경하기
    43. kernel 파라미터 조정하기
    44. 사용자별 du -h 값 보기
    45. 하룻동안 만들어진 파일 검색하기
    46. apache 설정 파일 문법 오류 검색
    47. 레드햇 패키지 버전을 알고 싶을 때
    48. 새로운 배포본 설치를 위한 Multi LILO
    49. Rebooting 키 제한을 위한 설정
    50. 하드디스크 I/O 튜닝
    51. Core 파일 디버깅
    52. CPU부하와 메모리 사용 정보
    53. Fedora Core2에서 한글 인코딩 바꾸기
    54. Fedora2에서 한글man page 깨지는 현상에 대한 해결책

1 GUI

1.1 DESKTOP X Window선택

  #vi /etc/sysconfig/desktop 
    
     DESKTOP = "GNOME" or "KDE" 

1.2 X Window에서 해상도 조절

    CTRL + ALT + "+"(Num Lock key)
    CTRL + ALT + "-"

1.3 X window 해상도를 설정하려면

  /etc/X11/XF86Config-4  (symbolic link되어 있음) 
  Screen section의 MODE 
   "800*600" "1024*768" "1152*864" 

1.4 ami실행 후 메뉴가 깨져 있을 때

#export 해서 LANG 와 XMODIFIERS 변수를 확인하라.

1.5 ami실행 후 한영키를 사용하고 싶은 경우

/etc/X11/Xmodmap 파일에 다음을 추가시킨다.
! i386 and alpha  
keycode 22 = BackSpace  
keycode 107 = Delete  
keycode 121 = Hangul_Hanja  
keycode 122 = Hangul  
X를 재실행하거나 재실행시키고 싶지 않다면
#xmodmap /etc/X11/Xmodmap 을 실행

1.6 휠마우스에서 휠이 작동을 안할 때

휠기능을 작동시키려면  /etc/X11/XF86Config-4  를 수정한다.
Section "InputDevice" 
        Identifier  "Mouse0" 
        Driver      "mouse" 
        Option      "Protocol" "PS/2" 
        Option      "Device" "/dev/psaux" 
        Option      "ZAxisMapping" "4 5" 
        Option      "Emulate3Buttons" "yes" 
EndSection  
바로 이 부분
 Option   "Protocol" "PS/2"  이렇게
 Option   "Protocol" "IMPS/2"  고치면 휠을 사용할 수 있다.
만약 다음 부분
 Option      "ZAxisMapping" "4 5"  이 없다면 추가시킨다.

1.7 원격에서 리모트서버의 X application실행시

서버측: xhost +클라이언트ip (xhost + 는 모든 주소에 대해 원격접속 허용)
클라이언트측: export DISPLAY=서버ip:0.0

1.8 폰트서버 설정

클라이언트측에서 Xmanager를 이용해 리눅스 서버에 접근하려면 서버에 폰트서버가 실행되고 있어야 한다. 폰트서버는 xfs데몬을 말하는 것으로 그냥 띄우면 되고 단지 /etc/X11/XF86Config에서
FontPath "/usr/X11R6/lib/X11/fonts/TrueType" 
# FontPath "unix/:-1" 
FontPath "unix/:7100" 로 주석부분을 고쳐주면 된다. 그럼 7100포트가 열린다. 그리고 그서버와 포트를 지정하면 폰트서버가 타 x서버에서 사용가능하다.

1.9 KDE 3.x 버전에서 윈도우용 트루타입 폰트를 못 찾는 경우

from KLTP
최근에 나온 레드햇8을 쓰고 있는데요 윈도우용 폰트를 가져다 쓰고 있습니다. 그런데 KDE에서 새로 추가한 윈도우용 트루타입폰트를 찾지 못하는 문제가 있더군요. xfontsel에서도 인식하고 셋팅역시 제대로 되어서 GTK나 Motif로 만들어진 다른 어플리케이션에서는 모두 인식하나 KDE에서는 백묵 글꼴만 나오고 윈도 폰트는 아예글꼴 리스트에 나오지도 않더군요. 해결책이 딴데 있더군요.

KDE가 QT 라이브러리로 만들어진 것이라 "혹시 QT셋팅에 문제가 있는것은 아닐까" 라는 생각을 하고 Qt config를 살펴봤습니다. QT Config에 Anti aliase font지원을 꺼 봤더니 제대로 동작하더군요. 아마도 QT내지는 XFS 자체의 버그인 것 같습니다. 간단히 말씀드리자면 qtconfig3를 실행시켜 Font탭에서 Enable Anti-Aliased Font Support를 꺼 주시고 X를 재시작 하시면 윈도우용 굴림 폰트를 KDE에서 이용하실 수 있습니다. --Kid A

1.10 한텀(hanterm) 타이틀바에 디렉토리 경로 보이게 하기

자신의 .bash_profile에 다음을 추가하면 한텀의 타이틀바에 <사용자ID>@<호스트명>:<디렉토리명>의 형식으로 나타나게 된다.
function proml 
{ 
   case $TERM in 
     xterm*) 
     local TITLEBAR='\[\033]0;\u@\h:\w\007\]' 
              ;; 
              *) 
              local TITLEBAR='' 
              ;; 
     esac 
     PS1="${TITLEBAR}\n] \u@\h ]" 
} 
proml 

2 Pacakge 관리

2.1 RPM 관련 커맨드

    #rpm -qa : 현재 설치된 package출력
    #rpm -qil mtools | less : mtools에 관한 package정보
    #rpm -qif /etc/bashrc : /etc/bashrc파일이 속한 package

2.2 rpm package설치시 상호의존성이 얽혀있을 땐 한 command로 설치

  #rpm -Uvh [package1] [package2] [packag3] ....... 

    의존성을 무시하고자 할 땐 --nodeps option사용

2.3 필요없는 rpm지우기

    만약 MySQL을 설치 하였다고 하자.

MySQL-3.23.33-1.i386.rpm* MySQL-devel-3.23.33-1.i386.rpm*
MySQL-client-3.23.33-1.i386.rpm* MySQL-shared-3.23.33-1.i386.rpm*

그리고 이것을 지우려면 ?

rpm -e `rpm -qa | grep MySQL`  

또한 대소문자를 구분하지 못한다면?

rpm -e `rpm -qa | grep -i mysql`  
이라고 써도 된다.

이때 ` 기호는 숫자 1번 왼쪽에 있는 백쿼터이다.

패키지명과 버젼이 동일한 패키지가 여러개 존재할때 삭제하는 방법

rpm -e 패키지명 --allmatches 

2.4 레드헷 8.0에서 up2date 사용하기

from KLTP
레드헷 8.0 설치하고 up2date을 사용하려 하니 황당한 에러가 나와서 해결하고 나서 올립니다.
레드헷 8.0 에서는 설치후에 [일반관리자용] setup 에서 서비스 보시면, rhnsd 가 있는데 이거 활성화 시켜 주시고요..(그냥 참조용임) 바로 up2date --register 하시면 접속해서 등록해서 바로 사용할 수 있습니다.

/etc/rc.d/init.d/rhnsd restart 하시면 됩니다.

이후 up2date * 하시면 됩니다. 그런데, 이런 에러가 나오시는분....

There was an SSL error: [('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')]  
이게 SSL 에러냐.. 절대 아닙니당.. 저도 처음에 그런줄알고 패키지 문제 인줄 알고 의존성 찾아보고, 삽질했습니당.결국에 알아낸것은 시간이 일치 하지 않는 다는 결론을... 이건 구글에서 검색했는데, 누군가 시간차를 적어 놓았더군요... 혹시 해서...
rdate -s time.kriss.re.kr  
해서 다시, up2date --register 해보니... 헐 아주 잘 되네염... --박성훈

    time.kriss.re.kr은 사용하지 마세요. 제가 예전에 서버들 간의 시간동기화를 하기위해서 time.kriss.re.kr 사용했다가 아주 크게 쓴맛을 보았습니다. 표준연의 타임서버가 갑자기 죽고나서 정확한 시간으로 셋팅되는 것이 아니고 OS상에서 존재하는 가장 처음의 시간, 기억은 1960년대의 시간으로 셋팅 되는 바람에 중요한 데이터들간의 시간동기화에 문제가 생겨서 데이터를 몽땅 버린 적이 있습니다. 제가 추천하는 time 서버는 ntp를 사용하는 것입니다. time.datum.com, kr.public.ntp.get-time.net unix 계열의 OS에서는 ntp 관련 S/W를 설치하시면 됩니다. 그러면 이만... --익명

      이번에 레드헷 9.0을 설치하고 업데이트 하려고 하니 위으 에러메세지가 나오더군요! 그래서 시간을 동기화 했는데도 마찬가지 입니다. 그래서 레드헷 사이트에 가니 관련 RPM패키지를 받아 재설치 하라고 하네요 레드헷 사이트에 가서 새로운 up2date 관련 RPM을 받아 새로 설치 하시기 바랍니다. --호종기

3 Network

3.1 Network 설정 파일들

  /etc/hosts                                : localhost 및 server name 
  /etc/resolv.conf                          : name server 
  /etc/sysconfig/network                    : HOSTNAME 
  /etc/sysconfig/network-scripts/ifcfg-eth0 : IP, Netmask, Gateway등등 
설정이 끝났다면
 #/etc/rc.d/init.d/network restart  또는
 #service network retart 

3.2 급하게 Network설정을 해야할 경우

#ifconfig eth0 <ip_addr> netmask <netmask> up 
#route add default gw <gw> 
#cat > /etc/resolv.conf 
nameserver <DNS_addr> 
CTRL-D 
 
#ping dongwoo.org 

3.3 하나의 랜카드에 여러개의 ip추가하기

from KLTP
◎아이피추가는
1) ifconfig eth0:0 아이피 netmask 아이피 broadcast 아이피 up
2) cd /etc/sysconfig/network-scripts
3) /etc/sysconfig/network-scripts/에 있는 ifcfg-eth0을 복사, 파일명을 ifcfg-eth0:0
4) vi로 열어 Device=eth0:0, ipaddr=원하는 아이피 주소
5) ./ifup eth0:0
6) /etc/rc.d/init.d/network restart

계속 추가시에는 eth0:1, eth0:2....등등으로 한다. 재부팅해보고 ifconfig를 해봐서 추가되었는지 확인한다.

◎아이피 삭제는
1) ifconfig eth0:0 아이피 netmask 아이피 broadcast 아이피 down
2) cd /etc/sysconfig/network-scripts
3) rm ifcfg-eth0:0
4) /etc/rc.d/init.d/network restart

재부팅해보고 ifconfig해봐서 삭제되었는지 확인한다. 참고로 레드햇 8.0에서 셋팅함

3.4 열린 포트를 사용하는 프로세서를 확인하려면

    if #3306 port is opened

  #fuser -n tcp 3306    -> show PID 
  #ps -ef | grep [PID] 

3.5 ping 무시하기

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

3.6 TCP/IP속도 증가시키기

TCP/IP의 속도를 실제로 증가 시키는 것은 아니구요. 디폴트 값을 낮게 해서, 좀 더 많은 연결이 동시에 제어될 수 있도록 하는 방법이랍니다. 리눅스 박스가 연결을 닫는데 드는 시간을 줄여주고, 불안정한 열결을 끊기전에 시간을 줄여 줍니다. 또한 필요없는 IP 확장을 꺼 놓음으로서 체감 속도를 훨씬 빠르게 해 줄 것입니다.
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout  
echo 1800 >/proc/sys/net/ipv4/tcp_keepalive_time  
echo 0 > tcp_window_scaling  
echo 0 > tcp_sack  
echo 0 > tcp_timestamps  

4 VI

4.1 vi 에디터 내에서 ^M을 입력하려면

  CTRL + V --> CTRL + M 
               ^T ^] 은 각각 CTRL + T  CTRL + ] 

4.2 vi 에데터 내에서 ^M을 없애려면

   :0,%s/^M//g  (^M : CTRL-v, CTRL-m) 

4.3 vi에서 라인끝 빈칸 지우기

   :g/^$/d 

4.4 vi에서 벨소리 제거

    :set vb

4.5 vi에디터에서 삭제/복사 간편하게

  :10, 20d 
   10번째줄에 가서 ma 누르고 20번째줄에 가서 d'a (삭제)  y'a (복사)  
 
  :'a,.co. 
    'a부터 .까지 .밑에 copy 

4.6 vi에디터에서 어떤 문자열을 찾고자 할 때 대소문자 안가리게 하려면

    :set ic

4.7 vi에디터에서 '숫자'만큼의 컬럼으로 이동

    숫자|

4.8 vi에서 화면 나누기

   :split [file]  <-- 수평 
   :vs [file]     <-- 수직 
  
  화면간 이동을 하려면 CTRL + w , ijkl 

4.9 파일 네비게이션

    #vi ./ <--- 현재 디렉토리 내용을 네비게이션

4.10 vi내에서 파일 네비게이션 바 만들기

    :20vs ./

    열기를 원하는 파일에 가서 shitf + o

4.11 여러개의 파일 편집하기

   #vi file1 file2 file3 ..... 
 
  :n      <---- 뒤의 파일 편집으로 
  :e#     <---- 앞의 파일 편집으로 

4.12 vi로 파일비교

 #vi -d file1 file2 

4.13 잠시 쉘로 나가기

    CTRL + z

    다시 vi로
    #fg

4.14 vi에서 자동들여쓰기를 안하려면

    :se(t) nocindent
    :se(t) nosmartindent (nosi)
    "se(t) noautoindent (noai)

4.15 vim 의 syntax 기능에서 underline 없애기

리눅스에서 터미널을 열어서 vi 작업을 한다면 syntax 기능을 사용하는데 별다른 어려움이 없을것이다. 하지만 telnet 으로 접속해서 사용하는 경우에 color 를 표시할 수가 없는 경우엔 해당 syntax 가 보통 underline 으로 표시된다. 그런데 이 underline 때문에 소스코드를 보기가 힘들경우가 있다.

이 글에서 다룰 내용은 다음과 같다. highlight 기능 과 colorscheme 사용.

vi 를 연 상태에서

:sy[tax] on  

을 켠다. 여기서 [] 안의 내용은 옵션이다. 안써도 된다. 그리고 다음과 같이 하면 현재 사용하는 highlight 목록을 살펴 볼수 있다.

:hi[ghlight]  
이 색깔에 대한 정의는 다음에 정의 되어 있다.
:!echo $VIMRUNTIME/colors  
위 디렉토리 아래에 가보면 morning.vim, evening.vim 등의 파일들이 보이는데 각각 color scheme 를 정의해 놓은 파일들이다. 다른 color scheme 로 바꾸고 싶다면 다음과 같이 한다.
:colorscheme evening  
여기서 evening 는 scheme 이름이다.
그럼 이제 underline 을 없애도록 하겠다. 현재 telnet 접속하여 vim 을 사용하고 있다는 가정하에 하는 것이다. 콘솔에서 사용하는 사람은 대개 underline 이 나오지 않을것이다.
:hi  
위와 같이 하면 다음과 같이 출력이 된다.
Type term=underline ctermfg=2  
Constant term=underline ctermfg=4 guifg=Magenta  
여기서 Type 이라고 쓰여진 첫 필드는 group-name 이다. 만약 당신이 C 코드를 열고 있다면 Type 은 말그대로 char, int, float... 등과 같은 Type 이다. term 은 color 를 표시할 수 없는 터미널이다. term 에선 underline 으로 표시하겠다는 뜻이다. ctermfg 는 color terminal 이다. fg 는 foreground 이다. 번호는 색깔을 나타낸다. 즉, color 를 표시할 수 있는 터미널에선 2번 컬러로 Type 을 표시한다. 색깔은 숫자가 아니라 직접 명시를 할 수도 있다. ctermfg=blue 이런식이다. 그럼 상수를 표시할때 term 에선 bold 로 표시하도록 해보자.
:hi Constant term=bold ctermfg=4  
아무런 설정도 하고 싶지 않다면 bold 대신에 NONE 라고 사용하면 된다.

위와 같은 설정들은 ~/.vimrc 에 저장하여 사용할 수도 있다.

shell> cat -n ~/.vimrc  
 
1 set ic  
2 set nu  
3 set softtabstop=4  
4 set shiftwidth=4  
5 set formatoptions=croql  
6 set ruler  
7 set showmode  
8 set smartindent  
9 syntax on  
10 filetype indent on  
11 map <F2> :w<cr>:!gcc -Wall % -o %< && ./%<<cr>  
12 map <F3> :<CR>:!./%<<CR>  
13 map <F4> :so $VIMRUNTIME/syntax/2html.vim<CR>  
14  
15 colorscheme pablo  
16 hi Type term=NONE ctermfg=2  
17 hi PreProc term=NONE ctermfg=10  
18 hi LineNr term=NONE ctermfg=6  
19 hi Constant term=NONE ctermfg=14  
15번째 라인부터가 highlight 설정이다. 1번째 라인부터 10번째 라인은 기본적인 설정들에 대한 내용이다. 11번째에서 13번째 라인은 mapping 기능으로 <F2> 를 누르면 C 코드를 컴파일 한후 실행하고 <F3> 를 누르면 컴파일된 바이너리를 실행만 한다. <F4> 를 누르면 현재 파일을 HTML 파일로 변환하여 준다. --linox

4.16 윈도우에서 작성한 한글이 페도라2(Fedora Core2) 에서 깨져보일 때

윈도우에서 작성한 문서를 페도라2에서 열어보면 한글이 다 깨져보이는 수가 있다. 이는 encoding 차이때문인데 윈도우에서 저장한 파일은 기본적으로 euckr로 인코딩된다. Fedora Core2는 utf-8방식을 사용하기 때문에 파일을 컨버전해야 한다. 방법은 2가지다

1. 파일을 utf-8로 인코딩함

$iconv -f euckr -t utf-8 a.euckr.txt > a.utf-8.txt 

2. 에디터 프로그램의 보기에서 encoding을 euckr로 바꿔준다. (vi는 지원함)

5 System 관리

5.1 Swap공간을 알려주는 명령어 (process check)

    #top

5.2 현재 디렉토리가 차지하는 용량 보기

    # du -s -h

5.3 run-level을 변경하려면

    #telinit 5

5.4 CPU정보를 알고 싶다면

    #arch

5.5 MEM정보

    #free

5.6 특정 데몬이 띄워져 있는지 확인하려면

    #ps aux | grep httpd

5.7 현재 구동중인 데몬을 트리형식으로 보려면

    #pstree

5.8 시스템 부하상태 보기

    #uptime

5.9 shell을 vi 스타일로

    #set -o vi

5.10 최신 커널버전 알기

    #finger @finger.kernel.org
    #finger @kernel.org

5.11 prompt에 full path 표시를 하고싶다면

  #vi /etc/bashrc 
 
  PS1 = [ ..... ] 
  \U  : User 
  \h  : Host 
  \W  : 사용자가 위치하는 경로의 최 하위디렉토리 
 여기서 \W -> \w 

5.12 log파일에서 내용만 지우기

    #>log_file

5.13 현재 연결되어 있는 TCP port보기

    #netstat -t (-nlt : 열려있는 포트확인)

5.14 LILO에서 싱글부팅

    #vmlinuz root=/dev/hda9 single : /dev/hda9에 리눅스로 single booting

5.15 grub에서 싱글부팅

- grub메뉴에서 e를 누릅니다. (edit) 
- edit 화면에서 화살표키로 "kernel /boot/vmlinuz-xxxx" 로 옴깁니다. 
- 다시 e키를 누르면 명령어 줄이 나옵니다. 끝에 한칸띄우고 single이라 고 적고 
enter를 누릅니다. 
kernel /boot/vmlinuz-2.2.17-5mz /dev/hdax single [enter] 
- 하시고, b를 눌러서 booting을 합니다. 

5.16 하위 디렉토리까지 문자열 검색하려면

  grep -rl [문자열] * 

    r 옵션이 없다면

  find . * -exec grep -n [문자열] {}\; -print 

    더 짧고도 효과적인 방법

     grep "string"'find . -type ' 
     
    그런데 이는 조건에 맞는 파일의 개수가 많아지면 쉘의 명령행 버퍼의 범위를 벗어나므로 문제가될 소지가 있다. 명령행 버퍼의 오버플로우를 방지하기 위해선 다음과 같이 하면 된다.
     find . -type f | xargs grep "string" 
     
    그런데 이 방법은 파일 이름에 공백이 들어갈 경우 문제가 생길 수 있다. 그럼 다음과 같이 해보자.
     find . -type f -print0 | xargs -0 grep "string" 
     
    find는 심볼릭 링크된 디렉토리에 대해서는 기본적으로 검색을 실시하지 않으니 -follow옵션을 사용해야할 경우도 있다는 것을 알아둔다.

      명령행 버퍼오버플로우를 방지하는 방법은 다음과 같은 방법도 있다.

        find . -type f -exec grep -l"string" {}\; 
        
      grep에서 '-l'옵션은 string을 포함하는 파일명을 나타내준다. 이런 검색을 특정 파일들에 대해서 행하기 위해서는 -type와 -name옵션을 쓸 수 있다.
        find . \(-type f -name "*\.html"\) -exec grep -l "string" {}\; 
        
      이것은 html의 확장자를 가지는 모든 파일에 대해서 "string"을 포함하는지 알아보고 포함하고 있는 파일명을 출력해준다.

위의 방법들은 "어떻게 서브디렉토리에 있는 파일들에 대해서 grep을 실행해줄 수 있는가?"하는 문제에 관한 여러 가지 방법들은 매우 유용하긴 하지만 검색을 실시하는 디렉토리에 바이너리 파일이 있을 경우에는 터미널을 제어하지 못하는 문제가 생길 수 있다. 왜냐하면 바이너리 파일의 몇몇 제어 문자들(Control Characters)이 터미널을 그래픽 모드로 바꿔놓을 수 있기 때문이다. 물론 이렇게 되었을 경우 터미널을 다시 바로잡는 방법이 있긴 하지만 아무래도 가장 좋은 방법은 그러한 일이 없도록 처음부터 방지하는 것이 가장 좋을 것이다.
이제 화면에 찍혀나올 수 없는 문자들을 모두 없애보자. 어쨌든 읽을 수는 없지만 다음과 같은 명령을 내려보라.

sed -e 's/[^-~][^-~]*//g' 
이 명령은 화면에 출력될 수 없는 (제어) 문자들을 그냥 스페이스들로 바꿔 버린다. 이 명령은 파이프를 이용하여 쉽게 다른 명령어들과 결합해서 사용할 수 있다. 여기 간단한 쉘 스크립트가 있다. 이것을 grepfind라고 이름붙여서 사용할 수 있다.
#!/bin/sh 
#save this in a file called grepfind and do a "chmod 755 grepfind" 
# 
if test $@ = 0 -o "$1" = "-h" -o "$1" = "-help" ; then 
echo 'grepfind  ─ recursively descends directories and egrep all files ' 
echo  
echo 'Usage: grepfind [-help][-h](start_directory] egrep_search_pattern' 
echo 
echo 'The surrent directory is used as start_directory if parameter' 
echo 'start_directory is omitted. The search is case insensitive.' 
echo 'Multiple occurrences of control characters are replaced by a single' 
echo 'space. This makes it possible to grep around in files that contain' 
echo 'binary data and strings without setting the terminal accidently' 
echo 'to graphics mode.' 
echo 
echo 'Example : grepfind/home "hello world" 
else 
if ["$2" = "" ];then 
find . -type f -exec egrep -i "$1" /dev/null {} \;|sed -e 's/[^-~][^-~]*//g' 
else 
if [-d "$1" ] ;then 
  find $1 -type f -exec egrep -i "$2" /dev/null {} \;|sed -e 's/[^-~][^-~]*//g' 
else 
  echo "ERROR: $1 is not a directory" 
fi 
fi 
fi 
#_END_OF_grepfind 

5.17 world writable file 찾기

  #find / -type f -perm -2 -exec ls -lg {} \; 

    world writable directory 찾기

  #find / -type d -perm -2 -exec ls -ldg {} \; 

5.18 ext2에서 ext3로 업그레이드 하기

  #mke2fs   -j /dev/hda[X] (X: disk number) 
  #tune2fs     " 
   
  ext3에서 ext2로 다운그레이드 하기 
  #debugfs 
  #open -f -w /dev/hda[X] 
   features 
   features -has_journal -needs_recovery 
   quit 

5.19 logon기록을 보려면

    #last

5.20 remote환경에 있는 윈도우 폴더 마운트하기

    /etc/fstab 에 물론 마운트 정보 입력

  //win_pc/win_folder /linux/mount/point smbfs user,noauto,username=Winuser_name 0 0 

5.21 터미널에서 디렉토리, 파일 색상 변경

    /etc/DIR_COLORS

5.22 서브 디렉토리까지 한번에 생성

    mkdir -p sub/sub1/sub2/ ....

5.23 alias 적용안하기

  #\rm file1 
  쉘을 빠져나가기까지 alias를 적용 안하려면 
  #unalias rm 

5.24 이동한 바로 직전의 디렉토리로

    #cd -

5.25 일정기간 동안 접근하지 않는 파일 삭제하기

$find /var/spool/mail -atime +5 -exec rm {} \;   
       <--- /var/spool/mail 아래 있는 디렉토리에서 5일동안 접근하지 않는 파일(-atime +5)은  
            삭제하라는 명령어 
혹은 3일 이전의 파일을 지우고자 한다면
$find /tmp/log/ -mtime +7 -exec rm -rf {} \;  

5.26 setuid가 설정된 루트쉘 검색

  #find . -user root -perm 4755 -print  
    그렇게 되면 4755 퍼미션이 아니면 문제가 생길 것이다. 이런 경우에는 다음과 같이 명령을 내린다.  
 
  #ls -alR / |grep rws  
  #ls -alR / | grep r-s  
  #ls -alR / |grep -- --s  
    이렇게 하면 루트 쉘을 찾아낼 수 있다.  

5.27 MySQL Connection Failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) 에러가 나는 경우

MySQL 데몬 프로세스가 돌아가지 않는 것이며 최신 버전은 ./safe_mysqld -u & 해서 실행해야한다.

    그럼에도 불구하고 sql 데몬이 실행이 안되고 /var/log/mysql.log에 다음과 같은 메시지가 표출될 경우가 있다.

     040720 15:57:28  /usr/libexec/mysqld: Table 'mysql.host' doesn't exist 
     040720 15:57:28  mysqld ended 
     
    이것은 DB를 설치하고 data base를 생성하지 않았기 때문이다. 다음의 커맨드로 DB를 생성시키도록 한다.
      $mysql_install_db 
     
    mysql이라는 DB를 생성하고 그 안에 user와 host 정보를 가지게 된다. 그럼에도 에러가 나타난다면 퍼미션 문제일 가능성이 크다. /var/lib/mysql안의 내용을 mysql 소유자로 권한을 변경시켜서 데몬을 구동시켜 본다.
     $chown -R mysql.mysql /var/lib/mysql 
     

5.28 특정 유저만 su 허락하기

. 휠 그룹에 등록

 vi /etc/group ------------   wheel:x:10:root,wantedid 

2. su 권한 제한

chgrp wheel /bin/su 
chmoe 4770 /bin/su 

5.29 작업중 로그인 막기

시스템을 공사중일 때, root 이외의 다른 사용자를 로그인 못하게 해야 할 때가 있죠?
그럴 때는, /etc/nologin 이라는 파일을 만들어,
공사중 또는 Under Construction이라는 공지를 넣으면 됩니다.

5.30 크기가 가장 큰 파일, 디렉토리 찾기

가장 큰 디렉토리를 찾으려면,
du -S | sort -n 

가장 큰 파일을 찾으려면,

ls -lR | sort +4n 

5.31 현재 디렉토리의 크기만을 파악할때

[root@dev2 local]# du -c -h --max-depth=0 * 
6.4M apache 
35M bin 
43M dns 
1.7M doc 
42k etc 
1.0k games 
42k geektalkd 
1.1M gnuws 
1.1M include 
41k info 
19M jakarta-tomcat-3.2.3 
0 jre 
15M jre118_v3 
25M lib 
62k libexec 
1011k man 
1.3M mm.mysql.jdbc-1.2c 
937k sbin 
3.8M share 
1.8M shoutcast-1-8-3-linux-glibc6 
5.2M ssl 
159M total 

5.32 시스템 정보 감추기

/etc/inetd.conf 파일을 열어서,
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h 

5.33 메모리를 가장 많이 잡아먹는 프로세스 알아내기

ps -aux | sort +4n 
또는
ps -aux | sort +5n 

5.34 FTP로 들어온 사용자 확인하기

ftpwho
ftpcount

5.35 원하지 않는 사용자 죽이기

[root@dream /root]# skill -KILL sunny 
위의 명령을 내리면 sunny 라는 사용자를 완전히 추방시킬수 있습니다.
그런데 이렇게 완전히 추방시키는게 아니구, 특정 터미널에 접속해있는 사용자만 추방시켜야 할 때도 있겠죠?
그럴때는
[root@dream /root]# skill -KILL -v pts/14 
이런식으로 하면 된다 그럼 pts/14 에 연결되어 있는 사용자가 죽게 됩니다.

5.36 몇일 이상된 파일만 mv또는 cp

#find ./ -mtime +10 | awk ' { print "mv "$1" ./babo" } ' | sh 
find의 -mtime +10은 수정된지 10일 이상인 것만 찾는다. 이것을 이용해 나온 파일들을 ./babo 디렉토리 아래로 move

5.37 터미널에서 백스페이스를 누르면 ^H 와 같은 이상한 문자가 출력되는 현상

이 문제는 터미널에서 백스페이스를 어떠한 방식으로 인식하느냐의 문제에서 발생한다. 일반적으로 백스페이스는 ^?^H로 나타내어지는데 터미널에서 ^H만을 백스페이스로 간주한다면, 이와 같은 문제가 발생하게 됩니다. 보통 그 자리에서 CTRL + h를 백스페이스 대용으로 써도 되고 export TERM="vt100" 로 터미널을 설정해도 되고 stty erase ^H 로 키보드 입력값을 조정해도 된다.

5.38 텔넷이나 ftp 외부 사용시 root로 접속 가능하게 하는 방법

레드헷계열은 공통이다.

telnet
/etc/securetty
이파일은 root가 로그인가능한 터미널(tty)장치들을 나열해 둔 것이다.
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8

이 장치명은 가상터미널을 의미하는 것으로 root로 이런 가상터미널을 통한 접속이 허용된다는 것을뜻한다. 그리고
ttyp0
ttyp1
ttyp2
ttyp3

등은 pseudo 터미널을 통해서 root의 접속이 가능함을 뜻하므로 원격지에서 root로 접속을 막으려면 다음설정과 같이 이 pseudo터미널을 모두 주석처리하면 된다. 그리고, 이 /etc/securetty파일에 다음과 같은 것을 볼 수도 있을 것입니다.
ttyS0
ttyS1
ttyS2
ttyS3

등은 시리얼라인 또는 모뎀을 통한 root의 접속을 허용한다는 것을 뜻한다.

FTP
나의 경우 ProFtp 를 사용하고 있는데 proftp 의 경우 루트접속을 가능케 하려면 /etc/proftpd/ftpusers 파일을 여어서 root 를 주석처리해주면 된다.

SSH
나는 텔넷은 사용하지 않고 ssh 을 열어두고있다. 텔넷보다는 보안상 좀더 안정적이라고할수있겠다. ssh 의 경우 7.1 버전까지는 기본적으로 root 접속이 가능하다. 하지만 7.3버전에서는 접속이 안되니 ssh 에서 루트 접속이 가능하게하려면 ssh 설정파일인 /etc/ssh/sshd_config 파일을 열어서 PermitRootLogin 부분을 yes 로 해주시면 된다.

PermitRootLogin yes

5.39 여러 파일 안에 있는 내용중 특정단어를 바꾸고 싶을 때

1. $ sed -e 's/aaaa/bbbb/g' < a.php > b.php
하면 b.php 로 바뀐 파일이 나온다네요

2. find 와 perl 의 조합으로 가능합니다.
find / -name 'aaa.php' -type f -exec perl -pi -e 's/aaa/bbb/g' {} \;

3. 하위 디렉토리까지 찾아서 파일 내의 특정한 내용을 바꾸는 명령입니다.
find . -name *.html | awk '{ print "cat "$1" | sed \"s/바꾸고싶은말/바뀔말/g\" >"$1 }' | sh

저는 이런식으로 하고 있습니다..
find . -name *.html -exec perl -pi -e 's/바뀌고/바뀔/g' {}\;  위에서 찾을때 '*.html' 식으로 해야할 수도 있다.

5.40 윈도우 디렉토리 마운트후 한글 디렉토리가 깨져보일 때

윈도우 디렉토리를 그냥 마운트하면 한글로 된 파일이나 디렉토리가 ??로 나타나게 된다. 이때 다음과 같이 마운트를 하면 한글 디렉토리가 제대로 보인다.
#mount -t vfat -o iocharset=cp949 /dev/hd* /mnt/win 

5.41 tail 명령어 활용

# tail 
man tail 로 자세한 사용법을 알 수 있다. 가장 많이 사용하는 옵션으로는 -f 가 있는데 기본적으로 끝에서 10 줄까지를 보여준다. tail 은 계속 크기가 변하는 파일을 모니터링 할때 유용한 명령어인데 보안적으로나 기타 여러가지에 있어서 아주 유용한 명령어이다. 실제 본인이 보안 프로젝트를 하면서 tail 은 상당히 강조를 했다.
tail -f /var/log/messages 
messages 파일은 누가 뭐라고 해도 가장 중요한 log 파일이다. 실제 항상 실행시켜놓고 있는 명령어이다. 또한 몇몇 중요한 log 파일들이 있는데 secure, xferlog 등등이 있는데 /etc/syslog.conf 파일에서 모든 log 를 한 파일로 남기게 해서 하나의 파일만 모니터링을 하고 있으면 좋을 것이다.
일단 sendmail 이 시작되지 않을 경우를 예를 들어 보자. 창을 두개을 열고 하나의 창에서 tail -f /var/log/maillog를 실행한다. 그리고 다른 창에서 sendmail 을 재시작 시켜보자. 그러면 tail -f 를 실행한 곳에서 maillog 에 기록되는 상황이 계속 출력이 될것이다. 이것을 이용하면 에러 대처에 많은 도움이 될수 있을 것이다.

tail 명령어에서 두번째로 많이 쓰는 옵션은 -n 일 것이다.
-n 옵션은 원하는 수 라인 만큼 값을 출력하는 것이다. -c 는 bytes 만큼.

tail 의 반대 명령어는 head 이다. head 명령어는 앞에서 부터 보여주는 명령어이다.

5.42 shell prompt 변경하기

일단 prompt 는 PS1 이라는 환경 변수를 이용한다. 즉 root 권한이 있다면 /etc/bashrc나 /etc/profile 에서 PS1 변수가 지정이 되어 있는것을 수정하여 전체 유저의 prompt 를 수정할수 있다. 만약 개인 유저가 prompt 를 수정하고 싶다면 계정 홈의 .bashrc 의 제일 마지막 라인에 PS1="" 을 설정해 주면 된다. PS1 에 사용되는 예약어에 대해서는 아래를 참고 하도록 하면 된다.
  \t     현재 시간을 HH:MM:SS 형식으로 표시 
  \d     날자를 "요일 월 일" 형식으로 표시 (예,  "Tue May 26") 
  \n     개행문자 
  \s     쉘의  이름, $0 의 베이스 이름 (마지막 슬래쉬 뒷 부분) 
  \w     현재 작업 디렉토리 
  \W     현재 작업 디렉토리의 베이스 이름 
  \u     현재 사용자의 사용자명 
  \h     호스트 이름 
  \#     이 명령의 명령 번호 
  \!     이 명령의 히스토리 번호 
  \$     유효 UID가 0 이면 if the effective UID is 0, a #, 그렇지 않으면 $ 
  \nnn   팔진수 nnn에 해당하는 문자 
  \\     백슬래쉬 
  \[     비출력  문자의 시퀀스를 시작한다. 프롬프트에 터미널 제어 시퀀스를 넣을 때 사용한다. 
  \]     비출력 문자의 시퀀스를 마친다. 

5.43 kernel 파라미터 조정하기

보통 커널의 파라미터를 조정할때 proc 에서 echo 를 이용하여 redirect로 직접 쓰는 경우가 많았다. 이렇게 조정을 할 경우에는 또 rc.local 같은 파일에 따로 기입을 해 줘야 하는 불편함이 있었다. RedHat 6.2 이후 배포판에는 sysctl 이라는 package가 추가되어 이것들을 관리를 할수 있게 되었다. 일단 조정할수 있는 모든 parameter 들은
$ sysctl -a 
명령으로 확인을 할수가 있다. 그리고 특정값을 수정하기 위해서는 /etc/sysctl.conf 에 해당 키(이건 sysctl -a 명령에서 리스트를 확인할수 있다)와 키값을 지정한 다음
$ sysctl -p 
명령으로 바로 적용을 시킬수 있다. 물론 sysctl.conf 에 기입이 되면 부팅시 마다 자동으로 적용이 된다.
만약 잠시만 바꾸어 보고 싶다면
$ sysctl -w net.ipv4.icmp_echo_ignore_all=0 
과 같이 직접 값을 넣어 줄수도 있다. 이럴 경우에는 부팅이 되어 있는 순간만 적용이 된다. -p 옵션은 sysctl.conf 가 아닌 다른 파일을 설정 파일로 지정을 할수 있게 한다. 옵션값이 없으면 default 로 /etc/sysctl.conf 를 읽어 들이며 따로 path 를 지정하면 해당 path 에있는 파일을 읽어 들인다.

5.44 사용자별 du -h 값 보기

du 4.0p 이상
du -h --max-depth=1 /home/ | less  

5.45 하룻동안 만들어진 파일 검색하기

find / -ctime -1  

5.46 apache 설정 파일 문법 오류 검색

httpd.conf를 설정한 후에 쉘에서
bash# httpd -t 
명령을 실행해 보도록 한다. 그러면 apache가 자체적으로 httpd.conf에서 에러가 있는지 없는지를 살펴 보게 된다.

5.47 레드햇 패키지 버전을 알고 싶을 때

#cat /etc/redhat-release

5.48 새로운 배포본 설치를 위한 Multi LILO

리눅스를 오래 사용하다 보면 나름대로 입맛에 맞게 튜닝이 되어 있을 것이다. 이때 새로운 배포본이나 호기심을 자극하는 작업때문에 리눅스를 새로이 설치할 경우가 많다. 이럴 경우 중요 세팅 파일이나 작업 데이타 파일등을 백업을 해놓고 새롭게 리눅스를 설치할 텐데 간혹 다시 이전 상태로 복귀해야할 상황에 부딪히곤 한다. 이때 원래 이전 셋팅으로 되돌리기 위해선 상당히 번거로운 작업을 해야하는데 이때 Multi LILO를 이용하면 편리하다.

먼저 최초 리눅스 설치시 하드디스크가 하나라면 5GB 정도 나누어 비워 둔다. 혹은 여분의 하드 디스크가 있으면

관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
「리눅스에서의 개인정보 보호·보안」필수 체크리스트  (Linux_보안) (2005/02/13 07:10 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=196

「리눅스에서의 개인정보 보호·보안」필수 체크리스트
10년동안 시스템 관리자로 일한 경력을 가진 필자의 한 친구는 "유닉스 플랫폼에서 보안을 제대로 하겠다는 것은 모순"이라고 자신있게 말한다. 사실 윈도우 NT 등 다른 플랫폼에서도 이는 마찬가지로 어려운 일일 것이다.

누군가 시스템에 접근하겠다고만 마음먹으면 언젠가는 들어올 수 있을지 모른다. 하지만 그렇다고 해서 아무런 조치를 취하지 않고 내버려 둘 수만은 없는 일이다.

이 기사는 일상적인 해킹 피해를 방지하기 위한 몇 가지 도움말을 제공한다. 단 DSL 등을 이용해 컴퓨터가 인터넷에 직접 연결돼 있는 경우, 이 기사보다는 리눅스 라우터 프로젝트(Linux Router Project)나 GNAT 등에 기반한 에지 라우터(edge router)나 파이어월 등에 대한 정보가 보다 도움이 될 것이다.

이 기사는 리눅스 운영체제가 노트북에 장착돼 있을 경우, 혹은 리눅스 장비가 회사의 파이어월 내부에 있거나 혹은 대학교의 LAN에 접속돼 있을 경우 등을 가정한 것이다. 이 기사가 당신의 민감한 정보가 유출되는 것을 방지하고, 직업의 안전을 도모하며, 데이터를 보호하는 데 도움이 되기를 바란다.

다음은 리눅스 시스템에서 보안을 구현하는 데 있어서 중요한 토픽들과 함께 유의할 점을 정리한 것이다.

1. 리눅스 보안의 기본 사항
2. 파티션 설정하기
3. - nosuid 옵션(Mount /home With nosuid Option ?)
4. 시스템을 단순하게 유지시키기
5. 커스텀 커널 만들기
6. 퍼미션 배우기
7. BIOS에 패스워드 걸기
8. 부트 매니저에 패스워드 걸기
9. 콘솔에도 보안 정책 실시하기
10. 업타임(Uptime)과 로그 파일 분석하기
11. SUID 프로그램 등 관찰, 분석하기
12. 트립와이어(Tripwire) 인스톨하기
13. e-메일 암호화하기
14. 강력한 패스워드의 생성
15. 패스워드 점검
16. PAM 이용해 강력한 패스워드 적용하기
17. FTP, 텔넷 및 기타 데몬 비활성화 시키기
18. rc.d 데몬 없애기
19. tcpwrappers로 남아있는 서비스 보호하기
20. 포트 스캔하기
21. NOLOGIN 옵션



1. 리눅스 보안의 기본 사항

깨끗한 상태에서 시작하기
시스템이 가장 깨끗한 상태에서 보안 시스템과 정책을 실시하는 것이 가장 효과적이다. 만일 시스템이 많이 낡았다면, 바이러스나 기타 시스템 침입 사실이 눈에 띄지 않을 확률이 보다 높다.

예를 들어 통상적으로 사용하는 프로그램들이 트로이 목마 역할을 하면서 비밀리에 작업을 하고 있을 수도 있는 것이다.

따라서 시스템의 보안 유지를 위해 좋은 방법 중 하나는 데이터만 백업받고 OS(Operating System)를 다시 깐 뒤 다시 데이터를 복구시키는 것이다.

최신 버전 유지하기
사용하고 있는 소프트웨어의 최신 버전을 유지하는 것은 보안 문제를 미연에 방지할 수 있는 가장 좋은 방법 중 하나다.

리눅스 커뮤니티에서는 버그나 기타 문제점들에 대한 해결책이 매우 빨리 등장한다. 필자의 경우는 ‘apt-get update; apt-get upgrade’ 명령어를 통해 사용중인 소프트웨어의 최신 업그레이드를 거의 매일 실시하는 것을 좋아한다. 단 이는 모든 종류의 배포판을 지원하지 않을 수도 있다.

2. 파티션 설정하기
시스템을 포맷하고 파티션을 설정할 때, /var 와 /tmp는 루트 파일 시스템과 동일 파티션 내에 두지 않도록 한다.

/var는 로그 파일을 포함하므로 그 크기가 매우 빨리 늘어나며, 따라서 파일 시스템 공간 활용에 지장을 줄 수도 있다.

/tmp는 일반적으로 유저에게 쓰기 권한이 있으므로(writable) 이것 역시 그 크기가 빨리 늘어나는 특성이 있다. 많은 유저들은 /var를 별도의 파티션에 배정하며, /tmp는 /var/tmp의 심볼릭 링크로 지정해 준다.

또한 /home과 /usr/local 역시 별도의 파티션에 각각 위치시키는 것도 좋은 방법 중 하나다. 이렇게 함으로써 필요한 경우 시스템을 다시 인스톨하는 과정이 쉬워질 수 있다.

3. - nosuid 옵션(Mount /home With nosuid Option ?)
시스템을 사용하고 있는 유저들이 있는 경우, /home에 별도의 파티션을 배정하고 nosuid 옵션을 적용시킨다.

이렇게 함으로써 /home 디렉토리상에 있는 바이너리들이 수퍼유저 오너 혹은 그룹 아이덴티티를 가지고 작동하는 것을 방지할 수 있다.

이를 셋업시키기 위해서는 /etc/fstab의 컬럼에 nosuid를 추가하면 된다.

4. 시스템을 단순하게 유지시키기
초기 인스톨 시에는 가장 최소한의 프로그램만을 인스톨시키도록 한다.

제대로 설정(configuration)되지 않았거나, 관리자가 잘 알지 못하는 프로그램의 경우 항상 보안상의 허점으로 작용할 가능성이 높기 때문이다.

이는 특히 NFS나 삼바(Samba) 등 네트워킹에 기반한 프로그램일 경우 더 하며, 게임의 경우도 마찬가지다. 게임의 경우 보다 높은 시스템 리소스를 활용하기 위해 수퍼유저 권한을 가지고 구동시키는 일이 잦다.

리눅스용 소프트웨어는 찾기도 쉽고, 인스톨하기도 쉬우므로 가장 좋은 방법은 반드시 필요한 최소한의 소프트웨어만 인스톨시키는 것이다.

5. 커스텀 커널 만들기
어떤 리눅스 시스템이든 간에 최소한의 프로토콜과 드라이버만을 지원하는 커스텀 커널을 컴파일함으로써 보안성을 보다 높일 수 있다.

ZDNet의 Help & How-To 코너를 통해, 리눅스 2.2 커널을 컴파일 하는 방법에 대한 도움말을 얻을 수 있다.

커널을 컴파일한다는 것은 매우 어려운 작업처럼 들리나, 실은 매우 쉬운 작업에 속한다.

커스텀 커널은 부팅 시간을 보다 빠르게 해주고, 사용 가능한 메모리를 늘려준다. (커널상에 존재하는 것들은 버추얼 메모리를 절대로 사용할 수 없다.)

가장 큰 장점 중 하나는 앞에서도 언급한 바와 같이 가장 최소한의 드라이버와 프로토콜만을 지원함으로써 해커들이 침투할 수 있는 가능성을 조금이나마 줄여준다는 점이다.

뿐만 아니라, 기타 더 향상된 보안 기능도 추가로 컴파일할 수 있다. 이런 추가 보안 기능의 대부분은 make xconfig 인터페이스에서 제공하는 Help dialog를 통해 알 수 있다. 또한 커널 소스 패키지를 설치한 다음 /usr/src/linux/Documentation을 통해 추가적인 정보를 얻을 수 있다.

예를 들어, bash의 ulimits 명령어를 통해 할 수 있는 것과 유사하게 global filesystem limits를 컴파일할 수 있다는 사실을 알고 있었는가? 이를 위해서는 limits.h 파일을 편집해주고 재컴파일 시키면 된다.


6. 퍼미션 배우기
퍼미션 에러를 방지하기 위해 모든 것을 chmod 777로 지정하거나 프로그램을 루트에서 구동시키는 경우도 많을 것이다. 이렇게 하는 것은 문제점을 야기시킬 확률이 높다.

유닉스 상에서 퍼미션에 대해 배우기란 어려운 일임에는 틀림없지만 가장 기본이 되는 것 중의 하나인 동시에 많은 도움을 준다.

퍼미션이 파일 단위가 아닌 디렉토리 단위에는 어떻게 다르게 작용하는 지에 대해서 알아두는 것이 필요하다. 또한 chattr 매뉴얼 페이지를 보기 바라며, 특히 ‘스틱키 비트(sticky bit)’가 디렉토리 퍼미션에 어떤 영향을 주는 지 알아보도록 한다.

7. BIOS에 패스워드 걸기
플로피 디스켓만 가지고서도 당신의 시스템을 재부팅 시키고 루트 권한으로 로그온하거나 파일 시스템을 마운트시킬 수 있다. 만일 이러한 것에 대해 걱정된다면

1) BIOS 셋팅을 다시 해줌으로써 플로피 디스크나 CD-ROM으로 부팅하는 것을 방지하거나

2) BIOS 상에 패스워드를 걸어주거나

3) 컴퓨터 케이스 자체에 물리적으로 잠금장치(lock)를 하는 방법 등을 쓰면 된다.

이렇게 하는 것은 최소한 해커가 침입하는 데 걸리는 시간을 연장시키는 효과가 있다. 코로케이션 서비스 제공업체들도 서버에 물리적인 락을 걸어두는 방법을 사용하고 있다.

8. 부트 매니저에 패스워드 걸기
또 한 가지 가능한 해킹의 형태는 해커가 당신의 리눅스 시스템에 접근해 시스템을 리부팅 시키고, 부트 프롬프트상에서 ‘single’이라고 입력하는 것이다.

가장 최근 버전의 리눅스를 제외하고는 이렇게 하면 패스워드를 자세하게 물어보지도 않고 루트 셀로 부팅된다. 이것을 방지하기 위해서는 부트 로더(boot loader)에 대한 보안 방법을 사용하는 것을 고려하라.

릴로(LILO)는 각각의 이미지에 대해 각각 다른 부트 패스워드를 지정할 수 있도록 해준다. 이를 위해서는 lilo.conf 파일에 다음과 같은 것을 첨가해 주도록 한다.

prompt
password="패스워드"

그런 다음, chmod 600/etc/lilo.conf 명령어를 통해 슈퍼유저만이 패스워드를 읽고 나머지 사람들은 누구도 읽을 수 없도록 하며, /sbin/lilo를 실행시켜 부트맵을 재인스톨한다.

또한 chattr 명령어를 통해 lilo.conf에 ‘immutable bit’(/etc/passwd 등 기타 중요 파일에도 immutable bitfmf 설정할 수 있다)를 지정할 수 있다.

전원을 차단한 후 복구하는 경우에 시스템 리부팅을 할 수 있도록 하기 위해서는 lilo를 실행시키기 전에 lilo.conf 파일에 restricted를 첨가해 주도록 한다. Restricted를 부가하면 부트 타임 변수(이를 테면 single이나 root=/dev/fd0 등)를 입력하려고 할 때만 시스템이 패스워드를 물어보도록 할 수 있다.

부팅에 대해 부가적으로 알아둘 사항은, 파워 서플라이 이상 등으로 인해 발생하는 소위 '커널 패닉(kernel panic)'이 발생될 경우다. 이 때 리눅스 시스템은 기본적으로(default) 시스템이 그냥 멈춰 버린다.

다음과 같은 명령어를 통해 시스템 패닉이 발생할 때도 컴퓨터가 멈춰 서는 것이 아니라 재부팅할 수 있도록 할 수 있다. (패닉 버추얼 파일의 위치는 커널 버전에 따라 다르다)

echo 1 > /proc/sys/kernel/panic

9. 콘솔에도 보안 정책 실시하기
버추얼 콘솔에서 X를 시작할 경우 (단 X상에서 로그인 화면을 제공하는 xdm이나 gdm을 시작시키지 않는 경우), 당신이 시스템을 사용하지 않을 때 단순히 xlock이나 xlockmore 명령어만을 통해 시스템에 락(lock)을 걸어 놓는 것은 충분하지 않다.

이렇게 하는 것은 X를 런칭시킨 콘솔에 대해서는 아무런 보안을 하는 것이 아니기 때문이다. 이를 위해 vlock 명령어를 쓰거나, 혹은 X를 런칭시킨 콘솔을 포함, 모든 콘솔에서 로그아웃하는 것이다. (이를 위해 Ctrl-Alt-F[n], Ctrl-Z, bg, exit, Ctrl-F7 등의 방법을 사용할 수 있다)

10. 업타임(Uptime)과 로그 파일 분석하기
만일 시스템이 어떤 이유에서인지 모르지만 스스로 재부팅됐다면, 그 이유를 알기 위해 로그 파일을 참조하도록 한다.

로그는 흔히 /var나 /var/log 디렉토리에 있으므로 해당 디렉토리에 가 보도록 한다. tail 명령어는 로그의 끝부분(tail end)만을 보기 위해 유용한 명령어다.

로그를 분석하는 것은 시스템 관리자에게 좋은 습관 중 하나다.


11. SUID 프로그램 등 관찰, 분석하기
SUID/SGID 프로그램은 개인 혹은 그룹이 슈퍼유저 권한을 가지고 운영하는 프로그램을 말한다. 이런 프로그램은 다양한 보안 문제를 가지고 있는 것으로 알려져 있다.

데비안을 포함한 일부 배포판에서는 SUID/SGID 프로그램에 대해 계속 관심을 갖도록 한다. Suid 로그는 /var/log 디렉토리에서 볼 수 있다.

만일 시스템에 suidmanager 패키지가 인스톨돼 있다면 아마 /etc 디렉토리에서 SUID/SGID 프로그램의 리스트를 나열한 suid.conf 파일을 찾을 수 있을 것이다. 이것을 아래와 같은 find 명령어의 결과와 비교해 본다면 도움이 될 것이다.

root# find / -type f \( -perm -04000 -o -perm -02000 \)

또한 아무 소유자가 없거나 그룹 아이디가 없는 파일을 알아보기 위해서는 아래의 명령어를 사용해 보도록 한다.

find / -nouser -o -nogroup -print

마지막으로, 어떤 유저든 입력을 행할 수 있는 파일 종류 역시 다음의 명령어 등을 통해 알아보도록 한다.

find / -perm -2 ! -type l -ls

12. 트립와이어(Tripwire) 인스톨하기
만일 보안에 더 많은 관심이 있다면 트립와이어(Tripwire) 인스톨을 검토해 보도록 한다. 만일 이를 사용하고자 한다면 중요한 시스템 파일을 깨끗한 소스상에서 불러내 재인스톨시켜야 할 것이다.

그런 후 Database Generation 모드상에서 트립와이어를 실행시킨다. 이로 인해 발생되는 일방적인 데이터 저장 방식(one-way hash)은 CD-ROM이나 쓰기 보호된 플로피 디스크 등 '읽기 전용' 매체에 저장하도록 한다.

트립와이어를 인스톨시킨 후, 만일 어떤 침입자가 들어왔는지 의심스러울 경우에는 인테그리티 체킹(Integrity Checking) 모드상에서 트립와이어를 실행해보도록 한다. 이렇게 하면 트립와이어 프로그램은 모든 것을 다시 해시(re-hash) 시켜 원래 저장된 정보와 비교해 보도록 한다.

이를 통해 트로이 목마 바이러스 등 여러 가지 요인에 의해 변경됐거나 바뀐 파일을 찾을 수 있을 것이다. 또한 트립와이어를 crontab에서 실행시켜, 시스템상의 변경 사항에 대한 업데이트 뉴스를 메일로 보내도록 할 수도 있다.



13. e-메일 암호화하기
만일 당신이 e-메일을 보낼 때 아직도 디지털 서명을 이용하지 않고 있다면 시대를 앞서가고 있다고 하기는 힘들 것이다. 공개키 방식의 암호화를 처음 접하는 경우라면 정확히 이해하기가 쉽지 않다. 예를 들어 PGP(Pretty Good Privacy)의 경우 리드미 파일이 35,000 단어 정도로 매우 길다.

하지만 그럼에도 불구하고, 암호화에 대해 지식을 갖는 것은 매우 유용한 일이다. 암호화를 거치지 않고 인터넷상에서 완전 노출된 텍스트 형태로 보내는 정보는 상대방이 가로채거나 유출하기 매우 쉽기 때문이다.

PGP는 그 이름(상당히 괜찮은 프라이버시 라는 뜻)이 겸손하게 느껴질 정도로 강력한 기능을 제공하지만, 라이선싱 문제와 몇 가지 기술적인 문제들로 인해 그다지 환영받고 있지 못한 실정이다.

리눅스를 사용하고 있다면 GNU 프라이버시 가드(GNU Privacy Guard; GnuPG)를 이용하기 바란다. GnuPG는 PGP와 완전 호환성을 갖추고 있으나, 특허에 기반한 RSA 암호화 기술에 의존하고 있지 않으며, 미국 외 지역에서 사용하는데 법적으로 문제가 없다. 또한 GnuPG의 가장 좋은 점 중의 하나는 매뉴얼의 길이가 PGP만큼 길지 않다는 것이다.

GnuPG는 MIME 기반의 첨부 파일도 효과적으로 지원하는 등의 이유로 인해 최근 점점 더 인기를 더해가고 있는 메일 프로그램인 Mutt을 위해 GnuPG를 셋업하는 방법에 대해서도 HowTo 매뉴얼을 제공하고 있다. 리눅스 도큐멘테이션 프로젝트를 통해 더 많은 정보를 얻을 수 있다.

14. 강력한 패스워드의 생성
리눅스 보안에 있어서 패스워드는 매우 중요한 역할을 차지한다. 리눅스는 매우 강력한 난수 생성 기능을 제공, 강력한 패스워드를 생성할 수 있도록 해 준다. 이를 위해 아래의 명령어를 사용할 수 있다.

head -c 6 /dev/random | mimencode

만일 어떤 이유에서든 간에 당신의 컴퓨터가 mimencode 명령을 지원하지 않는다면 (예 : 메일 툴 패키지가 장착돼 있지 않은 경우 등) 위의 명령어 대신 아래의 명령어를 사용할 수 있다.

15. 패스워드 점검
만일 당신의 패스워드가 너무 단순하다고 생각되면 크랙(Crack)이나 존 더 리퍼(John the Ripper) 혹은 요즘 유행하는 기타 다른 프로그램들을 다운로드 받은 후, 이를 /etc/passwd 파일을 상대로 실행시켜 본다.

Rootshell.com, Insecure.org, phrack.com 등 유닉스 상의 보안 관련 정보를 전문으로 제공하는 사이트를 참조하기 바란다.

만일 섀도우 패스워드를 사용하고 있다면 pwconv와 pwunconv 유틸리티를 유용하게 사용할 수 있을 것이다.

리눅스 상에서의 보안 및 개인정보 보호에 대한 정보를 더 얻기 위해서는 리눅스 개인정보 및 보안 가이드(Linux Privacurity Guide)를 참조하도록 한다.

16. PAM 이용해 강력한 패스워드 적용하기
최근의 리눅스 배포판은 PAM(Pluggable Authentication Modules)을 이용, 인증 기능을 필요로 하는 모든 프로그램상에서 보다 강화된 인증 기능을 제공한다.

PAM의 기능 중 하나는 사용자가 쉽고 단순한 패스워드를 만드는 것을 방지하는 패스워드 난이도 점검(password strength checker) 기능이다. PAM은 또한 생체인식 등 기타 강력한 사용자 인증 시스템을 지원하기도 한다.

더 자세한 것은 시스템 관리자를 위한 리눅스-PAM 가이드(Linux-PAM Guide for System Administrators)를 참조하도록 한다.


17. FTP, 텔넷 및 기타 데몬 비활성화 시키기
텔넷과 FTP는 암호를 텍스트 형태로 네트워크를 통해 전송하기 때문에 스니핑의 표적이 될 수 있다. 이를 위해 ssh나 scp 등 최신의 툴을 사용할 수 있다. SSLtelnet/SSLftp 등도 사용 가능하지만 아직까지 그다지 널리 사용되고 있지는 않다.

SSH는 텔넷보다 더 뛰어난 기능을 제공한다. 예를 들어 remote X 세션을 투명하게 처리함으로써, 유저가 ssh를 통해 다른 머신에 접근, 해당 머신상에서 X 애플리케이션을 구동시키고 그 결과 나온 디스플레이를 로컬X 서버로 전송시킨다. 이를 테스트해보기 위해 X term에서 ssh로 당신의 ISP에 로그온한 뒤 xeyes & 등의 명령어를 입력하는 방법을 시도해 보도록 한다.

SSH는 윈도우나 매킨토시 등의 클라이언트 시스템에서도 사용 가능하다. 단 SSH의 라이선스는 약간의 문제점이 있다. 따라서 만일 상용 유저라면 BSD의 OpenSSH나 LSH의 사용을 고려해 보는 것도 좋을 것이다.

inted.conf 파일을 편집함으로써 텔넷과 FTP를 비활성화시킬 수 있다. 그 전에 /etc/motd(이는 message of the day를 뜻함)에 메시지를 언급함으로써 접근하는 유저들에게 메시지를 전달할 수 있다.

이 파일은 유저가 로그온해서 가장 처음 보게 되는 파일이다. 따라서 관리자는 "이 컴퓨터의 불법적인 사용은 금지돼 있으며, 이 컴퓨터상에서 당신의 행동은 모두 로그로 남을 것이다" 등 약간의 경고성 메시지가 나타나게 할 수도 있다.

Inetd는 모든 포트에 귀를 기울이는 역할을 한다. 만일 포트에서 어떤 신호가 감지되면 Inetd는 /etc/services와 /etc/inted에 연락, 해당 서비스를 시작하게 한다. 만일 inted.conf에서 어떤 서비스를 제외시키면 inted는 이에 신경쓰지 않는다.

텔넷과 FTP 외에도 다음의 것들을 비활성화시킬 수 있다.

discard
daytime
chargen
gopher
shell
login
exec
talk
tftp
finger
netstat
systat

inted를 끊고(hang up) 재시동시키면 inted.conf 파일을 읽은 뒤, 보다 접근이 제한된 상태로 남아있게 된다.

killall -HUP inted


18. rc.d 데몬 없애기
rc.d 파일에 포함된 부트스트랩 스크립트로 인해 몇몇 네트워킹 데몬이 구동될 수 있다. 보통 이러한 파일들은 /etc/init.d(데비안의 경우) 혹은 /etc/rc.d/init.d(레드햇의 경우) 등에 포함된 스크립트의 심볼릭 링크인 경우가 많다.

만일 init.d에 포함된 스크립트로 인해 원치 않는 프로그램이 가동된다면, 스크립트를 리네임시킴으로써 심볼릭 링크를 끊는 방법을 택하도록 한다. 이를 위해

linuxbox$ mv /etc/init.d/samba /etc/init.d/Samba.

등의 명령어를 시도해 본다.

만일 해당 서비스가 한시적으로 구동되도록 하려면 스크립트를 매뉴얼로 실행시키면 된다.

19. tcpwrappers로 남아있는 서비스 보호하기
inetd.conf를 사용해 현재 사용하지 않는 서비스를 걸러낸 다음에는, tcpwrappers(tcpd) 프로그램을 이용해 현재 구동중인 서비스를 보호할 수 있다.

tcpd를 셋업시키는 방법에는 여러 가지가 있지만 (man tcpd를 통해 자세한 사항을 참조할 수 있다) 결과는 모두 동일하다.

서비스 리퀘스트가 도착하면 inetd 데몬은 해당 서비스 대신 tcpd를 호출하게 된다. 그렇게 되면 tcpd는 몇 가지 사항을 확인하고, syslog.conf의 셋업에 맞춰(역시 man syslog.conf와 man syslogd 참조) 리퀘스트를 로그시키며, 액세스 컨트롤을 실시한다 (man host_access 참조).

이러한 모든 것이 문제없이 처리되면 리퀘스트를 해당 서비스로 보내 실행한다.

20. 포트 스캔하기
자신의 시스템을 한번쯤 해커의 입장에서 살펴보고자 한다면 nmap을 인스톨하고 nmap localhost를 시도해 본다.

nmap은 또한 자신 시스템의 모든 subnet과 네트워크를 둘러보기 위해 사용될 수 있다. 이렇게 하는 것은 사용되지 않고 있는 고정 IP를 찾아내는 데 유용한 방법이다.

하지만 다른 사람의 네트워크에 이를 적용하는 것은 그다지 좋지 않은 생각이다. 해킹에 예민한 네트워크 어드민들은 포트 스캔을 적대적인 행위로 간주하기도 하며, 따라서 당신이 포트 스캔을 실시하는 것을 알아낸다면 당신을 접근 거부 리스트(denial list)에 올려놓을 것이다.

21. NOLOGIN 옵션
만일 시스템에 침입자가 있다고 판단되면 시스템에 임시로 /etc/nologin 파일을 생성함으로써 액세스를 막아놓도록 한다.

이 파일이 존재하면 루트(root) 외에 다른 사람들은 로그인할 수 없게 되며, 다른 사람들에게는 이 파일의 내용이 보여지게 된다. @


관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
백업시점에서 지난파일 자동으로 지우기  (Linux_Script) (2005/02/13 07:08 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=195

#!/usr/bin/sh
export NEW=`date +%Y%m%d`
tar cvf /home/jeusreal/backup/web_$NEW.tar.gz /home/jeusreal/web
tar cvf /home/jeusreal/backup/ejb_$NEW.tar.gz /home/jeusreal/ejb
find /home/jeusreal/backup -mtime +3 -exec rm {} \;
관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
사용자 쿼터설정  (Linux_보안) (2005/02/13 07:07 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=194

계정 쿼터설정
# edquota 계정   -->만약계정이 abc라면

# edquota abc
하시면 vi편집기상에서 쿼터를 설정하는 겁니다.

Quotas for user abc:
/dev/hdc8: block in use: 8, limits (soft=0, hard=0)
    inodes in use: 2, limits (soft=0, hard=0)

위에서 보면 현재 8개의 블럭을 사용중입니다. 1블럭의 사이즈는 1024바이트 즉 1kbytes입니다.

100메가로 설정하려면

Quotas for user abc:
/dev/hdc8: block in use: 8, limits (soft=100000, hard=110000)
    inodes in use: 2, limits (soft=0, hard=0)

100메가 도달하면 경고메시지가 나타나게 되고 유예를 조금 두어서 110000정도 세팅합니다.
아이노드 수는 제한을 걸지 않는 편이 좋습니다.

쿼터 상태를 살펴보려면

# repquota -a
# repquota -a | grep abc
로 확인하시면 됩니다.
관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
서버점검사항  (Linux_보안) (2005/02/13 07:04 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=193

서버점검사항
1. SUID 점검하기.(root 소유의 SetUID및 SetGID 파일들 점검

     find / -user root -perm -4000 -print (SetUID)
     find / -user root -perm -2000 -print (SetGID)
     find / -user root -perm -4000 -print -xdev

2. 파티션별 디스크사용량 점검
     df -h

3. 파일무결성 점검.

     http://weblog.websea.co.kr/tripwire/tripwire

4. 백도어 설치여부 점검.(/dev 체크 및 rootkit 점검)

     find /dev -type f -exec ls -l {} ;
     ./chkrootkit
    
5. 현재 열려진 포트 및 응답가능한 포트 점검.

     netstat -atp | grep LISTEN (사용 프로토콜 : TCP인가? 또는 UDP인가?
        사용중인 포트번호
        서버와 연결된 IP 및 도메인명
        생성 PID
        서비스중인 프로세스명
        현재 응답가능상태인가?
     lsof | grep LISTEN(현재 서비스 중인 프로세스명(데몬명)
            현재 생성중인 PID번호.
        현재 서비스중인 프로세스의 소유자
        프로토콜 버전 : Ipv4 또는 Ipv6
        TCP 또는 UDP의 여부
        응답가능 상태인가?

6. 실생중인 프로세스 및 데몬점검.(프로세스의 생성관계)

     pstree

7. 시스템 운용상황 점검.

    top -d2

8. 백업점검.

    /home2/backup/nexfor/
    /home2/backup/websea/

9. 스팸메일 점검.(메일큐 디렉토리 점검)

   /var/spool/mqueue    (동일한 날짜, 동일한 사이즈를 가진 다수 파일구분)

10. Core 점검.

  서버내에 긴급한 이상이 발생하였을 경우나 시스템의 정확한 분석을 위해
  서버의 메모리 상태를 순간적으로 dump 받는 경우의 파일
   find / -name core -exec ls -l {} ;
  
11. 파일용량 점검

  repquota -av -ag
  df -h

12. 최근 서버 접속자 점검.

   vi /var/log/secure
   last -n 10  최근 10번째까지의 접속기록을 확인.

13. 계정별 최후접속기록 점검.

        lastlog는 현재 /etc/passwd에 존재하는 모든 계정을 대상으로 하
여 언제 마지막으로
        서버에 접속을 했는가를 확인.
        Mail, adm, bin 등의 계정들은 모두 "** Never logged in **" 이라
고 되어 있는것이 정상.

   lastlog

14. 현재 서버접속자 보기

    w (telnet)
    ftpwho(ftp)

15. root명령어 사용기록 점검.

        vi /root/.bash_history  (.set nu)
        cat /root/..bash_history | wc -l    (1000라인 이상 되어야 정상)

16. 계정별 사용명령어파일 점검.

        find / -name .bash_history -exec ls -l {} ;    (각 계정
별 .bash_history 파일의 존재여부)
        find / -name .bash_history -exec cat {} ;     (파일의 내용까
지 모두 확인해 볼 수 있음)

17. root소유자 점검(UID와 GID가 0인 사용자 점검)

        cat /etc/passwd | grep 0:0

18. 서버내에 중요한 디렉토리 점검

        /etc/xinetd.d/    (xinetd로 서비스되는 인터넷서비스 파일들이 존재하는 디렉토리)
        /etc/rc.d/           (부팅에 관계된 파일) (파일들을 복사 후 파일용량등을 비교하기) (커널패닉의원인)
        /etc/rc.d/init.d/ (부팅시에 특정 서비스나 데몬들을 시작시키는 스키립트 파일)

19. .rhosts 파일 점검

        원격에서 패스워드등의 확인과정없이 바로 접속하기 위해서 사용되는 파일
        
        find / -name .rhosts -exec ls -l {} ;
        find / -name .rhosts -exec cat {} ;

20. 메모리사용량 점검.

        free -m
        cat /proc/meminfo   (free 와 top 는 이 파일을 참조하여 보여준다.)
        top -d2

21. 중요 관리자용명령어 점검.

        아래의 명령어들을 퍼미션을 100으로 설정한다. 변경 후 퍼미션 변경여부를 확인.
        
        chmod 100 /usr/bin/top
        chmod 100 /usr/bin/pstree
        chmod 100 /usr/bin/w
        chmod 100 /bin/ps
        chmod 100 /usr/bin/who
        chmod 100 /usr/bin/find
        chmod 100 /bin/df
        chmod 100 /bin/netstat
        chmod 100 /sbin/ifconfig
        chmod 100 /usr/sbin/lsof
        chmod 100 /usr/bin/make
        chmod 100 /usr/bin/gcc
        chmod 100 /usr/bin/g++
        chmod 100 /usr/bin/c++

22. su 명령어를 이용한 root권한 사용자 점검.

        su 명령어의 사용내역을 확인할 수 있음.

        cat /var/log/messages | grep root

23. 최근 n 일전 변경된 파일 점검. (단위는 일)

        find / -ctime -1 -print | more

24. http://weblog.websea.co.kr/

25. find 를 이용한 특정파일 점검하기.

        .exec 파일찾기
        find / -name '.exec' -exec cat {} ; -print

        .forward 파일체크
        find / -name '.forward' -exec cat {} ; -print

        write 퍼미션이 있는 파일(디렉토리)찾기
        find / -type f  ( -perm -2 -o -perm -20 ) -exec ls -lg {} ;
        find / -type d ( -perm -2 -o -perm -20 ) -exec ls -ldg {} ;

        SteUID SetGID 체크하기
        find / -type f ( -perm -004000 -o -perm -002000 ) -exec ls -
lg {} ;

        /dev 체크
        find /dev -type f -exec ls -l {} ;

        소유자없는 파일 및 디렉토리 찾기
        find / -nouser -o -nogroup -print

        원격리모트 접속허용 파일(.rhosts)찾기
        find / -name .rhosts -print

        최근 변경된 파일들 찾기.(파일or디렉토리) 단위는 일
        find / -ctime -20 -type f or d

        현재 서버에서 열려진 포트 및 접근저보 점검

        netstat -an | grep LISTEN   (포트들과 열결되어 있는 실행데몬들을 확인)
        lsof | grep LISTEN   (좀 더 자세히 확인)

26. 관리자용 명령어 퍼미션 수정하기.

        chmod 100 /usr/bin/top
        chmod 100 /usrbin/pstree
        chmod 100 /usr/bin/w
        chmod 100 /bin/ps
        chmod 100 /usr/bin/who
        chmod 100 /usr/bin/find
        chmod 100 /bin/df
        chmod 100 /bin/netstat
        chmod 100 /sbin/ifconfig
        chmod 100 /usr/sbin/lsof
        chmod 100 /usr/bin/make
        chmod 100 /usr/bin/gcc
        chmod 100 /usr/bin/g++
        chmod 100 /usr/bin/c++

27. 중요한 파일퍼미션과 소유권 제한 및 점검.

        chmod 644 /etc/service
        chmod 600 /etc/xinetd
        chmod 644 /etc/mail/aliases
        chmod 600 /etc/httpd/conf/httpd.conf
        chmod 644 /var/log/wtmp
        chmod 644 /var/run/utmp
        chmod 644 /etc/motd
        chmod 644 /etc/mtab
        chmod 600 /etc/syslog.conf
        
        /etc, /usr/etc, /bin, /usr/bin, /sbin, /usr/sbin

        chmod 1777 /tmp
        chmod 1777 /var/tmp
        
28. umask 값 확인하기.

        root의 umask 값 확인하기.
        umask
        022 -->파일은 644 디렉토리는 755로 생성됨.
        027 -->파일은 640 디렉토리는 750로 생성됨.

29. /dev 에 device 파일 이외의 것이 존재하고 있는지 확인.

        find /dev -type f -exec ls -l {} ;

30. 일반사용자의 명령어 패스

        /usr/local/bin:usr/local/mysql/bin:/home/hosting/bin/
        일반사용자가 사용가능한 명령어를 모두 이것에 둠.

31. 관리자의 명령어 패스

        :/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin

        /X11:/usr/X11R6/bin:/usr/kerberos/bin:/root/bin

32. 특정 그룹만의 su 사용권한 허용하기

        vi /etc/group  (wheel구릅에 su 사용권한을 가질 유저 추가하기)
        wheel:x:10:root,cream

        vi /etc/pam.d/su (두줄 추가하기)

        auth        sufficient        /lib/security/pam_rootok.so
        auth        required                /lib/security/pam_wheel.so allow group=wheel

        vi /var/log/message 에서 확인

33. chmod 400 /etc/shadow

34. 시스템 기본로그파일.

        /var/log/messages
        /var/log/secure
        /var/log/wtmp
        /var/run/utmp
        /var/log/lastlog

35. utmp, wtmp, lastlog 파일

        utmp파일 : 현재시스템에 접속해 있는 사용자의 정보를 가지고 있음.
        
        strings utmp | more
        
        정보 이용 명령어
        login(1), who(1), init(8), last(8), lastcomm(8)

        wtmp파일 : 처음부터 접속했던 모든 사용자의 로그인정보와 로그아웃정보를 가지고 있음.

        strings wtmp | more

        정보 이용 명령어
        login(1), who(1), init(8), last(8), lastcomm(8)

        lastlog 파일

        가장 최근에 로그인한 정보를 저장함.

        last 라는 명령어로 확인할 수 있음.

36.  패스워드 유출대처방안(웹)

        perl을 이용한 방법.


    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Options Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
    Options Indexes SymLinksIfOwnerMatch IncludesNoExec
    
        Order allow,deny
        Allow from all
    
    
        Order deny,allow
        Deny from all
    


        SSI의 exec 명령어를 이용하는 방법

#    AddType text/html .shtml
#    AddHandler server-parsed .shtml

27. PortSentry를 이용한 실시간 해킹방어 구현.(잘못 사용할시 서버접속 안됨)

        tar -xvzf portsentry-1.1.tar.gz
        make linux
        make install

        /usr/local/psionic/portsentry/portsentry -tcp
        /usr/local/psionic/portsentry/portsentry -udp
        /usr/local/psionic/portsentry/portsentry -stcp
        /usr/local/psionic/portsentry/portsentry -atcp
        /usr/local/psionic/portsentry/portsentry -stdp

        vi /etc/hosts.deny 점검.

28. Chkrootkit 로 백도어 점검.

        tar -xvzf chkrootkit.tar.gz
        make sense
        ./chkrootkit     (점검명령어)

29 ping 을 이용한 DOS 공격 막는 방법.

        vi  /etc/sysctl.conf
        net.ipv4.icmp_echo_ignore_broadcasts = 1

        sysctl -w
        /etc/rc.d/init.d/network restart
        sysctl -a | grep ignore_broadcasts

30. Nmap를 이용 포트스켄 하여 해킹가능성 체크.

        nmap -sS -p80 211.42.48.110 -O -v www.armian.net
        nmap -sS -O -v 211.42.48.114

http://blog.empas.com/jjh7266/2886273 에서 따옴
관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
Fedora 3 사용 팁  (Linux_일반) (2005/02/13 07:00 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=192

제목 없음 Fedora 3 사용 팁 | Linux

2005/02/08 01:36

http://blog.naver.com/shpark4179/140010117943

사용팁 목록 내용

  1. yum 실행시 GPG 키 관련 에러 발생할 때
  2. Package Update
  3. nabi 실행을 위한 설정
  4. 윈도우에서 영문 메뉴를 사용하기 위한 로케일 설정
  5. 한영키를 사용하기 위한 설정
  6. Flash Plug-in 설치
  7. man 페이지 한글 문제
  8. J2SDK 설치와 한글화
  9. Windows의 폰트(.ttf) 설치하기
  10. mlterm의 설치
  11. Vim 한글코드 사용
  12. xmms의 mp3 파일 지원문제
  13. xmms 한글 설정
  14. vfat, ntfs 파티션 설정
  15. X-manager 선택방법
  16. Reference

1 yum 실행시 GPG 키 관련 에러 발생할 때

fedora3에 와서는 yum으로 패키지를 업데이트할 때 GPG 키를 요구한다.

#yum -y update
You have enabled checking of packages via GPG keys. This is a good thing. However, you do not have any GPG public keys installed. You need to download tje keys for packages you wish to install and install them.
You can do that by running the command:
rpm --import public.gpg.key
For more information contact your distribution or package provider.

그런데 위의 메시지처럼 rpm --import public.gpg.key를 실행해도 이 역시 에러가 난다. 이때는 다음과 같은 커맨드로 패키지를 다운로딩할 사이트의 키를 가져오면 된다.

#rpm --import /usr/share/doc/fedora-release-3/RPM-GPG-KEY* 

참조 : http://www.fedorafaq.org/#gpgsig


 

2 Package Update

불필요한 패키지를 삭제하려면, System Settings(시스템설정)->Server Settings(서버설정)->Services(서비스)에서 선택적으로 삭제해도 되며 rpm, yum을 이용하여 패키지를 삭제한다.
# yum remove slocate 

yum을 사용하려면 먼저 yum 리스트를 업데이트 해준다. yum의 미러 사이트 목록을 담고 있는 yum.conf 파일을 다음의 url에서 다운받는다.
http://www.fedorafaq.org/samples/yum.conf

그리고 이 파일을 /etc/yum.conf로 카피해 준다. 이제 yum으로 설치할 수 있는 소프트웨어가 무엇이 있는지 확인해 보자.

#yum list available 

만약 특정 패키지를 설치하고 싶다면 "yum install packagename" 하면 된다. 예를 들어,

#yum install gaim 
라고 입력하면 gaim뿐 아니라 gaim을 설치하기 위해 의존성이 걸린 패키지까지 설치할 수 있다.(필자는 X윈도우에서 MSN 메신저를 사용하려고 gaim을 설치했다. :) )

설치뿐 아니라 패키지 업데이트를 위해선 "yum update packagename"라고 입력하면 된다. 만약 모든 패키지를 업데이트하고 싶다면,

#yum -y update 
이렇게 하면 모든 패키지를 업데이트하므로 한세월이 걸린다.

시스템에서 어떤 패키지가 업데이트 필요한지를 보려면,

#yum check-update 

패키지를 설치하기 전에 search 옵션으로 패키지에 대해 미리 알아 볼 수 있다.

#yum search packagename 
그외 자세한 옵션은 man 페이지를 참조한다.

fedora core2부터는 다시 up2date를 지원하긴 하지만, [WWW]Unofficial Fedora FAQ에서는 패키지 업데이트를 위해 up2date보다는 yum을 권장하고 있다.

GUI용 패키지 관리자(system-config-packages)를 설치했다면,

#system-config-packages 
 

3 nabi 실행을 위한 설정

쉘과 x윈도우에서 한글입력을 위한 기본 설정. 만약 설치 후에 iimf가 기본 한글 입력기로 설정되어 있다면 rpm 패키지 관리자로 삭제하거나 ntsysv로 iimf 데몬을 비활성화하여 서비스를 재시작하면 nabi가 동작한다.
nabi를 설정하기 위해선
~/.i18n 을 다음과 같이 설정한다. (만약 전체 유저에게로 적용하고 싶다면 /etc/sysconfig/i18n)
# With Nabi 0.14, no longer need to set LANG with Korean 
#export LANG=ko_KR.UTF-8
#export LC_MESSAGES=en_US.UTF-8
#export LC_TIME=en_US.UTF-8


export XMODIFIERS="@im=nabi"
export XIM_PROGRAM=/usr/bin/nabi
export GTK_IM_MODULE=xim
export QT_IM_MODULE=xim

Xwindow 시작시 자동으로 실행되게 하기 (GNOME)

  • Gnome(gnome-session-properties): Application(레드햇)->Preferences(환경설정)->More Preferences(추가환경설정)->Sessions(세션)에서 Startup Programs(시작프로그램)에 nabi를 경로명과 함께 추가.
  • KDE: Applications(빨간모자)->System Tools(시스템 도구)->nabi 선택

4 윈도우에서 영문 메뉴를 사용하기 위한 로케일 설정

환경 변수에[WWW]한글 로케일 설정을 해버리면 gnome의 윈도우 메뉴마저 모두 한글로 바뀐다. 게다가 ntsys등의 CLI 메뉴도 깨져 나오기도 하고 개인적으로 윈도우의 메뉴를 한글로 쓰는 것은 별로 좋아하지 않기 때문에 한글 입력은 가능하면서 쉘과 메뉴는 영어로 쓰는 편이다. 그렇게 하려면 먼저 en_US.UTF-8 locale에서도 한글 입력이 가능하도록 nabi 0.14 버전 이상 깔려 있어야 한다. fedora3에서는 기본적으로 nabi 0.14 버전이 설치되므로 nabi는 업데이트할 필요는 없고 /etc/sysconfig/i18n에 다음과 같이 en_US.UTF-8 로케일만 사용하도록 수정해 주면 된다.
LANG="en_US.UTF-8" 
SUPPORTED="en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
 

5 한영키를 사용하기 위한 설정

fedora를 처음 설치하면 xev에서 한영키 및 한자키가 scan되지 않을 것이다. 이땐 먼저 root 권한으로 다음을 실행하여 키를 셋팅한다.
# setkeycodes e071 122 
# setkeycodes e072 123
그리고 xev로 한자키, 한영키의 키 코드가 scan되는지 확인해서 scan이 되면 위의 커맨드를 /etc/rc.local 스크립트에 넣어서 부팅할 때마다 셋팅되록 설정해 준다. 그리고 ~/.xsession에 xev로 스캔된 코드 값을 추가해 준다.
예를 들어, 필자가 xev에서 한영키를 눌렀을 때 다음과 같이 210코드가 scan이 되었다.
KeyRelease event, serial 27, 
synthetic NO, window 0x2a00001, root 0x58, subw 0x0,
time 3751682, (169,-15), root:(197,69),
state 0x0, keycode 210 (keysym 0xff31, Hangul),
same_screen YES, XLookupString gives 0 bytes:
그리고 한자키는 키값이 209가 되어서 ~/.xsession에 다음과 같이 추가하였다.
xmodmap -e "keycode 210 = Hangul" 
xmodmap -e "keycode 209 = Hangul_Hanja"

만약 전체 유저에게 적용하고 싶다면 /etc/X11/Xmodmap 파일에 등록해주면 된다.

keycode 22 = BackSpace 
keycode 107 = Delete
keycode 209 = Hangul_Hanja
keycode 210 = Hangul


6 Flash Plug-in 설치

Mozilla에서 flash를 보려면 Flash plug-in을 설치해 줘야 한다. yum을 이용하려면,
#yum --enablerepo=flash install flash-plugin 

yum을 이용하지 않는다면 다음의 사이트에서 Flash Plugin RPM을 다운로딩 받아야 한다.
http://macromedia.mplug.org

그리고 rpm 패키지로 설치

#rpm -Uvh flash-plugin-*.i386.rpm 

참조 : [WWW]Flash Plugin FAQ


7 man 페이지 한글 문제

필자는 man 페이지를 한글로 보지는 않지만 혹시나...
#>vi /etc/sysconfig/i18n 
#LANG="ko_KR.UTF-8" <-------- UTF-8 에서 ko_KR로 수정
#SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.UTF-8:ko_KR:ko"
LANG="ko_KR.eucKR"
SUPPORTED="en_US:en:ko_KR.euckr:ko_KR:ko"
SYSFONT="Gulim" #> source i18n
#>vi /etc/man.config <--------- KNROFF 로 시작하는 행으로 이동 PAGER /usr/bin/less -isr
#>vi /etc/profile.d/less.sh <--------- * 제일 중요함
export JLESSCHARSET=ko ---> export JLESSCHARSET=euc-kr

 

8 J2SDK 설치와 한글화

http://java.sun.com 에서 j2sdk-*.rpm.bin 을 받아서 ./j2sdk-*.rpm.bin 하면 압축이 풀리며 rpm 파일이 생성된다. 이것을 설치한다. J2SDK 1.4.2 를 설치하면 /usr/java/j2sdk1.4.2 에 설치된다.

/etc/profile.d/java.sh 파일을 생성하고 다음과 같은 내용을 추가한다.

JAVA_HOME=/usr/java/j2sdk1.4.2 
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin export PATH
이제는 새로운 터미널을 열거나 재부팅을 하면 java 사용이 가능해 진다. JDK/JRE 한글 설정은 그냥 Fedora 에 설치된 백묵 글꼴을 이용해 한글을 설정하려면 $JAVA_HOME/jre/lib/ 에 있는 font.properties.ko.Redhat8.0 파일을 font.properties.ko 로 복사. 일단 한글을 사용하는데 문제는 없어진다. 하지만 Window 98 굴림/바탕 글꼴을 이용해서 할 경우 윈도우와 가장 비슷하게 된다.
cp font.properties.ko $JAVA_HOME/jre/lib/ 에 복사, 
cp fonts.dir $JAVA_HOME/jre/lib/fonts 에 복사.
Windows 98의 batang.ttc 와 gulim.ttc 를 $JAVA_HOME/jre/lib/fonts 에 복사.
이제 한글을 사용하는 자바 SWING 어플리케이션을 하나 실행시켜보면 한글이 되는것을 볼 수 있음.

9 Windows의 폰트(.ttf) 설치하기

바탕 화면의 "Computer" 아이콘 클릭->File메뉴->Open Location...->"fonts:"입력
이제 나타나는 폰트 디렉토리 윈도우에 Windows의 폰트를 drag&drop

10 mlterm의 설치

페도라가 UTF-8 문자 인코딩으로 넘어오면서 생긴 심각한 문제 중의 하나는 기존 EUC-KR 기반의 유닉스/리눅스에 telnet 혹은 ssh 로 접속하면 한글이 모두 깨져버린다는 것이다. 이에대한 해결책이 이미 있었으니 [WWW]mlterm(Multi Language Terminal) 이다. 유니코드 부터 EUC-KR, EUC-JP 등 다양한 인코딩을 넘나들며 작업할 수 있는 터미널이다.

[WWW]mlterm SRPM을 rpmbuild --rebuild mlterm-*.src.rpm으로 컴파일해 설치해서 사용하면 된다.

* mlterm을 위한 글꼴 설정
~/.mlterm/font 파일을 다음과 같이 편집한다.

# EUC-KR 일때 이용하는 글꼴 
ISO8859_1 = -ms-gulimche-medium-r-normal-*-%d-*-*-*-*-*-iso8859-1
ISO8859_1_BOLD = -ms-gulimche-bold-r-normal-*-%d-*-*-*-*-*-iso8859-1
KSC5601_1987 = -ms-gulimche-medium-r-normal-*-%d-*-*-*-*-*-ksc5601.1987-0
KSC5601_1987_BOLD = -ms-gulimche-bold-r-normal-*-%d-*-*-*-*-*-ksc5601.1987-0
# UTF-8일때 이용하는 글꼴 
ISO10646_UCS4_1=-misc-fixed-medium-r-semicondensed-*-%d-*-*-*-*-*-iso10646-1

* mlterm 설정
~/.mlterm/main 을 다음과 같이 편집한다.

scrollbar_view_name = sample fontsize=13 bg_color=wheat fg_color=black 

mlterm을 EUC-KR로 실행하고자 한다면 다음과 같은 방식으로 하면 된다.

$ mlterm --km=euc-kr --fontsize=12 

mlterm 이 이미 실행된 상태에서도 Ctrl-마우스오른쪽버튼을 클릭하면 메뉴가 떠서, 글꼴과 문자 인코딩등의 설정을 바꿀 수 있다. mlterm 은 xterm에 비해 매우 느리다. 평소에는 xterm을 Telnet/SSH 접속할 때는 mlterm을 사용하는게 나을 것이다.

참고 : mlterm을 이용하지 않고 xterm으로 ssh 클라이언트를 실행한다면 다음과 같이 한글 인코딩을 바꾸어서 터미널을 실행한다.

$LC_ALL=ko_KR.eucKR xterm 

11 Vim 한글코드 사용

#>vi ~/.vimrc set fileencodings=ucs-bom,utf-8,euc-kr 

12 xmms의 mp3 파일 지원문제

라이센스 문제때문에 레드헷에서 MP3지원을 안하기 때문에 아래주소에서 xmms-mp3-1.2.10-2.2.p.1.fc2.fr.i386.rpm 을 다운 받은후 설치하여 mp3을 실행.

yum으로 패키지를 설치하려면,

# yum install xmms-mp3 

참고 : 윈앰프 방송예 (2004.12.13 현재) http://a0.inlive.co.kr:8000


13 xmms 한글 설정

XMMS Options->Preferences->Fonts 탭에서 "Use fontsets" 체크, "Use X font" 체크.
Playlist에 다음을 입력
-adobe-helvetica-medium-r-*-*-12-*,-baekmuk-gulimbdf-medium-r-normal-*-12-*-*-*-m-*-ksc5601.1987-0 

Main Window에 다음을 입력

-adobe-helvetica-medium-r-*-*-12-*,-baekmuk-gulimbdf-medium-r-normal-*-12-*-*-*-m-*-ksc5601.1987-0 
Title탭에서는 Title Format을 %f로 지정한다. 이렇게 하지 않으면 기존 EUC-KR로 되어 있는 ID3 태그들의 내용이 다 깨져 보이게 된다. 그냥 파일 이름만 보는게 낫다.

*XOSD 한글 설정
XMMS가 파일을 바꿔 연주할 때마다 화면에 제목을 뿌려주는 프로그램이다.

# yum install xmms-xosd 
General Plugins탭에서 On Screen Display를 플러그인 사용으로 활성화 시켜주고, 설정 버튼을 누른다.
글꼴 선택 부분을 다음과 같이 한다.
-adobe-helvetica-bold-r-*-*-24-*,-baekmuk-gulimbdf-bold-r-normal-*-24-*-*-*-m-*-ksc5601.1987-0 


14 vfat, ntfs 파티션 설정

ntfs 를 사용하려면 http://linux-ntfs.sourceforge.net/rpm/index.html 에서 Fedora를 위한 최신 ntfs 모듈 RPM을 받아서 설치.
# rpm -Uvh kernel-ntfs-2.4.22-1.2129.nptl.i686.rpm # modprobe ntfs 

fstab 을 다음과 같이 편집한다.

/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro,iocharset=utf8 0 0 
/dev/hda1 /mnt/win ntfs iocharset=utf8,defaults,users,umask=0200 0 0
iocharset=utf8 을 해줘야 한글을 볼 수 있다. users와 umask는 일반 사용자의 vfat, ntfs 파티션 제어용임.

15 X-manager 선택방법

  1. ConsSole에서 X-Window Manager(gnome or KDE) 선택 Script

리눅스 부팅을 서버로 사용하는 사용자의 경우는 콘솔로 부팅하는 경우가 많다. 이러한 사용자의 경우 콘솔상에서 X-windows를 부팅하고자 할 때 이용하면 된다.

#! /bin/bash case "$1" in gnome) 
echo 'exec gnome-session' > ~/.xinitrc ;; fluxbox)
echo 'exec startfluxbox' > ~/.xinitrc ;; kde)
echo 'startkde' > ~/.xinitrc *)
echo $"chose either gnome or kde" exit 1 esac startx exit 0

2. 부팅을 X-Windows로 바로 부팅되게 하고자 할경우 방법
콘솔로 부팅하지 않고 리눅스 부팅시에 X-windows로 바로 부팅하고자 할경우에는 아래와 은 방법으로 설정하면된다.

#>cat ~/.Xclients 
#! /bin/bash
#X-manager Start (If your want to use KDe , Use Command 'startkde')
exec gnome-session # 한/영 키 적용(키별 맵핑번호 확인:
#>xev , 설정화일:
#>vi /etc/X11/xmodmap ) xmodmap /etc/X11/Xmodmap

16 Reference

관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
[웹 서버] 소스로 APM 설치 (작성: 정성재 정리:임헌정)  (Linux_일반) (2005/02/13 04:38 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=191

소스로 APM 설치 하기 (apache2.3 ,php,  Mysql4.X)

1. 소스 받기
아파치 : http://httpd.apache.org/download.cgi

Mysql : wget http://mysql.new21.com/   target=_blank>http://dev.mysql.com/get/Downloads/MySQL-4.0/mysql-standard-4.0.23-pc-linux-i686.tar.gz/from/http://mysql.new21.com/  
(4.1버전도 있지만 제로 보드와 연동 안됨)

Php : http://kr2.php.net/get/php-4.3.10.tar.gz/from/a/mirror

2. 압축 풀기

3. mysql 설치
1) 컨피규 : ./configure --prefix=/usr/local/mysql --with-charset=euc_kr
* NOTE: This is a MySQL binary distribution. It's ready to run, you don't need to configure it! 이란 메시지 뜨는데 왜지?

2) 폴더 옮기기 : mv mysql-standard-4.0.23-pc-linux-i686 /usr/local/mysql

3) 데몬 실행 : /usr/local/mysql/bin/mysqld_safe --user=root &
(/etc/rc.d/rc.local에 추가 하여 자동 실행 만들기)

4) 작동 확인 :ㅣ ./mysql -uroot mysql   -> quit



4. 아파치 설치
1) 컨피규 : ./configure --prefix=/usr/local/apache --enable-mods-shared=most --enable-module=so
2) make ; make install

5. php 설치
1) 컴 피규 : ./configure --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/apache/conf --with-exec-dir=/usr/local/apache/bin \
--enable-track-vars --enable-trans-sid
(cannot find output from lex; giving 일 경우 flex 설치)
(configure: error: Try adding --with-zlib-dir=<DIR>. Please check config.log for more information.뜨면 zlib설치)
************************************************************************************
* 여기서 잠깐 혹시 zlib 문제로 설치가 안된다면 아래 내용을 참조 바란다.
************************************************************************************
1). http://www.gzip.org/zlib/ 에서 zlib 을 다운 받는다.
wget http://www.gzip.org/zlib/zlib-1.2.1.tar.gz

2). zlib 설치

# tar -xvzf zlib-1.1.4.tar.gz
# cd zlib-1.1.4
# ./configure -s // libz.so 동적모듈생성
# make
# ./configure // libz.a 정적모듈생성
# make test
# make install

# cp libz.so* /usr/local/lib

# cd /usr/local/lib
# rm -rf libz.so
# rm -rf libz.so.1
# ln -s libz.so.1.1.4 libz.so
# ln -s libz.so.1.1.4 libz.so.1

# vi /etc/ld.so.conf
/usr/local/lib추가 // 라이브러리 경로 추가

# ldconfig // 라이브러리 경로 적용명령
************************************************************************************
2) make ; make install
3) cp php.ini-dist /usr/local/apache/conf/php.ini
4) httpd.conf 설정(vi /usr/local/apache/conf/httpd.conf)
        - ServerName에 도메인이나 IP입력
        -LoadModule php4_module        modules/libphp4.so 있는지 확인
        -AddType 에 AddType application/x-httpd-php .php .htm .html .inc .php4 .php3
                      AddType application/x-httpd-php-source .phps 추가
5) 데몬 실행 : /usr/local/apache/bin/apachectl restart
관리자 님 | 코멘트(5) | 스크랩|프린트|M|D
고스트 사용 설명-Ghost 이미지를 복원할 수 있는 부팅용 CD 작성 방법  (Computer_일반) (2005/02/13 04:26 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=190

제목 없음 Ghost 이미지를 복원할 수 있는 부팅용 CD 작성 방법

 

상황

 

시스템을 시동할 수 있고 CD-ROM 디스크에 저장한 Ghost 이미지 파일을 복원할 수 있는CD-ROM 디스크를 작성하려고 합니다.

 

해결 방법

 

Ghost 이미지 파일을 포함하는 부팅용 CD-R 또는 CD-RW 디스크를 작성하는 데 다음 두 가지 방법이 있습니다.

 

방법 1: CDR/RW 디스크에 직접 기록

Ghost로 CDR/RW 디스크에 이미지 파일을 직접 저장할 때 CDR/RW 디스크를 부팅용으로 만들 수 있습니다. 이 방법을 사용하려면 다음 Ghost 버전 중 하나를 사용하여 디스크에 이미지 파일을 기록하십시오.

 

Symantec Ghost 7.5

Symantec Ghost 7.0

Symantec Ghost 6.5 Enterprise Edition

Norton Ghost 2002

Norton Ghost 2001

 

Ghost가 디스크를 부팅용으로 만들지 여부를 묻는 메시지를 표시하면 [예]를 선택하십시오. 메시지가 나타나면 적합한 CDR/RW 드라이버가 있는 플로피 디스크를 삽입하십시오. 자세한 내용은이미지 파일을 CDR/RW 디스크에 직접 저장하는 방법을 참조하십시오.

 

방법 2: 타사 소프트웨어를 사용하여 CDR/RW 디스크에 기록

Ghost를 사용하여 이미지 파일을 작성하고 하드 디스크에 있는 파티션과 같은 임시 위치에 저장할 수 있습니다. CDR/RW 디스크에 포함할 수 있도록 다른 파일을 수집하고 편집한 후에 타사의 소프트웨어를 사용하여 이러한 파일 및 Ghost 이미지 파일을 CDR/RW 디스크에 복사하고 부팅용으로 만들 수 있습니다. Ghost가 Symantec Ghost 6.5 Enterprise Edition 및 Norton Ghost 2001보다 이전의 버전이거나 CDR/RW 디스크에 직접 이미지 파일을 저장하지 않을 경우, 이 방법을 사용하십시오.

 

앞으로 이 문서에서는 방법 2를 사용하는 방법 및 부팅용 CDR/RW 디스크에서 이미지 파일을 복원하는 방법을 설명합니다.

 

부팅용 CD-ROM 작성

우선, 필요한 대로 파일을 작성하고 편집한 다음 모든 파일을 CD-ROM으로 복사하십시오. 다음 단계를 수행하십시오.

 

참고: 이 정보를 편의상 제공합니다. 시만텍은 CD에서 운영 시스템(DOS)을 불러오는 데 기술 지원을 제공하지 않습니다. 운영 체제를 불러오거나 Ghost를 실행하는 데 문제가 발생하면 사용자의 CD 드라이브에 적합한 실시간 모드(real-mode) 드라이버를 사용하고 있는지, CD로 복사한 모든 운영 체제 파일이 DOS와 동일한 버전인지 그리고 손상된 파일이 없는지 확인하십시오. 계속 문제가 발생하는 경우, CD 드라이버 제조업체 또는 Microsoft에 기술 지원을 문의하십시오.

 

파일을 작성하려면 다음과 같이 하십시오.

1. Ghost 이미지 파일을 작성하십시오. 단일 CD에 저장하기에 디스크나 파티션이 너무 큰 경우, CD에 알맞도록 Ghost 이미지 파일을 작성하거나 변경하는 방법은 다음 문서를 참조하십시오.

큰 이미지 파일을 별도의 CD-ROM에 저장하는 방법

이미지 파일을 분할하는 방법

 

Ghost 이미지를 CD로 굽기

2. CD-ROM에 적합한 DOS 드라이버를 구하십시오.

 

Windows 98 부트 디스크는 많은 CD-ROM 장치에 대한 DOS 드라이버를 포함합니다.

Symantec Ghost 6.5 Enterprise Edition, Symantec Ghost 7.0, Symantec Ghost 7.5, Norton Ghost 2001 및 Norton Ghost 2002는 Ghost Boot Wizard에서 "CD-ROM 부트 디스크" 옵션을 선택하면 플로피 디스크에 DOS CD-ROM 드라이버를 포함합니다.

DOS CD-ROM을 받는 문제에 대한 자세한 정보는 CD-ROM 문서를 참조하거나 CD-ROM 제조업체에 문의하십시오. 많은 CD-ROM 제조업체들의 웹 사이트에서 드라이버를 무료로 다운로드할 수 있습니다.

제조업체가 CD-ROM의 DOS 드라이버를 만들지 않는 경우, CD-ROM 드라이브에서 시스템을 시동할 수 없습니다.3.

CD에서 시동하려면 Config.sys 및 Autoexec.bat 파일을 작성하십시오. "Config.sys의 내용" 및 "Autoexec.bat의 내용" 섹션을 참조하십시오.

CD-ROM에 파일을 복사하려면 다음과 같이 하십시오.

1. 첫 번째 CD-ROM에 다음 파일을 복사하십시오.

 

참고: 이 작업에서는 CD-R 및 CD-RW 디스크에 기록하는 타사의 소프트웨어가 필요하며 부팅용으로 만들 수 있습니다. 부팅용 CD를 만드는 방법에 대한 자세한 정보는 사용자의 CDR/RW 소프트웨어의 제조업체에 문의하십시오.

 

IO.sys

MSDOS.sys

Command.com

Himem.sys

Config.sys

Autoexec.bat

Mscdex.exe

참고: 이것은 CD-ROM 장치의 일반적인 드라이버 파일이며 사용자의 CD-ROM 드라이브에 적합한 특정 드라이버가 필요할 수도 있습니다.

일부 Adaptec CD-ROM 드라이브에 대한 Oakcdrom.sys와 같이 사용자의 CD-ROM 드라이브에 특정한 DOS CD-ROM 드라이버

Ghost.exe

이미지 파일 세트의 첫 번째 파일2.

이미지 파일 세트의 두 번째 파일을 두 번째 CD-ROM에 복사하십시오.

 

3. 이미지 파일 세트의 각 연속 파일을 별도의 CD-ROM에 복사하십시오.

Config.sys의 내용:

Config.sys 파일은 Himem.sys 및 CD-ROM 드라이브의 특정 DOS 드라이버를 불러오고 DOS 메모리 및 환경 공간 또한 설정합니다. 다음 행을 포함하는 Config.sys라는 텍스트 파일을 작성하십시오.

 

device=himem.sys

device=<your DOS CD-ROM driver>

files=50

buffers=30

dos=high,umb

stacks=9,256

lastdrive=z

 

위의 예제에서 다음 행을 적절한 행 또는 사용자의 특정 CD-ROM 드라이브에 대한 행으로 대체하십시오.

 

device=<your DOS CD-ROM driver>

 

예를 들어, 일부 유형의 Adaptec CD-ROM 드라이브에 대한 행은 다음과 같을 수 있습니다.

 

device=oakcdrom.sys /D:mscd001

 

The /D:mscd001 스위치는 드라이버 파일에 이름을 할당합니다. 예를 들어, /D:hello 또한 작동할 수 있습니다. 이 스위치는 다음 두 위치에서 사용됩니다. Config.sys 파일 및 Autoexec.bat 파일 (다음 섹션에서 "Autoexec.bat의 내용"을 참조하십시오.) 두 위치에서 동일한 이름을 사용해야 합니다.

 

CD-ROM의 DOS CD-ROM 드라이버 실행 및 설정하는 방법에 대한 자세한 내용은 CD-ROM 문서를 참조하거나 CD-ROM 제조업체에 문의하십시오.

 

Autoexec.bat의 내용:

Autoexec.bat 파일은 CD-ROM의 이미지를 디스크에 기록하도록 일반적인 CD-ROM 드라이버를 불러오고 Ghost를 실행합니다. 다음과 같은 형식의 두 행을 포함하는 Autoexec.bat라는 텍스트 파일을 작성하십시오.

 

mscdex.exe /D:<driver name> /L:<drive letter>

ghost -clone,mode=load,src=<location of image file>,dst=<disk number> -sure -fx

 

참고: Ghost 구문은 특정 위치의 Ghost 행에서 띄어쓰기해야 합니다. 다음 위치를 제외하고 Ghost 행에 띄어쓰기를 포함하지 마십시오.

 

Ghost와 -clone 사이

숫자>와 -sure 사이

–sure와 –fx 사이

 

다음 예제에서 CD-ROM 드라이브는 문자 Q에 할당되며 Myimage.gho라는 이미지 파일의 위치는 Q:\Myimage.gho:

 

mscdex.exe /D:mscd001 /L:Q입니다.

ghost -clone,mode=load,src=q:\myimage.gho,dst=1 -sure -fx

 

Mscdex.exe 행에서:

/D:mscd001 스위치는 드라이버 파일의 이름을 Mscdex.exe 파일에 제공합니다.이 이름은 이전에 Config.sys 파일에 할당했던 이름과 동일해야 합니다.

/L: 스위치는 CD-ROM 드라이브에 문자를 할당합니다. CD-ROM 드라이브에 C 이상의 드라이브 문자를 사용할 수 있으나 시스템에서 가장 높은 드라이브 문자보다 순서상으로 높은 드라이브 문자를 사용하는 것이 좋습니다. 예를 들어, 두 개의 하드 드라이브, C: 및 D:가 있는 경우, CD-ROM 드라이브에 문자 F이상을 할당하는 것이 좋습니다.

 

두 번째 행 (Ghost 행)이 다음 스위치가 있는 Ghost를 실행합니다.

-clone

이 스위치는 다음 –clone 다음에 오는 스위치가 복제 작업의 매개 변수를 제공하도록 Ghost에 지시합니다.

mode=load

이 스위치는 작업이 기존 이미지를 가지고 있는 드라이브에 기록하도록 Ghost에 지시합니다.

src=<location of image file>

이 스위치는 이미지 파일의 위치를 Ghost에게 알려줍니다. 드라이브 문자는 /L:에서 지정된 드라이브 문자와 일치해야 합니다. 이전의 Autoexec.bat 행에 있는 스위치 위의 예제에서, Myimage.gho 파일의 위치는 (디렉토리가 아닌) CD-ROM 드라이브의 루트입니다.

dst=<disk number>

이 스위치는 Ghost가 기록할 물리적 디스크를 Ghost에 지시합니다. 디스크 1은 시스템에 있는 첫 번째 물리적 디스크입니다. 이 스위치는 파티션과 구별됩니다. 이러한 지침은 단일 파티션이 아닌 전체 디스크에 기록하는 작업과 관련된 것입니다.

-sure

이 스위치는 작업을 시작한 후에 사용자의 개입 없이 작업을 실행하도록 Ghost에 지시합니다. 이 스위치는 선택적입니다. 스위치를 사용하지 않는 경우, 복원 작업을 시작하기 전에 Ghost의 질문에 답해야 합니다.

-fx

이 스위치는 복제 작업을 완료한 후에 Ghost를 종료하도록 Ghost에 지시합니다. CD-ROM을 사용하여 Ghost 이미지를 드라이브에 복원할 때 이 스위치는 시스템을 DOS 프롬프트 상태로 남겨둡니다. 이 스위치는 선택적입니다. 이 스위치를 사용하지 않는 경우, Ghost는 "불러오기 완료" 또는 "절차 완료"와 같은 메시지를 표시하는 화면에서 종료합니다.

 

이미지 저장 방법

 

작성한 CD-ROM의 이미지를 복원하려면 다음과 같이 하십시오.

1. CD-ROM에서 자동으로 시동하도록 시스템의 BIOS를 설정하십시오. 시스템 BIOS 변경에 대한 정보는 시스템의 문서를 참조하십시오.

 

2. 시스템을 끄십시오.

3. 부팅용 CD-ROM을 CD-ROM 드라이브에 넣으십시오.

4. 시스템을 켜십시오. Ghost는 CD-ROM의 이미지가 있는 디스크에 자동으로 기록합니다. 작업을 완료하면 시스템은 D:\>와 같이 DOS 프롬프트 상태가 됩니다.

5. 드라이브에서 CD-ROM을 제거하십시오.

6. 시스템을 다시 시작하십시오.

제품 :Norton Ghost 2001, Norton Ghost 2002, Norton Ghost 6.0 Enterprise, Norton Ghost 6.0 Standard, Symantec Ghost 6.5, Symantec Ghost 7.0, Symantec Ghost 7.5

문서 번호:20020503081227933

운영 체제:DOS, Windows 95, Windows 98, Windows ME, Windows NT, Windows 2000, Linux, Novell NetWare

최근 업데이트:06/19/2002

 

관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
제로보드 회원과 연동이 가능한 웹하드(오렌지디스크)  (Homepg_일반) (2005/02/12 11:47 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=189

앗...

제로보드 회원DB와 연동이 가능하네요...

아쉬운 건 사용자 제한이 있네요.,...

그래두 쓸만하네요

강추합니다.

관련사이트는 orangedisk.co.kr에 가 보시면 나옵니다.

프리 버젼으로 아이디 공유
관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
리눅스 데몬 종류 & 설명 | Linux 2004/06/02 14:58  (Linux_일반) (2005/02/11 09:30 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=188


http://blog.naver.com/saram93/20002912689

amanda : 백업 클라이언트인 amanda 데몬

amandaidx : amanda 서버의 패키지 서비스 중 하나인 amandaidx 데몬

amd : auto mount daemon, 시스템의 요청이 있는 경우에 자동으로 장치와 NFS 호스트를 마운트해 주는 데몬. 네트워크의 설정이 잘못된 경우에는 부팅을 하는 도중에 문제를 일으킬수 있으므로 처음에서 꺼두는 것이 좋다.

amidxtape : amand 서버에 패키지 서비스 중 하나인 amidxtape 데몬

anacron : 시간에 따라 지정한 프로그램을 정기적으로 실행하는 데몬. cron과 같은 기능을 하지만 계속 켜두지 않는 컴터에서 사요하는 데몬

apmd : 베터리 상태를 감시하고 syslog(8)에 기록하며 시스템을 끄기도 하는 데몬

arpwatch : 이더넷 카드와 ip 어드레스의 설정 관계를 유지하는 데몬

atd : 특정 시간 또는 시스템 부하가 적을때 지정된 명령을 실행시키는 데

autofs : 파일 시스템을 사용하고자 할때 자동으로 마운트 시켜주는 데몬

chargen : chargen의 TCP 버전 서버

chargen-upd : chargen의 UDP 버전 서버

ciped : ip address를 암호화하는 CIPE 데몬

crond : cron을 실행시키는 데몬, cron은 지정한 프로그램을 특정 시간에 주기적으로 실행시키는 유닉스 표준 프로그램

daytime : daytime의 TCP 버전 서버. daytime은 클라이언트의 질의에 응답하여 아스키 형태로 현재 시간과 날짜를 출력하는 데몬. TCP 포트 13을 사용

daytime-udp : daytime의 UDP 버전 서버. UDP포트 13을 사용

dhcpd : Dynamic host configuration protocol server daemon. 동적 호스트 제어 프로토콜 서버 데몬. BOOTP와 DHCP가 포함된 데몬으로 클라이언트들이 부팅할때 자동으로 동적 IP 어드레스와 네트워크 정보를 가질수 있게 해줌.

echo : echo 의 TCP 버전 서버

echo-udp : echo 의 UDP 버전 서버

finger : finger 리퀘스트에 응답하는 서버. finger는 사용자에 대한 로그인 네임, 디렉토리, 쉘과 최종 로그인 시간에 대한 정보를 볼수 있게 하는 프로토콜

gated : gated(라우팅 데몬) 을 시작하거나 종

gpm : MC(midnight command) 와 같은 텍스트 기반 리눅스용 애플리케이션에서 마우스를 쓸수 있게 해주는 데몬. 콘솔에서 마우스를 이용한 팝업 메뉴와 복사/ 붙이기 기능도 지원

httpd : 웹 서비스를 위한 아파치 데몬. html파일과 cgi를 사용가능하게 함

identd : 특별한 TCP 연결에서 사용자의 신원을 결정해 주는 데몬. TCP 포트번호를 주면 연결된 서버 시스템 소유자를 확인할수 있는 문자열을 돌려줌

imap : 원격 사용자가 imap 클라이언트(Pine, netscape communicator)를 이용하여 자신의 메일에 접근할수 있게 하는 서비스

imaps : 원격 사용자가 SSL을 지원하는 imap 클라이언트(netscape communicator, fetchmail 등)를 이용하여 자신의 메일에 접근할수 있게 하는 서비

innd : 유즈넷 뉴스 서버를 이용하여 지역 뉴스 서버를 설정할수 있는 데몬

ipchains : 패킷 필터링 파이어월을 자동으로 실행하는 데몬

ipop2 : 원격 사용자가 pop2 클라이언트를 이용하여 메일에 접근할수 있게 하는 서비스

ipop3 : 원격 사용자가 pop3 클라이언트를 이용하여 메일에 접근할수 있게 하는 서비스

irda : irda 가 정상적으로 동작하도록 해 주는 데몬

keytable : /etc/sysconfig/keytable로 키보드 유형을 변환할수 있게 하는 서비스. 한텀에서 kbdconfig 프로그램을 실행하여 키보드 유형을 변환할수 있다. 대부분의 시스템에서 keytable 데몬은 실행시켜 두어야 한다.

kudzu : 부팅시 새롭게 추가된 하드웨어를 설정할 수 있게 hardware probe를 실행시키는 데몬

linuxconf : 시스템 설정을 유지하기 위해 부팅시에 다양한 태스크의 실행을 정렬시키는 데몬.

linuxconf-web : 웹을 통해 linuxconf를 실행할수 있게 연결을 허용하는 데몬

lpd : 프린터(line printer)가 정상적으로 동작하도록 해 주는 프린트 서비스 데몬

mars-nwe : netware IPX 프로토콜을 사용하는 클라이언트에게 리눅스 머신에서 파일과 프린트 서버를 호환시켜 주는 데몬

mcserv : midnight command(MC) 서버이다. MC끼리 네트워크를 공유한다

mysqld : 매우 빠르고 안정적인 mysql 데이타 베이스 서버 데몬이다

named : 도메인 네임과 ip어드레스를 해석하기 위한 DNS서버(BIND) 데몬. 로컬 호스트에서 DNS서버를 운영할때만 실행 시킨다.

netfs : 삼바, 네트워크 파일 시스템(NFS), NCP(netware)등의 마운트와 언마운트에 관여하는 데몬.

network : 네트워크 인터페이스의 설정을 시스템 부팅시 커널에 적재시키는 데몬.

nfs : TCP/IP 네트워크에서 파일을 공유할수 있게 하는 데몬. /etc/exports 파일에서 설정한 NFS 서버가 기동할수 있게 해 준다.

nfslock : NFS파일을 locking 한다.

nscd : NIS/NS 를 사용할수 있게 하는 데몬. nscd는 실행중인 프로그램의 그룹을 살피고 패스워드를 변경하거나 다음 질의를 위해 결과를 캐시하는 데몬이다.

ntalk : 서로 다른 시스템끼리 채팅이 가능하게 ntalk 연결을 허용하는 서버

ntpd : NTPv4데몬

pcmcia : 휴대용 PC에서 이더넷이나 모뎀을 쓸수 있게 하는 데몬.

pop3s : SSL을 지원하는 pop3클라이언트를 사용하여 메일에 접근할수 있게 하는 서비스이다.

portmap : RPC(NFS, NIS, mcsev등) 연결을 관리하기 위한 포트 매핑 데몬으로 RPC를 사용하는 프로그램을 실행하기 위해서는 반드시 선택하여야 하는 데몬.

postgresql : postgresql 디비에 관한 데몬

pppoe : adsl서비스에 연결시켜 주는 데몬

proftpd : 쉬운설정, 보안성, 단순성에 초점을 맞춘 개선된 ftp 서버 데몬

pxe : 부팅전 실행환경 서버. 다른 PXE기반 머신에 네트워크 부팅을 제공한다

random : 시스템에 필요한 난수 발생 및 저장 데몬

rawdevices : HDD 파티션과 같은 블론 디바이스를 위한 스크립트. /etc/sysconfig/rewdevices 파일을 편집하여 원시 디비아스를 블론 디바이스로 매핑할수 있다.

reconfig : /etc/reconfigSys 파일이 존재하면 재설정을 실행하는 데몬

rexec : rexec(3) 루틴을 위한 서버 데몬. 인증된 사용자 이름과 패스워드로 원격 실행을 제공하는 서버이다.

rlogin : rlogin 프로그램을 위한 서버 데몬. 신뢰할수 있는 호스트로부터 특권화된 포트 번호에 기반한 인증을 통해 원격 로그인을 제공한다.

routed : RIP 프로토콜을 통해 업데이트된 자동 IP 라우팅 테이블 설정 데몬

rsh : rshd 서버는 rcmd 루틴을 위한 서버이며 따라서 rsh 프로그램을 위한 서버이다. 신뢰할수 있는 호스트로부터 특권화된 포트번호에 기반한 인증 통해 원격 실행을 제공한다.

rstat : 네트워크에 연결된 사요자에게 그 네트워크 상의 머신에 대한 퍼포먼스 매트릭스를 회수할수 있게 해주는 프로토콜

rsync : 컴퓨터간 자료 공유를 위해서 사용되는 rsync에 대한 데몬이다.

rusersd : 네트워크에 특정 사용자가 있는 검색해 주는 데몬.

rwalld : 시스템에 동작중인 모든 터미널에 메시지를 표시할수 있게 해 주는 프로토콜

rwhod : 원격 접속자의 목록을 볼수 있게 해주는 데몬. finger와 비슷한 기능을 한다.

sendmail : 메일을 다른 호스트로 전송하는 메일 전송(Mail Transport Agent)데몬

smb : SMB 네트워크 서비스를 제공하기 위한 삼바 서버(smbd와 nmbd)데몬

snmpd : SNMP(Simple Network Management Protocol)데몬

squid : HTTP, FTP, gopher와 같은 프로토콜을 사용할때 캐싱 속도를 높이는 데몬.

sshd : openssh 서버 데몬

swat : 삼바 웹 관리 툴, 삼바 서버의 설정을 위해 swat를 사용하며, 웹 브라우저를 통해 901포트로 접속한다.

syslog : 많은 데몬들이 로그 메세지를 다양한 시스템 로그파일에 기록하는데 사용하는 데몬. syslog는 항상 실행되는 것이 좋다.

talk : 다른 시스템에 접속한 사용자로 부터 채팅 요구에 응답하여 터미널의 내용을 다른 사용자에게 보내서 대화할수 있게 하는 데몬.

telnet : telnet 세션을 제공하는 서버. 인증을 위해 사용자 이름과 패스워드를 사용한다.

tftp : 파일 전송을 위한 프로토콜. tftp프로토콜은 어떤 OS에서는 부팅 디스켓이 없는 워크스테이션이나 네트워크 인식 프린터를 위한 설정 파일의 다운로드, 설치 프로세스의 시작을 위해 가끔 이용된다.

time : rdate 데몬에 의해 사용되는 RFC 868 시간 서버의 TCP 버전

time-udp : rdate 데몬에 의해 사용되는 RFC 868시간 서버의 UDP 버전

webmin : webmin 관리자 서버 데몬

xfs : 부팅과 셧다운시 X 폰트 서버를 시작하거나 종료시키는 데몬

xinetd : inetd 데몬을 대체하는 강력한 데몬. telnet, ftp 등과 같은 서비스를 처리하는 슈퍼 데몬.

ypbind : NIS/YP 클라이언트에서 실행되는 데몬으로 NIS도메인을 바인드한다. NIS클라이언트로 동작하기 위해서는 glibc에 기반한 시스템에서 실행되어 한다. 그러나 NIS를 사용하지 않는 시스템에서는 실행하지 말아야 한다.

yppasswd : NIS클라이언트 사용자의 패스워드를 변경할수 있게 해 주는 데몬

ypserv : 표준 NIS/YP 네트워크 프로토콜 서버. 호스트 네임, 사용자 네임과 다른 정보 데이타베이스를 네트워크를 통하여 배포하는 것은 허용한다. ypserv데몬은 클라이언트에서는 필요하지 않으며 NIS 서버에서 실행된다.  


관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
리눅스 시스템을 위한 성능 최적화 기법  (Linux_보안) (2005/02/11 08:10 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=187

제목 없음   리눅스 시스템을 위한 성능 최적화 기법(0) - 강좌를 시작하며
 저자: 최경락 |  날짜: 2001년 05월 29일  


리눅스 시스템 최적의 상태에서 최대의 성능을 마음것 뽐내도록 퍼포먼스를 조율(튜닝, Tunning)하는 일은 리눅서라면 한번쯤 해보고 싶은 일일 것이다. 퍼포먼스 조율은 리눅스를 사용하면 가장 중요한 일 중에 하나인데, 아무리 좋은 사향의 컴퓨터에 최상의 리눅스가 깔려 있다고 해도, 그 리눅스 시스템이 굼뱅이 기어가듯 돌아간다면 그야말로 아무런 쓸모가 없기 때문이다. 모든 시스템이 그렇듯이 리눅스 시스템의 성능 조율도 초기 설치 과정부터 선행되어야 하고, 지속적인 관심 또한 중요하다.
이번 장에서는 리눅스 시스템 성능 조율의 기본 원칙에 대해 알아본다.
코리아인터넷닷컴 회원들에게 연재될 기사는 다음과 같다. 매일 조금씩 그날 그날의 분량을 소화해 보도록 하자.

1 리눅스를 사용할 용도 결정

 

리눅스 시스템 최적의 상태에서 최대의 성능을 마음것 뽐내도록 퍼포먼스를 조율(튜닝, Tunning)하는 일은 리눅서라면 한번쯤 해보고 싶은 일일 것이다. 퍼포먼스 조율은 리눅스를 사용하면 가장 중요한 일 중에 하나인데, 아무리 좋은 사향의 컴퓨터에 최상의 리눅스가 깔려 있다고 해도, 그 리눅스 시스템이 굼뱅이 기어가듯 돌아간다면 그야말로 아무런 쓸모가 없기 때문이다. 모든 시스템이 그렇듯이 리눅스 시스템의 성능 조율도 초기 설치 과정부터 선행되어야 하고, 지속적인 관심 또한 중요하다. 이번 장에서는 리눅스 시스템 성능 조율의 기본 원칙에 대해 알아본다.

1 리눅스를 사용할 용도 결정

리눅스 시스템에 최상의 조건에서 최대한의 효과를 나타내기 위해서는 반드시 성능 조율(Performance Tuning)이라는 작업이 필요하다. 사실 운영체제 성능 튜닝은 데이터베이스 튜닝이나 네트웍 튜닝 작업과는 달리 최적화 과정을 거치지 않아도 사용자나 관리자 모두 불편함을 느끼지 못하는 경우가 많다. 하지만 필요한 시간에 관리자가 운영체제에 관심을 가지고 관리자로써 필요한 작업만 해주면, 시스템은 날렵하고 산뜻하게 운영될 수 있다. 운영체제 성능 조율은 예상만큼 어렵거나 시간이 오래 걸리는 일이 아니다. 약간의 관심과 노력으로 크게는 시스템 업그레이드와 같은 효과를 얻을 수 있고, 작게는 시스템의 속도를 살릴 수 있는 것이다. 이런 성능 조율은 초기 설치 과정에서부터 선행되어야 하며, 설치 이후 운영할 때 사후 관리도 설치 과정만큼이나 중요하다.
모든 소프트웨어를 사용하고자 할 때, 사용하고자 하는 작업에 적합한 소프트웨어를 사용하고 작업에 알맞게 설정해야 최상의 효과를 발휘하듯이, 리눅스도 먼저 리눅스 시스템을 설치하기 전에 어떤 용도로 사용할 것인지를 결정해야 한다. 이 문제는 간단하면서도 결정하기가 의외로 상당히 까다로운 부분임에 틀림없지만, 이것이 결정되어야 리눅스를 설치할 때, 기본적인 설정을 할 수 있다. 리눅스를업무용으로 사용할 것인지, 아니면 상대적으로 개인용이나 개발용으로 사용할 것인지를 먼저 결정한 다음에 리눅스를 설치를 해야 하고, 그에 따른 설정을 해야 한다. 요즈음에 나오는 리눅스 배포본들은 아나콘다와 같은 설치 프로그램을 제공하여, 윈도우보다 훨씬 알기 쉽고, 편한 직관적인 인터페이스를 제공하기 때문에 예전처럼 설치 그 자체에 대한 어려움은 없어졌다.

 


2 리눅스 파티션 조율하기

2 리눅스 파티션 조율하기

만약 리눅스를 업무용으로 결정했다면 웹서비스나 전자메일 서비스, 파일 서비스와 같은 대내외적인 서비스가 목적을 것이다. 이 경우에는 리눅스가 지속적으로 실행되어야 하며, 리눅스가 다운되면 안된다는 것을 전제로 할 수 있다.
따라서 리눅스 시스템 운영에 중요한 공간인 /home 공간과 /var 공간, /tmp 공간, Swap 공간에 대한 비중이 커지게 된다. /home 공간은 개인 사용자나 주요 서비스들의 작업 공간이 되며, /var 공간은 동작중인 프로세서들의 로그(log)과 커널(Kernel), 데몬(Daemon)에 관련된 내용이 저장되는 공간이고, 그리고 임시로 파일을 저장하는 /tmp 공간과 가상 메모리 역할을 하는 스왑 공간의 비중이 커지게 되는 것이다.
그리고 개발용이나 개인용으로 리눅스를 사용한다면, /home 공간과 /usr 공간이 우선적으로 확보되어야 한다.

[표 1] 은 리눅스 시스템의 대표적인 파티션을 설명한 것인데, 이렇게 하는 이유는 리눅스 시스템을 체계적으로 나누는 것은 보다 최적화된 상태를 유지하기 위해서이다.
예를 들어 리눅스 시스템을 루트(/) 영역과 스왑 영역으로만 나눠 설치했는데, 설치한 하드디스크와 관련된 문제가 생겼다고 가정해 보자. (대부분의 문제는 하드디스크에 여유 공간이 없을 때에 발생한다.) 그럼 어떤 곳에서 문제가 있는지 파악해야 하는데, [표 1]과 같이 분리된 파티션으로 구분하지 않았다면 제대로 파악하기가 힘들어진다.
또한 리눅스 시스템은 저장 공간이 100% 모두 차게 되면 다운되고 만다. 그러나 용도에 따라 파티션을 알맞게 나누었다면 시스템의 운영에 대한 최대한 유연성을 확보할 수 있게 된다.

개발용이나 개인용으로 사용한다면 하드디스크 3 ~ 4GB 정도의 용량만으로 충분하지만, 리눅스 시스템을 업무용으로 특히 데이터베이스 서버로 사용한다면 리눅스 시스템을 위한 저장 공간 이외에 데이터만을 위한 하드 디스크를 준비해, 별도의 여유 공간을 고려해야 한다.
[표 1]에서 언급한 공간을 확보했다면 리눅스 설치시 최적화된 상태를 만들기 위한 기본적인 여건은 만들어진 셈이다.


저장 공간

 설명

/

리눅스의 가장 중요한 파티션으로 500MB 정도면 충분하다. (보통 40% 정도만 사용된다.)

/usr

 실제 리눅스 사용자들이 사용하는 리눅스 어플리케이션이 설치될 디렉토리로 800MB ~ 1GB정도면 충분하다. 그러나 X 윈도나 KDE, GNOME 과 같은 데스크탑 환경을 사용한다면 1GB~2GB 정도가 필요하다. (패키지 설치 후에 보면 알겠지만 /usr 공간은 상당히 많은 공간을 사용한다. 80% 정도 사용한다.)

/tmp

 여러 리눅스 어플리케이션이 임시로 사용되는 공간으로 500MB ~ 1GB 정도가 적당하다.

/home

 리눅스를 사용하는 사용자가 사용하는 공간이다. 그리고 파일 서비스나 파일 서비스, FTP 서비스를 하는데도 꼭 필요한 공간이다. 웹 서비스를 한다면 좀 더 많은 공간이 필요하며, FTP 서비스나 내부 파일 서비스를 한다면 추가 공간을 확보할 필요가 있다. 현재 리눅스 시스템을 사용할려는 사용자 수와 서비스를 고려해서 공간을 조절해야 된다.

/var

 리눅스에서 /home 공간 만큼 많이 사용되는 공간으로, 많은 수의 어플리케이션의 데이터, 특히 메일 서버의 데이터와 데이터베이스 서버의 데이터가 저장되는 곳이다. 리눅스를 개인용으로 쓸려면 500MB ~ 1GB 정도면 적당하지만, 업무용으로 사용할려면 /home 공간과 마찬가지로 추가 공간이 필요하다.

<스왑공간>

 리눅스 시스템에서 사용하는 가상 메모리로 사용하는 공간으로 실제 물리적인 메모리 만큼, 얼마만큼 공간을 확보했느냐에 따라 리눅스 시스템의 성능이 차이가 심하게 날 수 있다. 대개 설치한 컴퓨터가 가진 물리적인 메모리의 2~3배 정도 크기가 적당하다.


[표 1] 최상의 리눅스 파티션 가이드라인


[표 1]에는 볼 수 있듯이 개인용으로 사용할 때와 업무용으로 사용할 때 /home 공간과 /var 공간의 크기가 확실하게 차이가 남을 알 수 있다. 이는 /home 과 /var 파티션에 서비스하는 소프트웨어의 데이터와 리눅스 사용자의 데이터가 저장되는 곳이기 때문인데, /home 영역에는 리눅스 사용자 데이터와 보통 파일(Samba) 서비스나 FTP 서비스, 웹 서비스의 데이터가 저장되고(그런데, 이것은 서비스 소프트웨어의 설정에 따라 달라질 수 있다.), /var 영역에는 메일(Sendmail) 서비스, MySQL이나 PostgreSQL 과 같은 데이터베이스 데이터들이 저장된다. 그래서, 보통 업무용으로 리눅스 시스템을 사용할 때에는 디스크를 3 ~4 GB 정도의 적은 용량 디스크에 대용량(30 GB 이상) 디스크를 한개 이상을 구입하여 스왑영역과 / 영역과 /usr 영역, /tmp 영역은 적은 용량의 디스크에 여러개의 파티션으로 만들고, /home 이나 /var 영역은 각각을 대용량 디스크를 붙여서 업무용에 사용하면 된다.


 


3 리눅스 커널 최적화 하기

 

3 리눅스 커널 최적화 하기

이제 리눅스 커널의 최적화에 대해 이야기 하는데, 사실 리눅스 시스템의 성능 조율의 핵심은 커널 최적화에 있다고 해도 과언이 아니다. 리눅스의 핵심이자 기본인 커널이 안정화되고 최적화가 되어야지만 커널 위해서 수행되는 소프트웨어들이 제대로 돌아갈 수 있는 것이다. 왜 옛말에 ‘수신제가치국평천하(修身齊家治國平天下)’라는 말도 있지 않은가‘. 리눅스에서 커널 최적화은 바로 자기 몸을 갈고 딲는 것과 마찬가지이다.
대부분의 리눅스 사용자들이 최신 버전을 선호하고 있고, 그에 따른 이득이 많은 편이라 생각하여 최신 버전을 선호하고 있다. 그러나, 리눅스 커널의 경우 버전이 높다고 해서 꼭 좋은 것은 아니다. 더욱이 업무용으로 사용한다면 커널의 버전보다는 안정성에 초점을 맞춰야 한다.
즉, 업무용으로 리눅스 시스템을 사용한다면 당연히 개발버전보다는 안정 버전을 사용해야 하며, 현재 사용하는 커널에 문제가 없다면 보다 높은 커널을 새로 설치하는 모험은 피해야 한다. 더욱이 커널 업그레이드를 경우에는 커널 자체는 물론 그 위의 소프트웨어까지 영향을 주므로 신중하게 고려해야 한다.커널 업그레이드 이전에는 문제 없이 돌아갔던 소프트웨어들이 한 순간에 뻗는(?) 문제가 발생할 수 있음을 잊지 말자.
많은 사람들이 리눅서가 되는 마지막 관문이 커널 업그레이드 및 컴파일 과정이라고 말을 하는데, 아마 상당 수의 사람들은 커널 업그레이드를 하면서 관련 프로그램들은 업그레이드를 하지 않아 낭패를 본 경험이 있을 것이다.
커널 업그레이드와 커널 최적화는 두가지 방법 모두 커널 향상을 목적으로 하면서도 그방법이 다르다. 즉, 소극적으로 조정하느냐(커널 최적화), 적극적으로 변경하느냐(커널 업그레이드)에서 시도하는 방법이 달라지게 된다. 이렇듯 커널 최적화는 현재 사용중인 커널과 시스템 환경을 분석해 가능한 빠르고 작은 커널을 유지함으로써 전체적인 시스템의 속도를 향상시키는 것을 목적으로 한다. 커널 최적화는 어찌 보면 아주 간단하다. 필요한 옵션과 드라이버만 적절하게 선택하는 것이 최선의 방법이기 때문이다.

3.1 기능이 필요없다면 제거한다.

리눅스 설치를 끝낸 상태에서 커널을 들여다 보면 실제로 필요하지도 않은 모듈이 적재되어 있는 경우를 볼 수 있다. 특히 요즈음에는 커널이 덩치가 커져서 불필요한 기능들을 많이 포함하고 있는데, 이는 응응 소프트웨어가 사용할 수 있는 메모리가 그만큼 적어지는 것을 의미한다. 따라서 커널 최적화의 첫 걸음은 필요 없는 모듈을 없애는 것부터 시작한다.
그러나, 리눅스 커널에는 수많은 옵션을 가진 기능이 많기 때문에 무엇이 필요하고 필요없는지 선택하기가 쉽지 않다. 특히 수많은 네트워킹과 파일 시스템 옵션은 커널을 다시 빌드하려는 운영자에게는 커다란 고민거리가 아닐 수 없다. 따라서 리눅스를 어떤 용도로 사용할 것인지 결정하고 커널 옵션을 선택해야 한다. 만약, 리눅스가 이더넷에 연결되어 있지 않는다면, 네트워킹 옵션에서 파이어월(Firewall)과 앨리어스(Alias)같은 기능을 꺼두기(Disable) 바란다.
그리고, 리눅스 커널은 많은 파일 시스템들을 지원하는데, 파일 시스템도 자신에게 필요한 것만 선택해둘 필요가 있다. 그러나 리눅스 시스템이 인터넷에 직접 연결되어 있고 헤커들로부터 보호받아야 할 위치에 있다면 파이어월을 설정해 다른 사용자의 접근을 막는 안전 장치는 꼭 필요하다.
그리고, 만약 커널을 업그레이드 하고자 할 때는 커널을 컴파일 작업을 시작하기 전에, 모든 옵션을 고려한 후 시스템이 필요한 옵션만 택할 필요가 있다. 어떠한 커널 옵션이 필요하다면, 커널의 부분으로써 컴파일 하거나, 커널이 이 옵션을 일종의 모듈로써 지원하도록 컴파일하면 된다. 새 커널이 나올 때마다 새로운 기능들이 추가되어 있는데, 새 커널을 컴파일 할 때, 모든 각각의 옵션이 하는 기능들을 정확하게 파악해야 한다.
리눅스가 네트웍에 바로 연결되어 있을 경우, 커널 컴파일시 포함할 경우 요긴하게 쓰이는몇가지 네트워크 기능에는 IP-방화벽(FireWalling), Tcp Syn Cookies, 소스 라우팅(Source routed) 프레임의 제거 기능등이 있다.IP-방화벽 기능은 명령어 레벨에서 IP 접근 목록(access list)의 설정을 가능케 한다. Tcp Syn Cookies 는 알려진 SYN을 이용해서 서비스를 다운시키려는 수많은 수많은 공격에서 노출되는 것을 방지하도록 해준다. 소스 라우팅된 프레임은 데이터 패킷내에 있는 패킷이 반드시 통과해야 하는 라우터를 지정하여 외부의 공격이 정상적인 라우팅 과정을 비켜가도록 해준다. 이것은 그리 좋은 방법은 아니지만, 가끔식 유용할 때가 있다.

3.2 자주쓰는 부분은 커널에 포함시키고, 자주 쓰지 않는 부분이면 모듈로 분리시켜라

리눅스 커널 2.0.x 버전에서 확장된 기능 중 하나가 모듈이라는 것이다. 즉, 모듈을 사용하면 간단히 커널을 최적화할 수 있으며, 커널의 대부분을 모듈로 만들 수 있다. 그러나, 커널을 모듈로 설정할 때 주의할 점이 있는데, 그것은 바로 모든 기능을 모듈화할 수 없다는 것으로, 기능에 따라 모듈 구현 여부가 달라진다는 것이다. 예를 들어, 리눅스가 시작과 동시에 메모리에 적재되는 기능은 모듈화하면 안되며, 이더넷 관련 기능 모듈이나 SCSI 관련 모듈은 항상 적재해 둬야 한다. 일시적으로 사용되는 마우스, 시리얼,사운드, 파일 시스템, 데이프 드라이브 등과 같은 기능은 모듈화시켜 모듈로 선택하는 것이 좋다.
간단하면서도 어려운 것이 어렵다고 느끼는 것이 바로 커널 최적화이다.커널 최적화를 하기 전에 자신에게 필요한 기능을 선택한 후에, 자주 사용되는 기능과 일시적으로 사용하는 기능, 사용하지 않는 기능들을 분류하는 작업은 커널 최적화 작업의 기본이 된다. 그리고, 리눅스 설치 후 커널은 다시 컴파일하는 것은 여간 번거로운 일이 아니다. 그러나 꼭 한 번은 해야 될 일이라고 추천하고 싶다.

3.3 긁어 부스럼! 커널 컴파일이나 업그레이드가 오히려 시스템 최적화에 악영향을 끼친다.

리눅스를 서비스나 업무용으로 사용하는 관리자들을 제외하고는 많은 리눅스 사용자들은 재미와 흥미로 그저 알고 싶어서 리눅스를 사용자들이 대부분일 것이다. 이러한 리눅스 사용자(리눅서)들은 리눅스 관련 소프트웨어의 업그레이드 내지 패치에 매우 민감해서 항상 자신의 리눅스 시스템을 최신의 것들로 유지하고 싶어한다. 리눅스 관련 어플리케이션을 항상 최신의 것으로 업데이트를 하는 것은 좋은 습관이지만, 대신 리눅스 커널의 경우에는 꼭 좋지만은 않다는 것이다.
리눅스 커널은 그 위에서 수행되는 어플리케이션을 지원해주는 서포터의 역할을 한다. 따라서, 어떤 어플리케이션의 경우에는 커널의 버전에 민감해, 실행이 안 되는 경우도 종종 있다. 이런 어플리케이션의 경우 커널의 기능이나 버전이 변함에 따라 실행되지 않는 경우가 있다.



4 리눅스 네트워킹 성능 조율하기

 

4 리눅스 네트워킹 성능 조율하기

다음으로 네트웍의 성능을 최적화하기 위한 방법을 살펴보도록 하자. 원래 전통적인 유닉스가 네트워크 철학 없이는 생각할 수 없듯이, 리눅스와 네트워킹은 따로 생각할 수 없다. 리눅스에서 네트워킹의 성능 조율도 리눅스의 전체적인 성능 최적화에 많은 영향을 미칠 수 있다. 따라서 커널의 성능을 성능을 높이는 작업을 ‘수신(修身)’이라고 한다면네트워킹 성능을 높이는 것은 바로 ‘제가(齊家)’라고 할 수 있다.

리눅스 네트워킹 최적화의 많은 부분이 커널에서 이루어지는데, 여기서는 커널 차원이 아닌 어플리케이션 차원에서 이루어지는 최적화 작업을 살펴보도록 한다. 그리고 요즈음 보안에 대한 관심이 커지고 있는데, 시스템 보안은 네트워킹 안정화와 최적화 필수 요소이다. 그래서 시스템을 관리할 때 해킹을 방지하기 위해서 네트워킹 어플리케이션 설정 방법에 대해서도 알아본다.

4.1 요긴한 네트워크 감시 프로그램 netstat

네트워킹 성능 조율에 앞서, 리눅스에 포함되어 있는 네트워크 감시 프로그램을 하나 소개 하고자 한다. 프로세스를 감시하는 유틸리티가 ps 라면, 네트워크의 소켓을 감시하는 유틸리티는 netstat 이다. netstat는 이름 그대로 네트웍의 상태를 표시하는 커맨드로 TCP/IP의 트러블 슈팅에 자주 이용되는데, 리눅스 시스템에 열려 있는 네트워크 소켓 연결 상태나, 라우팅 테이블, 인터페이스 통계등을 보여주는 유틸리티로 기본적인 네트워크 상태를 관리하는데 기초적인 정보를 제공한다. ps 명령어와 netstat 명령어의 사용법이나 보는 방법에 대해서는 man 페이지를 참고하기 바란다.


[그림 1] netstat | more 실행 결과



4.2 리눅스 네트워킹 어플리케이션의 성능 조율은 inetd 데몬을 활용에서부터 시작된다.

리눅스의 네트워크 성능을 최적화하려면 inetd라는 데몬을 적극 활용해야 한다. inetd 데몬 프로세스는 설정 파일이 지정한 TCP/UDP 소켓을 감시하는 데몬으로 디폴트로 정해진 /etc/inetd.conf 설정파일에서 inetd에게 어떤 소켓을 열어야 하고 소켓과 연결이 되었을 때, 어떤 프로세스를 실행시켜야 하는지 설정할 수 있다.
리눅스를 설치한 다음에 많은 네트워킹과 관련된 데몬이 inetd 데몬을 거치는 inetd 방식이 아닌 스탠드얼론(Standalone) 형태로 동작하는데, 자주 사용되는 네트워킹 프로그램이 아니라면 inetd 형태로 바꾸는 것이 좋다. 만약 웹 서비스나 파일 서비스도 사용 빈도가 적다면 이런한 서비스들도 inetd 형태로 구성하는 것이 좋다.
왜냐하면 inetd 형태로 하면 서비스에 접근하는 호스트를 개개의 네트워킹 프로그램들이 서로 다른 방식으로 필터링 하는 것이 아니라, inetd 데몬이 일괄적으로 필터링할 수 있기 때문이다.
즉, 허용된 호스트에게만 서비스함으로써 다른 사용자의 접근을 막을 수 있다. 이러한 inetd의 필터링 기법은 인터넷과 인트라넷을 같이 사용하는 기업에게 유용하다. 더욱이 기업의 사무가 웹으로 처리된다고 가정했을 때 외부 접근을 막기 위해 가상 IP를 사용하는데, inetd가 이런 효과를 줄 수 있다.
또한 inetd를 활용하면 변경된 설정을 바로 적용할 수 있다. standalone 형태에서 환경 설정을 다시 적용하려면 데몬을 다시 실행시켜야 하지만, inetd 형태에서는 다음 억세스에서부터 바로 적용이 되어 서비스에 지장을 주지 않는다. 이외에도 inetd를 활용하면 시스템 보안에도 많은 이점을 얻을 수 있다.

4.3 inetd를 이용한 최적의 보안 기법

앞에서 언급하였듯이, /etc/inetd.conf 설정 파일은 inetd가 어떤 소켓을 열어야 하고, 연결이 되었을 때, 어떤 프로세스를 실행시켜야 하는지 설정할 수 있는 파일이다.[그림 12.2] 이 파일을 통해서 필요한 서비스를 이용하게 할 수도 있고, 시스템에서 필요하지 않는 서비스는 없애버릴 수도 있다. 서비스를 제거하는 가장 좋은 방법은 제거하려는 서비스를 설정하는 줄의 맨 처음에 주석 표시(#)를 달아 놓는 것이다. 예를 들어, 현 리눅스 시스템에서 사용하는 TELNET과 FTP 서비스를 중단시키고, 대신 ssh를 통해서 텔넷과 FTP 서비스를 이용할 수 있도록 할 수 있다.

[그림 2] /etc/inetd.conf 설정 파일 내용


만약 어떠한 서비스를 사용해야 한다면, 가능한한 가장 안전한 방법으로 그 서비스를 설정하는 것이 좋은데. 서비스가 시스템에 요청한 것들을 체크하는 데몬인 tcpd 또안 다른 대안이 될 수 있다. tcpd는 클라이언트의 요청을 기록하고 체크하며, 체크가 끝난 후 클라이언트가 서비스를 받을 수 있다는 것이 밝혀지면, 클라이언트에게 서비스를 제공한다.
tcpd가 허가를 내리기 위해서는 /etc/host.allow와 /etc/host.deny 파일을 참조하게 된다. tcpd가 서비스를 시작하기 전에 검사할 수 있도록 하기 위해서, 설정 파일에서 inetd가 tcpd를 실행하도록 설정하기만 하면 된다. 대부분의 리눅스 배포본은 기본적으로 대부분의 서비스에서 inetd가 tcpd와 같이 동작하도록 되어 있다. 클라이언트의 텔넷 연결 요청 메시지가 도착할 때마다 tcpd가 체크하도록 하는 inetd.conf의 행은 다음과 같다.

telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd

telnet 연결 요청이 들어올 때마다 inetd는 tcpd를 활성화시키는데 tcpd는 syslogd 서비스 데몬을 통해서 연결된 상황을 기록하고 앞에서 언급한 /etc/host.allow 파일을 참조한다. /etc/host.allow 파일에 telnetd와 일치하는 것이 있고 클라이언트에게 요청하면 telnet 연결은 허가된 것으로 간주되고 연결이 이루어진다. 반면에 그러한 줄이 없다면 /etc/host.deny 파일을 참조한다. 만약 시스템이 X 네트워킹에 대해서 응답하기를 원하지 않는다면 /etc/host.deny 파일에 telnetd와 클라이언트 X를 지정하는 행이 있어야 한다.

앞에서 inetd.conf 설정 파일에서 서비스가 선언된 행을 삭제시켜 서비스를 중단시키는 방법을 이야기 했었는데,이외에 inetd를 이용하여 서비스를 꺼놓는 또 다른 방법은 프로세스 대신에 쉘스크립트를 실행시키는 것이다. 다음과 같은 telnet.new 라는 단순한 쉘 스크립트를 만들어 보자.

#! /bin/sh
echo “지금은 텔넷 서비스를 하지 않고 있습니다. 빨리 끊어 ....”

이 스크립트를 in.telnetd 대신에 실행시키기 위해서 다음과 같이 편집한다.

telnet stream tcp nowait root /usr/sbin/tcpd telnetd.new

다음과 같이 루트 계정에서 HUP 시그널을 inetd에 보내면 새로운 설정을 읽을 수 있고

kill -HUP ‘ps -aux | grep inetd | awk ' {print $2} ‘’

아니면 간단히 다음과 같이

]$ /etc/rc.d/init.d/inet restart

시작 스크립트를 실행시켜도 inted 데몬이 새로 시작되면서 새로운 설정이 반영된다. 테스트를 해보면 [그림 3]와 같은 결과가 나타날 것이다.


[그림 3] 텔넷 접속을 막은 inetd 데몬


그리고, inetd를 통해서 실행되는 프로세스들 또한 각각 설정 파일을 가지고 있다는 점을 기억하길 바란다. 이러한 설정 파일에는 활성화가 가능한 보안 설정이 있는데, 이러한 보안 설정을 조작하면 제 2의 보안 장치를 해줄 수 있다. 예를 들어 FTP 데몬의 경우, FTP의 요구를 체크하기 위해서 tcpd를 사용할 수는 있지만, 또 다른 제 2의 보안을 위해서 ftpaccess 파일을 이용하여 root에 대한 FTP 접근 시도를 가능하게 못할 수도 있다.FTP 데몬 중에서 이런 식의 설정 파일을 통해서 또 다른 보안을 설정할 수 있다.

때때로, 시스템에 두 개 이상의 네트워크 인터페이스 카드가 있는 경우 관리자는 어떤 카드가 소켓을 열지 사용자가 지정할 필요가 있을 것이다. 이런 식의 설정도 inetd 데몬을 이용해서 설정할 수 있다. 시스템이 네트워크 A와 B에 연결되어 있다고 가정하고 각각의 주소를 IPA와 IPB라고 하자. telnetd가 IPA에만 신경을 쓰도록하고 싶으면, 단순한 프로그램을 작성해서 IPB 포트 23번에 여는 이 프로그램이 telnetd가 실행되기 전에 실행되도록 하면 된다.
물론 telnetd가 읽혀져 실행이 된 뒤, 죽일 수는 있지만, 어떠한 데몬은 시스템의 모든 각각의 네트워크 인터페이스 카드에 있는 소켓을 열지 않으면 실행될 수 없기도 하므로 모든 데몬에서 이러한 방법이 가능하지는 않다.

 

4.4 리눅스 시작 네트워킹 프로그램(rc 스크립트) 조율하기

많은 수의 네트워킹 프로그램들이 TCP/IP를 관리해주는 inetd 데몬을 통해서 일괄적으로 관리할 수 있지만, 모든 네트워킹 프로그램들이 inetd를 통해서 관리될 수 있는 것은 아니다. inetd를 통해서 관리될 수 없는 프로그램들은 대부분 시스템 시작 시 rc 파일을 통해서 실행되는 데몬들인데, 만약 rc 파일을 통해서 실행되는 데몬이 필요하지 않다면 현재의 런레벨의 디렉토리(예를 들어 현재 시스템의 런레벨이 5이면 ‘/etc/rc.d/rc5.d’)에서데몬 시작 파일로 링크된 링크 파일을 삭제시켜 실행시키지 않을 수 있다.

4.5 NFS 마운트 데몬(mountd) 조율하는 방법

리눅스 시스템 시작시 마운트이라는데몬이 실행되는데, 마운트 데몬은 사용자가 리눅스 머신에서 파일 시스템을 쓸 수 있도록 해주는 데몬이다. 만약 이 데몬을 전혀 사용하지 않는다면 rc 파일을 편집해서 마운트 데몬을 동작하지 않도록 할 수 있다.
만약 네트워크에서 지정된 클라이언트가 시스템의 파일 시스템 일부분을 가지고 작업할 수 있도록 하려면, 클라이언트에 대한 정책을 실현하는 제한된 룰의 설정하에서 mountd 데몬을 실행시킬 수도 있다. 이러한 룰 설정은 클라이언트가 시스템에 제한적으로만 연결하도록 한다.

그리고 /etc/exports 파일을 편집함으로 mountd에 어떠한 제한을 설정할 수 있는데, 이 파일은 데몬이 사용자의 파일 시스템을 클라이언트가 마운트할 수 있도록 허가하기 이 전에 마운트 데몬이 참조하는 파일이다. 이 파일은 파일 시스템을 마운트하는 사용자가 누구인지에 대해서 제한을 걸 수 있을 뿐만 아니라 읽기만(Read Only) 기능과 같은 옵션을 허가받은 클라이언트에 대해서만 차별적으로 줄 수도 있다.

그리고, /etc/exports 파일을 편집하는 방법 이외에, 많이 사용되는 마운트 데몬을 설정 방법 중 하나는 /etc/fstab 파일을 편집하는 것이다. 리눅스 배포본을 설치할 때, 설치 프로그램은/etc/fstab이라는 파일을 만든다. 이 파일에서 각각의 저장 장치에 대한 정보와 이 장치들이 마운트되는 마운트 지점과 마운트 될 때 옵션등을 지정할수 있다.


[그림 4] /etc/fstab 설정 파일 내용



4.6 프린터 서비스 데몬(lpd) 조율하는 방법

네트워크 연결시 자주 이용하는 또 다른 프로그램은 프린터 서비스를 하는 lpd이다.프린터 데몬은 연결시에 510번 포트를 사용하는데/etc/hosts.lpd 파일을 편집하면 어떠한 클라이언트에 대해서 서비스를 허가할 것인지 말 것인지를 설정할 수 있다. port# 인자를 사용하여 lpd 가 510번 외에 다른 포트에도 서비스를 할 수 있도록 할 수 있다.

4.7X 서버 데몬

리눅스에 사용하는 X 윈도우 시스템은 클라이언트가 어플리케이션 화면을 서버에 보낼 수 있게 하는 네트워크 기반의 윈도우 시스템이다. 이러한 X 윈도우 시스템은 네트워크를 기반으로 하기 때문에 자칫 위험할 수 있다.
그래서 X 네트워킹 지원이 필요하지 않는다면 X 서버를 실행시킬 때 ‘-nolisten tcp’ 라는 옵션을 주고 실행시킬 수 있다. 이러한 옵션은 X 서버가 6000번 포트를 신경쓰지 않게 하여 어떤한 클라이언트로부터도 연결을 받아들이지 않게 할 수 있다.
이러한 옵션을 적용하기 위해서는 /usr/X11R6/bin/startx 스크립트에서 $clientargs 변수에 ‘-nolisten tcp'라는 옵션을 추가시키만 하면 된다.


[그림 12.5] /usr/X11R6/bin/startx 스크립트 파일 내용


그리고, 만약 X 서버에 다른 시스템의 결과를 출력할 필요가 있다면 X 서버에서 어플리케이션을 실행할 수 있는 시스템과 사용자를 제한하는 xhost 와 xauth 명령을 사용할 수 있다. xhost 명령은 생각보다 단순한데, ‘xhost + 호스트 이름’의 형식이나 ‘xhost - 호스트 이름’의 형식으로 사용할 수 있다. + 표시는 지정한 호스트의 클라이언트가 현 시스템의 X 서버에서 어플리케이션을 실행시킬 수 있는 권한을 가질 수 있도록 하는 것이다.
클라이언트 머신의 명령어 줄에 있는 ‘- display server:0,0'옵션을 이용하여 클라이언트가 현 시스템의 X 서버에 어플리케이션을 실행시킬 수 있는 권한을 가진다는 것을 표시한다. - 표시는 지정한 호스트의 클라이언트 시스템에 있는 사용자가 현 시스템의 X 서버에서 어플리케이션을 실행시킬 수 있는 권한을 없애는 것이다.
이 경우 클라이언트에 있는 사용자가 현 시스템의 X 서버에 어플리케이션을 실행시키려 한다면 권한이 없다는 에러 메시지를 보게 될 것이다.

이처럼 리눅스 시스템 시작시 실행되는 네트워킹 데몬들을 특성을 파악하고, 현재 처한 상황에 맞게 설정 파일들을 고쳐 데몬들을 관리하거나, 필요하지 않는 데몬들은 데몬을 실행시키는 시작 파일로 링크된 링크 파일을 없애므로써 실행시키지 않을 수 있다. 이렇게 함으로 리눅스 시스템의 전체적인 성능을 향상시킬 수 있을 뿐만 아니라, 보안 문제에도 상당히 강해질 수 있다.



5. 리눅스 패키지 관리 기법

5. 리눅스 패키지 관리 기법

일단 커널 최적화와 네트워킹 최적화를 거치면 가장 큰 부분의 성능 조율은 끝났다고 볼 수 있다. 그러나 현재 상태가 최적화 되어 있다고 해서 절대 방심하면 안된다. 모든 시스템이 그러하듯이 리눅스도 지속적으로 보살펴주지 않으면 최적화된 상태가 그대로 유지되지 않기 때문이다.
즉, 시스템 리소스는 계속 사용되고, 운영 초기에는 테스트하지 못했거나 미흡했던 부분이 새로운 문제거리로 등장하면서 다시 최적화 할 필요가 생기기 때문이다. 즉, 현재 관리중인 운영체제의 어떤 부분이 미약하며 어떤 문제가 있는지 파악할 줄 알아야 한다.
이번에 다룰 주제는 리눅스 시스템의 성능 최적화를 위한 패키지 관리 부분이다. 리눅스에서 패키지라고 하면, 특정 어플리케이션에 관련된 프로그램이나 설정 파일 또는 문서등을 하나로 묶어둔 것을 말한다. 윈도우에서의 패키지는 zip 파일이나 설치 프로그램등을 말하는 것이다.
리눅스에서 말하는 패키지는 소스 파일이나 바이너리 파일을 tar로 저장하고, gzip 등으로 압축하는 전통적인 패키지(.tar.gz 또는 .tgz)와 레드햇에서 개발한 RPM 이라는 바이너리 패키지(.rpm)과 소스 패키지(.src.rpm)등이 있다. 그리고, 리눅스 배포판 CD 를 패키지라고 부르는 경우도 있는데, 이는 리눅스 배포본이 거대한 리눅스 패키지 집합체라고 말할 수 있으므로 그렇게 불리는 것이다.
RPM과 같은 패키지 관리 방식은 컴파일하는 시간도 줄일 수 있고, 라이브러리 등의 의존성도 알아서 검사해 주고, 패키지 제거 또한 간단하게 할 수 있어, 프로그래밍에 무지하더라도 쉽게 패키지 설치가 가능해 요즈음에 각광받는 방법이다.
패키지 최적화 부분은 앞에서부터 계속 이야기하는 수신제가치국평천하 어구에서 치국에 해당하는 부분이다. 커널의 성능을 성능을 높이는 작업을 ‘수신(修身)’, 네트워킹 성능을 높이는 것은 바로 ‘제가(齊家)’라고 한다면, 패키지는 커널과 네트워킹 성능이 좋아야 성능을 제대로 발휘하기 때문에 ‘치국(治國)’이라고 말할 수 있다.

5.1 전통적인 패키지 설치 방법

패키지 최적화에 앞서서, 먼저 패키지를 잘 설치하는 방법부터 살펴보아야 하는데, 앞에서 언급했던 gzip이나 tar 유틸리티로 만든 패키지는 전통적인 소스를 배포할 때, 사용했던 방법이다. 전통적인 소스 패키지 배포의 이점은 자신의 시스템에 맞추어서 설정을 최적화하거나 소스 코드의 수정이나 변경이 가능하다고 하는 높은 자유도에 있다.
실제로 RPM 과 같은 패키지 관리 기법이 대중화된 것은 불과 2~3년 전이며, 그 전은 물론 지금까지도 전통적인 소스 패키지 형태로 배포하는 패키지가 많이 있다. 소스 패키지 설치 방법은 매우 다양한데, 여기서는 일반적인 소스 패키지 설치 방법을 알아보도록 한다.

5.1.1 소스 패키지를 다운받고, 압축을 푼다.

인스톨하려는 압축된 패키지를 웹이나 FTP에서 다운을 먼저 받는다. 파일명은 ‘abc-1.23.tar.gz'와 같이 ‘소프트웨어명-버전번호.tar.gz’ 형식이 많다. tar.gz으로 된 소스 패키지의 내용을 조사하려면 다음과 같이

]# tar tvfz abc-1.23.tar.gz

tar 에 tvfz 옵션을 부착하여 실행시키면, 소스 패키지에 포함된 파일 리스트가 표시된다. 그리고 소스 패키지의 압축을 풀려면

]# tar xvfz abc-1.23.tar.gz

라고 실행시키면 압축이 풀린다. 소스 패키지는 대부분 디렉토리가 붙어 있는 상태로 압축되기 때문에(예를 들어 ‘abc-1.23/configure’) 압축을 풀면 소스 패키지 명과 동일한 디렉토리(abc-1.23)가 만들어지고, 그 디렉토리에 패키지들이 풀어진다.

5.1.2 설치 방법을 조사하고 Makefile을 작성한다.

압축이 풀어진 디렉토리 안의 파일 중에는 README나 INSTALL 이라는 해설용 파일이 들어 있다. 일단 이것들을 참조하여 컴파일과 인스톨하는 방법을 알아본다. 요즈음 거의 모든 소스 패키지의 설정은 configure 라는 스크립트로 자동화되어 있다. 예를 들어 ‘configure’가 포함되어 있는 경우

]# ./configure

만 실행시키기만 하면, 컴파일이나 링크에 필요한 정보가 자동적으로 검사되어 현 시스템에 알맞은 Makefile 이 작성된다. 드문 경우지만 마찬가지로 ‘Imakefile'이 포함되어 있는 경우에는 다음과 같이

]# xmkmf

라고 하면 된다.

5.1.3 소스 패키지를 바이러리로 만들고, 설치시킨다.

Configure 스크립트로 현 리눅스 시스템에 맞는 Makefile 이 만들어졌다면, 다음과 같이

]# make

라고 make 유틸리티를 실행시킨다. 에러 메시지가 나오지 않고 종료되면, 컴파일과 링크는 성공적으로 끝난 것이다. 그리고 대부분의 경우 make 로 만들어진 바이러리 패키지 설치도 make 유틸리티로 행할 수 있다. 패키지의 설정과 컴파일은 일반 계정으로도 할 수 있지만, 패키지의 설치는 반드시 루트 권한으로 하는 것은 권한다. 따라서, su 커맨드로 루트 권한으로 바꾸고 다음과 같이

]# make install

이라고 실행시키면 설치가 자동적으로 수행된다. 주로 바이너리 패키지가 설치되는 곳은 /usr/local 디렉토리 하위에 인스톨된다. 그리고 언인스톨을 지원하는 소스 패키지도 있는데, 이 경우 ‘make uninstall'이라고 하면 되지만, 대부분은 수동으로 삭제할 필요가 있다.


5.2 RPM을 이용한 유용한 패키지 관리 팁

앞에서 설명하였듯이, RPM을 사용하여 바이너리 패키지를 설치하는 방법을 사용하면, 소스를 컴파일하는 시간도 걸리지 않고, 커널이나 라이브러리 의존 관계도 체크해 주며, 나중에 패키지를 없애는 것도 쉬우므로, 설치된 패키지는 안심하고 이용할 수 있다. RPM의 옵션을 이해하는데 가장 좋은 방법은 예제를 살펴보면서 이해하는 방법인데, 다음은 RPM을 사용하여 유용하게 패키지를 관리하는 팁들이다.
만약 사용자가 실수로 어떤 파일을 지웠다고 가정해 보자. 하지만 사용자는 자신이 지운 것을 확실히 알지 못했을 때, RPM에 ‘-Va' 옵션을 주면 RPM이 시스템 전체에 설치되어 있는 패키지를 점검하고, 없어진 파일이 무엇인지 알려준다. 그리고 어느 패키지에 속해 있는지 알 수 없는 파일을 실행시키려고 하는 상황일 때, 이 파일이 어느 패키지에 속해 있는 파일인지 찾기 위해서는 ‘rpm -qf <파일명>’을 입력하면 그 파일이 속해 있는 패키지를 알려준다.
이제 위에서 익힌 두 예제를 조합해서 사용해 보자. 만약 맨 페이지 유틸리티인 /usr/bin/man 파일에 문제가 있다고 가정하고, 이 파일을 포함한 패키지를 점검해보고 싶지만, 이 프로그램을 포함한 꾸러미를 알지 못하는 경우에는

]# rpm -Vf /usr/bin/man

라고 위와 같이 입력하면, 해당 패키지에 대한 검증을 할 것이다. 그리고 man 유틸리티를 사용하는데 있어서, 그것에 대해 좀 더 많은 정보를 찾길 원한다면 다음과 같이

]# rpm -qdf /usr/bin/man

입력하면 man 프로그램을 포함한 패키지가 가지고 있는 문서들을 찾을 수 있다. [그림 6]

[그림 6] rpm -qdf /usr/bin/man 실행결과


새로운 RPM 패키지를 구했지만, 이것이 어떤 패키지인지 알 수가 없을 때에는 이 패키지에 대한 정보를 알기 위해서는 ‘-qip' 옵션을 주면, 그 패키지에 대한 정보를 알 수 있다. 만약 ‘em86-baselibs-0.2-1.alpha.rpm’ 패키지의 정보를 살펴보기 위해서 다음과 같이

]# rpm -qip em86-baselibs-0.2-1.alpha.rpm

라고 입력하면 [그림 7]과 같이 이 패키지에 대한 정보가 출력된다. (참고로 em86 관련 패키지는 알파 리눅스에서 x86용 리눅스 어플리케이션을 실행시키고 싶을 때 사용하는 패키지이다.)

[그림 7] rpm -qip em86-baselibs-0.2-1.alpha.rpm 실행결과


그리고, 새로운 RPM 패키지가 설치하는 파일들이 어떤 것인지 알고 싶을때는 다음과 같이

]# rpm -qlp em86-baselibs-0.2-1.alpha.rpm

라고 입력하면 [그림 8]과 같이 설치될 파일 목록들이 출력된다.

[그림 8] rpm -qlp em86-baselibs-0.2-1.alpha.rpm | more 실행결과


앞에서 나열한 몇 가지 팁말고도, 리눅스 시스템을 운영하면서 점점 더 많은 RPM의 용도를 알게 될 것이다.

 

5.3 소스 RPM(SRPM) 패키지를 이용한 패키지 관리 방법

많은 리눅스 사용자들이 바이러리 RPM 패키지에 대해서는 잘 알지만 소스 RPM 패키지에서는 그 필요 이유나 사용 방법에 대해서는 잘 모르는데, 소스 RPM은 전통적인 소스 패키지와 그 패키지의 소스 코드를 포함하고 있어서, 그 소스 패키지를 설치하기 전에 컴파일이나 빌드 옵션을 각각 시스템의 환경에 맞게 설정할 수 있을 뿐만 아니라 소스 코드를 참조하거나 수정할 수 있다.
그리고 소스 RPM 패키지를 통해 빌드된 바이러리 패키지는 일반적인 바이러리 RPM과 같은 방식으로 관리할 수 있다. 따라서 소스 RPM 패키지(SRPM)는 전통적인 소스 패키지와 RPM 바이러리 패키지의 장점을 모두 가지고 있다.SRPM 패키지를 설치하는 방법은 다음과 같다.

1. 먼저 SRPM 패키를 다운로드 받고 설치한다.(rpm -Uvh abc-2.1.src.rpm)

2. SRPM 소스가 풀려진 SPECS 디렉토리로 간다.(cd /usr/src/redhat/SPECS)

3. 소스 RPM으로부터 바이러리 RPM을 만든다.(rpm -bb -clean abc-2.1.src.rpm)

4. 만들어진 바이러리 RPM을 설치한다.(cd /usr/src/redhat/RPMS/i386; rpm -Uvh abc-2.1.rpm)

5. 소스 RPM을 언인스톨시킨다. (cd /usr/src/redhat/SPECS; rpm -rmsource abc-2.1.rpm)

 

5.4 GUI 어플리케이션을 이용한 RPM 관리 방법

rpm은 터미널상에서 커맨드 방식으로 사용하는 방법뿐만 아니라, 지금은 여러 RPM을 쉽게 관리할 수 있도록, 다양한 GUI 어플리케이션이 존재한다. 예전에는 GLINT 라는 RPM 관리 프로그램을 많이 사용했지만, 요즈음에는 KDE에서 만든 Kpackage와 GNOME에서 만든 GnoRPM을 많이 사용한다.

5.4.1 Kpackage

Kpackage 프로그램은 KDE에서 나온 RPM 관리 소프트웨어이다. 이 프로그램은 레드햇 리눅스 배포본의 RPM 방식뿐만 아니라 데비안 리눅스의 DEB 방식, CPIO 파일 방식등을 지원한는 강력한 패키지 관리 프로그램이다. 하지만 Kpackage 프로그램은 레드햇 배포본에는 포함되어 있지는 않고, KDE 공식 웹사이트(http://www.kde.org)에서 구할 수 있다.

5.4.2 GnoRPM

GnoRPM 은 GNOME 프로젝트에서 만든 패키지 관리 프로그램이다. 만약 예전 래드햇 배포본 glint 프로그램을 사용해본 경험이 있다면 쉽게 GnoRPM을 사용할 수 있을 것이다. 요즈음 나온 레드햇 배포본에는 glint 대신 GnoRPM이 들어 있다. [그림 9]는 GnoRPM의 초기 화면 모습이다.

[그림 9] GnoRPM


GnoRPM 에서는 시스템에 설치되어 있는 RPM을 RPM 용도에 따라 분리하여 관리하는데, 예를 들면, PostgreSQL RPM 패키지는 Application/Databases 섹션에 위치시켜 쉽게 관리하도록 하고 있다. GnoRPM의 왼쪽 윈도우는 트리뷰 형식으로 각각 섹션별로 RPM을 분리하고 있으며, 오른쪽 윈도우는 리스트뷰 형식으로 선택한 섹션에 포함되어 있는 RPM들을 보여준다.
오른쪽 윈도우에 있는 RPM 아이콘들을 클릭함으로써 설치되어 있는 RPM을 검사(Verify)하고, 내용을 질의(Query)하고, 삭제(Delete)시킬 수 있다. RPM 패키지를 검사한다는 것은 선택한 RPM 패키지에 들어 있는 모든 파일들이 제대로 설치되어 있고, 퍼미션이 맞는지 알아보는 것이고, RPM 패키지를 질의한다는 의미는 패키지에 포함되어 있는 파일들이 시스템의 어디에 설치되어 있는지 알아보는 것이다.

[그림 10] GnoRPM에서 PostgreSQL 패키지를 질의한 결과


 

5.5 공든 탑이 무너지랴.. 하지만 방심하면 한순간에 최적화를 망칠 수 있는 패키지 관리

항상 패키지를 시스템에 설치하고자 할 때 염두해야 할 것은 새로운 패키지를 설치하면 지금까지 만들어 놓은 최적화가 무너질 수 있음을 간과해서는 안된다는 것이다. 대부분의 패키지는 어플리케이션에 불과하지만, 어떤 패키지는 단지 어플리케이션 수준에만 머물러 있다고 생각하면 오산이다.
패키지로 설치한 어플리케이션이 동작할 때는 프로세서를 사용하며 시스템 리소를 점유하게 되고, 메모리나 하드 디스크와 같은 물리적인 저장 매체를 간섭하는 것은 당연하다. 이런 어플리케이션의 왕성한 활동(?)으로 인해, 현재까지 성능 조율을 마친 리눅스 시스템에 구멍을 낼 수 있는 많은 요소를 누적시킬 수 있는 것이다.
사실 CPU를 많이 사용하려는 어플리케이션이 많으면, 제때 실행되어야 할 데몬 프로그램들의 반응(Response)이 느려지는 것은 당연한 이치이다. 이런 문제에 봉착했을 때, 유연성을 최대한 발휘하려면, 먼저 패키지를 설치하기 전에 몇 가지 사항을 살펴보아야 한다.

가장 먼저 생각해야 할 것은 설치 시에 필요한 패키지와 패키지 버전을 꼭 확인하는 것이다. 이는 패키지를 설치할 때 반드시 살펴야 할 기본 조건이지만, 대부분 지켜지지 않는 사항이다.
만약 이를 무시할 경우, 패키지 컴파일 과정에서 문제가 생기거나 컴파일은 잘 되었을지는 몰라도 프로그램 실행 시 문제가 생기거나 심할 경우 다른 프로그램까지 영향을 미칠 수 있다. 새로운 패키지를 구해 컴파일하는 도중에 에러가 발생했다면,
가장 먼저 컴파일 과정에 필요한 패키지는 무엇이며, 그 버전은 정확한지 확인해야 할 것이다.

그 다음으로 커널과 밀접한 관련이 있는 패키지일 경우, 패키지에서 요구하는 버전을 확인해야 한다. 현재 대부분의 리눅스 배포본은 안정 버전인 커널 2.2.x 버전에 맟춰 구성되어 있다. 하지만 안정 커널이 아닌 개발 버전(예를 들어 2.3.x)을 사용하고 있다면 문제가 발생될 수 있는 요소를 내포하게 된다.
또한 커널은 modutils 처럼 업그레이드가 되어야 한다는 것도 잊기 말아야 할 것이다. 만약 정상적으로 컴파일되었다 할지라도 정상적으로 실행될 지는 장담할 수 없기 때문이다. 커널과 밀접한 관계가 있는 패키지는 파일 시스템과 관련된 패키지(smbfs, ncpfs, autofs 등)와 네트워킹과 관련된 패키지(ppp, nfs, ipfwadm 등), 그리고 디바이스에 관련된 패키지(cdrecord, coda2wav 등)이다. 그리고, 요즈음 IT 분야에 리눅스가 태풍의 핵으로 부상함에 따라 세계적인 IT 기업들이 리눅스를 지원하는데, 이러한 기업들의 소프트웨어나 하드웨어는 리눅스 커널 버전에 맞추어 구성되어 있다.
대표적인 경우가 오라클로 오라클8i 리눅스 에디션의 경우에는 리눅스 커널 에 맞추어 구성되어 있다. 따라서 이런 패키지 설치할 경우에는 반드시 커널 버전을 확인해야 한다. 반대로 커널 컴파일이나 업그레이드 할 경우에는 이런 패키지의 실행에 문제가 없는지 확인해 보아야 한다.

그리고, 커널 다음으로 신경써야 할 부분이 바로 공유 라이브러리(SO, shared object)이다. 공유 라이브러리는 여러 어플리케이션이 필요로 하는 공유 코드를 따로 만들어 놓은 파일로, 어플리케이션의 크기를 줄일 뿐만 아니라, 공유 라이브러리는 한번만 메모리에 적재되기 때문에 메모리도 절약할 수 있다.
하지만 어플리케이션과 공유 라이브러리의 호환이 문제가 된다. 예를 들어 레드햇 배포본의 최신판 6.1 에서는 시스템 공유 라이브러리를 새로히 glibc2.1이 채택되어 있다. 그러므로 6.1 이전에 작성된 패키지일 경우 glibc2.1 이전의 시스템 공유라이브러리를 필요하므로, 의존성 관계 체크에서 문제가 될 것이다.
따라서, 새로운 패키지를 설치하려고 할 때, 현재 시스템의 커널 버전 뿐만 아니라 시스템 라이브러리 버전과 호환되는지 반드시 살펴보아야 한다.

마지막으로 RPM과 같은 방법이 아닌 gzip이나 tar.gz 패키지 형태로 되어, 직접 컴파일하는 경우에는 반드시 패키지가 설치될 경로와 디렉토리, 파일 등을 미리 확인해야 된다. 기존에 설치된 파일과 겹쳐질 수도 있고, 내중에 패키지를 제거할 때 편리하기 때문이다.
이것들을 확인하는 좋은 방법은 패키지를 임시로 한번 설치해 보는 방법이다. configure가 포함 되어 있는 소스 패키지 경우에는 먼저 configure 와 make 명령어로 실행 파일을 만들고 난후, 다음과 같이

# mkdir -p /tmp/package/

/tmp/package/ 라는 디렉토리를 만들고

#make prefix=/tmp/package install

이렇게 임시로 패키지를 설치하고 시험해본 후, 시스템에서의 안정성이 입증되면 실제로 설치(make install)하는 것이 가장 좋은 방법이다.
패키지 관리를 할 때, 항상 명심해야 할 것은 한 번의 실수가 많은 시간과 노력을 투자하게 만든다는 것이다. 또한 실수로 설치된 패키지에 중대한 보안 버그가 있다면, 외부 공격에 완벽하게 노출될 수 있다. 또한, 앞에서 언급했듯이 커널이나 동적 라이브러리와 연관된 패키지는 더욱더 주의해서 관리해야 된다.
그리고, 리눅스를 기업 환경이나 서비스 차원에서 사용할 경우에는 최대한 모험은 자제해야 된다는 것이다. 즉, 정말로 필요한 경우를 제외하고는 업그레이드는 자제해야 된다는 말이다.


[참고] 리눅스 시스템 라이브러 ‘libc’ 와 ‘glibc’
--------------------------------------------------------------------
리눅스 커널이 안정버전 2.0x에서 개발 버전 2.3x까지 버전업이 되었는데, 이로 인해서 별도로 준비하지 않으면 안 되었던 모듈이 커널에 편성되거나, 기능의 명칭이 변하거나 하는 커다란 변화를 겪었다. 리눅스에서는 이 커널과 함께 운영체제의 중요한 부분으로써 ‘libc’라고 하는 시스템 라이브러리가 있는데, 최근 이 ‘libc’가 대폭적으로 변경되었다.
이 ‘libc’라는 라이브러리는 C언어의 라이브러리로, 어플리케이션을 개발하기 위해 사용되는 표준 C 함수 루틴들을 모아놓은 것이다. 리눅스의 대부분의 어플리케이션은 C언어로 작성되어 있고, 이 루틴을 실행시 필요한 루틴은 참고한다. 따라서 ‘libc’ 라이브러리의 변경은 리눅스 시스템 전체에 영향을 미친다.
현재 일부의 배포본을 제외하고는 ‘libc5’에서 ‘glibc2’로의 이행이 진행되었으며, 더욱이 최신의 배포본의 경우 다시 ‘glibc2’에서 ‘glibc2.1’로의 이행이 진행되고 있다. ‘libc5'와 ‘glibc2'는 각각 개발된 경위나 배경의 유래에서 차이가 있는데, ‘libc5' 이전은 종래의 C 라이브러리를 리눅스에서 이용할 수 있도록 대폭 변경해서 제공되어 사용돼 왔었다.
그러나 ’‘glibc2'의 경우에는 GNU libc를 아무런 수정없이 그대로 리눅스에서 사용되는 것이므로 ’‘glibc'라고 부르게 된 것이다. 이런 이유에서 C 라이브러리는 버전이 다르면참조하는 C 라이브러리의 이름이 달라져 제대로 동작하지 않을 수 있다.
libc와 glibc2의 차이점이라고 하면 암호화에 대한 대응, POSIX thread에 대한 대응, 2바이트 코드 언어 지원등 국제화 locale 대응등을 들 수 있다.
그러나 locale 대응에 대해서는 아직 대책이 없는 부분도 많다. 예를 들어 glibc가 되었는데도 locale을 이용한 어플리케이션으로 한글을 이용하기 위해서는 wcsmbs 등과 같은 라이브러리를 별도로 준비하지 않으면 안된다. glibc2.1 에서는 wcsmbs 라이브러리를 사용하지 않고도, 한글을 이용할 수 있게 되었다.

현재 ‘glibc2'를 사용하고 있는 배포본은 레드햇 리눅스 5.x, 터보 리눅스 4.x, 데비안 리눅스 2.1 등이 있고, ’‘glibc2.1'을 사용하고 있는 배포본은 레드햇 리눅스 6.x등이 있다. 한편 슬랙웨어 4.0 은 이전의 안정성이나 호환, 한글 이용등을 고려하여 libc5를 계속 사용하고 있다.


[그림 11] GNU C Library 한글 홈페이지
(http://www.gnu.org/software/libc/libc-ko.html)

--------------------------------------------------------------------

5.6 기업 환경에 맞는 패키지 조율하기

이제부터 개인사용자보다는 기업 환경에 초점을 맞추어서 리눅스 시스템 최적화를 이야기해보도록 한다. 대부분의 기업에서는 리눅스를 웹서버로 사용하는데 이럴 경우에는 필요 없는 패키지를 제거하는 것이 최적화에 첫걸음이다. 불필요한 패키지를 제거함으로써 시스템을 간편하게 구성할 수 있고, 운영에 필요한 공간도 확보할 수 있기 때문이다. 그럼 어떤 패키지를 제거하는 것이 좋을지 알아보도록 한다.

5.6.1 X 윈도우 패키지는 제거한다.

실제 일반적인 리눅스 배포본을 설치한 경우 X 윈도우 패키지는 200MB 이상의 공간을 차지하고 있지만 실제 기업 환경에서는 거의 사용되지 않는다. 더욱이 외부 서비스를 하는 업체의 쉘이나 텔넷 서비스만 하는 경우에는 시스템의 과부하만 줄 뿐이다. 만약 X 윈도우를 실행시켜야 할 필요가 있다면 앞서 설명하였듯이, 다른 시스템의 X 윈도우를 빌려 사용할 수 있다. 예를 들어 자신의 리눅스 시스템에서

#xhost +

명령을 실행해서 X 윈도우가 설치된 다른 리눅스 시스템으로 로그인한 다음

#export DISPLAY=“<자신의 호스트명>:0.0"

X 윈도우 어플리케이션을 실행시키면 다른 리눅스나 유닉스 시스템에 있는 어플리케이션이 자신의 화면에 나타나는 것을 볼 수 있을 것이다.


5.6.2 중복되거나 필요없는 패키지와 미디어와 관련된 패키지는 제거한다.

리눅스 배포본에서 중복되어 설치되는 패키지 중에는 pine, elm, mutt와 같은 다양한 전자 메일 프로그램이 있는데, 이중 많이 사용하는 패키지만 남겨 놓고, 나머지는 제거한다. 또한, 멀티미디어에 관련된 cdp aumix 등도 제거할 수 있다. 그리고 요즈음 리눅스 배포본의 경우 리눅스 테스크탑 환경에 양대 산맥이라고 할 수 있는 KDE 패키지와 GNOME 패키지를 모두 설치하는데, 두 데스크탑 환경 패키지에 들어 있는 어플리케이션의 경우 상당히 중복되는 경우를 볼 수 있다. 따라서 두 데스크탑 패키지 중 불필요한 패키지 하나를 제거하는 것도 좋은 방법이다.


5.6.3 프로그래밍에 필요한 패키지는 제거한다.

대부분의 패키지에 수록된 어플리케이션은 공유(동적) 라이브러리만 존재해도 실행이 가능하며, 그외의 일반 라이브러리나 헤더 파일은 프로그램 개발 시에만 필요하므로 제거해도 무방하다. 만약, 추후 새로운 패키지를 컴파일할 일이 생기면 다른 리눅스 서버에서 컴파일해 패키지를 설치하는 것도 좋은 해결책이 된다. 또한 개발에 필요한 패키지는 반드시 커널을 빌드해서 정상적으로 동작되는 것을 확인한 다음 제거해야 된다.


5.6.4 해킹의 여지가 될 수 있는 네트워킹 패키지는 제거한다.

NFS나 삼바는 외부와 연결하기 위한 파일 시스템으로, 내부 파일 서비스가 목적이 아니라면 거의 사용되지 않으므로 제거해도 무방하다. 특히, NFS는 다른 서버의 파일 시스템을 자신의 파일 시스템인 것처럼 인식할 수 있는 공유 기술로, 혹시 잘못 설정되거나 설치된 경우에는 현재 시스템에 큰 타격을 줄 수 있다. 따라서 굳이 필요하지 않다면 제거하기 바란다. 상황에 따라 필요가 없다면 제거하기 바란다.


5.6.5 해킹 우려가 있는 패키지일 경우 실행 파일의 퍼미션을 확인한다.

해킹의 우려가 있는 패키지는 주로 passwd, su 와 같이 운영자 권한레서 실행되는 패키지이다. 특히 su 나 passwd 같은 패키지는 모두 유닉스 계열에서 상당한 비중을 차지하는 패키지로, 문제가 생길 경우 돌이킬 수 없는 결과를 초래한다는 것을 잊지 말기 바란다.



6. 리눅스 실행 어플리케이션 관리 기법

6. 리눅스 실행 어플리케이션 관리 기법

이제 마지막으로 리눅스 시스템에서 실행되고 있는 어플리케이션을 최적화하는 방법에 대해서 알아본다. 리눅스는 윈도우 95/98/Me와 달리 서버로써 많이 사용되는데, 그래서 데몬과 같이 항시 서비스 프로그램들이 실행되고 있다. 그리고, 실행되는 프로그램(프로세스)도 철처하게 관리할 수 있다.
시스템에서 실행되는 어플리케이션을 최적화한다는 것은 수신제가치국평천하 어구에서 마지막으로 평천화(平天下)에 해당하는 부분이다. 시스템의 커널, 네트워킹, 패키지 그리고 어플리케이션 성능을 최적화시키면 그야말로 두려울 게 없는, 생생 날아다니는(?) 시스템으로 탈바꿈하는 것이다. 이제 마지막으로 천하를 얻을 수 있는(?) 실행 어플리케이션을 최적화하는 비법에 대해 알아본다.


6.1 ps, top, gtop, ktop 으로 프로세스 관리하기

ps나 top 유틸리티는 전통적으로 유닉스에서 프로세스를 관리하는 유틸리티로 널리 알려져 있다. ps 커맨드는 현재 시스템에 존재하고 있는 프로세스들과 그 프로세스의 특성(프로세스 이름, 아이디, 소유자등)들을 보여주며, top 커맨드는 ps보다 훨씬 기능이 뛰어나서 프로세서, 메모리, 디스크 등의 현재 소모 상황과 현재 시스템을 사용하고 있는 사용자 수, 그리고 현재 사용중인 프로세스에 대한 상황등을 관리해준다. 하지만, top이나 ps 유틸리티인 경우 그 기능면에서는 강력하지만, 앞서 설명했던 rpm 유틸리티처럼 텍스트 기반의 커맨드 방식 유틸리티 이므로 불편하다. [그림 12]


[그림 12] top 실행 화면


리눅스에서는 rpm 유틸리티를 쉽게 사용할 수 있도록 KDE 프로젝트에 만든 Kpackage 와 GNOME 프로젝트에서 만든 GnoRPM이 있듯이, top 유틸리티를 좀 더 편리하게 사용할 수 있도록 KDE기반의 ktop과 GNOME기반의 gtop이 존재한다. 이 두 유틸리티는 top 고유의 기능에 여러 가지 관리자가 손쉽게 프로세스 및 시스템 상황을 체크할 수 있도록 도와준다. 마치 윈도우 서버에 있는 작업 관리자(Task Manager)와 유사한 기능을 한다고 생각하면 될 것이다.

6.1.1 ktop

ktop은 top 명령에 KDE 기반의 GUI를 입힌 것으로 GNOME 기반의 gtop과 비교했을 때 좀 더 편리한 프로세스관리 기법을 제공해 준다. 우선 아이콘을 이용하여 각각의 프로세스가 표시되며, [그림 13] 처럼 ktop의 트리보기 체크박스를 선택하면 프로세스의 종속 상황을 볼 수 있다. 게다가 각각의 필드 제목인 이름, 프로세스 아이디, 사용자 아이디 등을 누르면 각각의 항목별로 정렬해서 볼 수 있다. 이 외에도 ktop의 기능은 다양하다.

[그림 13] ktop 실행 화면


ktop은 또한 K Task Manager 라고도 불리우는데, 즉 프로세스 관리자라는 의미이다. top처럼 단순히 프로세스를 보여주는 것뿐만 아니라 윈도우 서버의 작업 관리자처럼 프로세스를 관리하는 기능까지도 제공한다는 것이다. ktop에 있는 프로세스 아이콘을 한번 클릭하면 그 프로세스가 활성화 될 것이다. 그리고 프로세스 메뉴에 보면 작업의 나이스값 지정 및 시스널 전송 메뉴가 보일 것이다. 이런 것들은 각 프로세스를 마우스로 클릭한 후 오른쪽 메뉴를 눌러서 볼 수 있다. 이 메뉴를 이용하여 top 본래의 기능뿐만 아니라 일반적인 유닉스 시스템의 나이스 값을 조정하는 기능과 Kill 명령을 이용하여, 프로세스에 시그널을 보내는 기능을 수행할 수 있다. 그 밖에도 [그림 14]와 같이 ktop에 성능 측정이라는 탭을 누르면 지금까지의 프로세스와 메모리의 상황을 그래프로 볼 수 있다.

[그림 14] ktop의 성능 측정 탭 화면


6.1.2 gtop

gtop은 흔히 흔히 탭이라고 부르는 3개의 다중 탭이 존재하는데, 첫 번째 탭이 top 명령의 내용을 보여주는 프로세스 윈도우, 두 번째 탭은 메모리 사용량을 나타내는 창, 그리고 세 번째 탭이 파일 시스템을 보여주는 창이다. [그림 15]의 첫 번째 탭에서 보여지는 프로세스 창은 ktop에 비해 단조로우며, CPU 사용도와 메모리, 스왑등을 그래픽컬하게 보여주는 것 외에는 top과 다를바가 없다.

[그림 15] gtop의 프로세스 탭 화면


그러나 설정 메뉴를 보면 진정한 gtop의 기능을 알 수 있다. 설정 메뉴에 보면 프로세스필드를 설정하는 부분을 통해 보여질 프로세스와 각각의 폭을 지정할 수 있게 되어 있다. top에 비해 무척이나 편리한 환경이라 하겠다. 또한 설정 메뉴에 보면 대부분의 설정이 시각적인 메뉴를 조정하는 것이지만 이런 시각적인 설정 또한 사용을 돕게 된다. gtop은 ktop과 마찬가지로 프로세스에 대한 여러 기능을 수행할 수 있다. 메뉴에는 없지만 오른쪽 버튼을 누르면 ktop과 유사하게 여러 가지 SIGNAL을 보낼 수 있는 기능을 제공한다. 또 일반 유저에게는 그리 필요하지는 않겠지만, 전문적인 기능으로는 유용한 메모리 로케이션 상황까지도 알 수 있다. 기본적으로 필드별 소트 기능도 제공한다는 것은 쉽게 알 수 있다.
gtop의 또다른 강력한 기능을 들으라면 바로 그래프 기능이라 하겠다[그림 16]. gtop의 다른 탭을 선택하면 각 메모리 사용량 비율을 그래프로 일목요연하게 볼 수 있다. 이 정도까지 시스템에 대해 궁금해 할 사람은 없겠지만 시스템에서 메모리를 얼마나 많이 사용하는지를 알수 있어서 시스템 관리자에게는 필수적인 사항이라 할 수 있겠다.

[그림 16] gtop의 메모리 탭 그래프 화면


6.2 crontab 데몬을 이용한 실행 어플리케이션 관리하기

대부분의 리눅스 사용자들은 crontab 이라는 데몬을 잘 모르고, 설사 안 다해도 잘 사용하지 않는다. 이 프로그램은 운영자가 일정 시간을 할당해 작업을 수행하게 하는 것으로, 대부분의 리눅스 사용자에게 외면되는 경향이 있다. 그러나 시스템의 또 다른 최적화의 기법은 바로 일정 단위로 최대한의 성능을 발휘하도록 도와주는 것이다. 즉, 필요하지 않는 주기적으로 운영중에 만들어진 임시 파일을 정리하거나, 운영체제 운영에 필요한 데이터를 갱신하는 등의 작업을 통해 리눅스가 최적의 상태를 유지할 수 있게 할 수 있다.
그럼 crontab의 사용법에 대해 알아보자. crontab 은 httpd, sendmail과 같은 데몬으로 주기적으로 수행해야 할 작업들을 적어 놓은 설정파일에 따라 작업을 수행시킨다. 이 설정 파일에는 명령이 수행될 시간, 수행할 계정등을 적은 엔트리들이 존재한다. crontab은 다음과 같이 7개의 필드로 구성되는데 다음의 6번째 필드인 작업을 수행할 계정명은 생략해도 무방하다.

① 분
② 시간
③ 날짜
④ 달
⑤ 요일
⑥ 수행 계정
⑦작업 명령

[표 2] crontab 설정 파일의 엔트리 형식

우선 모든 엔트리의 필드는 공백으로 구분되며, 6번째 필드인 수행 계정 필드는 명령이 수행될 때 필요한 계정명을 지정하면 되고, 7번째 필드는 작업 명령 필드는 수행하려는 명령어와 인자를 적어주면 된다. 시간을 나타내는 1번째부터 5번째의 필드에 그 시간을 무시하고자 할 때는 *로 표시하면 된다.
5번째 필드인 요일 필드는 월요일부터 금요일까지를 나타내며 1~5 숫자로 표시하게 된다. 하나의 필드에 중복된 내용을 기재하고자 하면 콤마(,)로 구분해 적으면 된다. 특히 연속된 내용을 적고자 하면 하이픈(-)을 이용해 기간을 나타내며, 시간 필드에 슬래시(/)를 사용할 수도 있는데, 만약 23-07/2라고 하면 ‘23시부터 07시까지 매 2시간마다’라는 의미를 갖는다. 즉 시간 필드에 */2라고 하면 ‘매 2시간마다’라고 crontab 데몬이 해석하는 것이다. 다음의 예에서

0,30 * 1,15 * 1-5 fsck -y

위의 예는 매달 1일과 15일에 정각과 30분에 요일에 관계없이 fsck -y 명령을 실행하도록 설정되어 있다. 이러한 방식으로 명령어 필드에 여러 가지 내용을 집어넣을 수 있다. 그리고

20 1 * * * root find /tmp -atime+3 -exec rm -f () ';'

이는 매일 새벽 1시 20분에 3일간 접근하지 않은 /tmp 내의 파일을 삭제하라는 내용이다. 또한, 다음과 같이

0 4 * * * root find / -xdev -name core+7 -exec rm -f {} ';'

이렇게 하면 매일 새벽 4시 정각에 지난 일주일간 접근하지 않는 core 파일을 삭제한다. -xdev 옵션은 스탠드 얼론 시스템이면 사용하지 않아도 않아도 되면 find 명령의 자세한 사용방법은 맨 페이지를 참고 하기 바란다.
이렇게 새롭게 만들어진 내용을 어떻게 적용시킬 수 있을까? crontab 설정 파일을 새롭게 편집하고자 한다면 -e 옵션을 주고, 수정하기 전에 현재 등록된 내용을 보고자 한다면 -l 옵션을 사용하며, 등록된 내용을 삭제하려면 -d 옵션을 사용한다 [그림 17]. crontab 의 실행 결과는 6번째 필드의 계정으로 전자메일을 날려주므로 나중에 전자메일을 확인하면 된다. 그리고 crontab을 직접 고칠 수 없는 상황이면 -l 옵션을 사용해 crontab을 새로운 파일명으로 리다이렉션(redirection)받아 편집한 뒤 다시 crontab filename 명령으로 등록하면 된다. 편집 후 등록된 crontab은 /var/spool/cron/crontabs 디렉토리 밑의 사용자 계정에 존재하는데, 운영자의 경우에는 /var/spool/cron/crontabs/root에 crontab이 존재하게 된다. 아니면 /etc/crontab 이라는 설정 파일을 직접 건드려도 무방하다.

[그림 17] crontab 실행 화면


crontab 이외에도 모든 유닉스에는 syslogd라는 데몬이 있다. 이 프로세스는 앞에서 설명하였듯이 운영자가 인식하지 못하는 다양한 문제를 운영자에게 알려주고 외부에서 접근하는 모든 네트웍 정보를 처리하는 역할을 한다. 몇몇 운영자는 이 syslogd에서 날려주는 전자 메일에 대해 무심코 넘어가는 경우가 많은데, 이 syslogd에서 알려주는 정보만으로도 시스템 최적화를 충분히 할 수 있다.

이제까지 리눅스 시스템을 위한 성능 최적화 기법을 살펴보았다. 리눅스 설치부터 시작해서 커널, 네트워킹, 패키지, 실행 어플리케이션(프로세스) 최적화하는 방법에 대해서 차례차례 알아보았는데, 내용이 비교적 간단해 보이지만 실제로 적용하려면 이레저레 힘겨운 작업이 될 것이다. 더욱이 맨 앞에서 애기하였듯이, 이렇게 해서 최적화 했다 할지라도 눈에 띄게 빨라보이지도 않을 것이다. 그렇지만 오랫동안 서비스하는 동안 안정적으로 동작하고 있음을 느낄 수 있을 것이다.

앞에서 언급했던 최적화는 제한된 시스템의 자원을 최대한 활용하는 것이다. 최적화의 기본 철학은 자원을 최대한 활용하기 위해서는 우선 그 자원을 사용할 대상에 대해 정확히 알고 그 다음 필요없는 부분은 없애는 것이다. 그리고 최적화는 처음에 했다고 해서 끝나는 것이 아니라 지속적으로 해야 한다는 것을 명심해야 한다. 앞에서부터 계속 이야기하지만 아무리 최적화가 잘된 유닉스 시스템이라 할지라도 운영을 소홀히 한다면 얼마 지나지 않아 최적화가 무너지고, 다시 성능 조율에 나서야 하는 건 당연한 이치인 것이다.

그리고, 마지막으로 리눅스 서버 관리자들에게 당부하는 건 유닉스의 안정성을 과신하는 건 금물이라는 것이다. 주기적으로 백업을 받아놓는 것과 셧다운하는 것도 최적화를 위한 기본적인 관리가 된다는 잊지 말도록 하자.

관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
Linuxer와 MSN  (Linux_일반) (2005/02/09 08:37 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=184

요즘 인터넷을 이용하는 사람들은 거의 대부분이 메신저를 한다고 해도 틀린 말이 아니다.
본인도 약 5-6년전 드림위즈의 지니메신저로 시작하여 ICQ를 거쳐, 현재는 MSN과 네이트온을 사용하고 있다.
메신저를 이용하면 언제라도 쉽게 상대방에게 호출할 수 있고, 메시지 전달이 빠르고, 전화를 하지 않아도 되니 비용절감의 측면도 있다.
또한 메일을 통하여 하던 파일보내기 작업도 현재는 메신저를 통하여 전송하고 있다. 메일을 통하여 파일을 첨부하여 보내면, 전송에 딜레이(Delay)도 발생할 수 있고, 또한 상대방이 정확히 전송받았는지를 확인해야 한다. 그러나 메신저를 이용하면 즉시 전송할수도 있고, 즉시 확인도 가능하다.
물론 이러한 장점이 많은 메신저는 현재 업무에 지장을 초래한다는 단점을 유발하여, 몇몇 대기업에서는 해당 메신저들의 포트를 차단하여 접근을 막고 있는 실정이다.
마이크로소프트를 비롯한 몇몇 메신저회사에서는 업무용 메신저라는 이름으로 업무에 도움이 되는 메신저를 개발하고 있으니, 꼭 개인적인 목적으로만 사용되는 것은 아니라고 볼 수 있다.

관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
How to use yum - Introduction  (Eenglish) (2005/02/09 06:21 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=183

How to use yum - Introduction
by Thomas Chung on Nov 9, 2003
Introduction - What is yum?

Yum is an automatic updater and package installer/remover for rpm systems. It automatically computes dependencies and figures out what things should occur to install packages. It makes it easier to maintain groups of machines without having to manually update each one using rpm.

Reference: http://linux.duke.edu/projects/yum/


1. Before you use yum for the first time, type following command to download headers.

   # yum check-update

   It will take about 5 minutes to download a complete set of headers for base packages
   for Fedora Core as well as any released updates for Fedora Core.

2. To install a package which is not installed already, use "install" option with yum.
   For example, ncftp is missing by default for workstation class.

   # yum install [package-name]

Example:
[root@localhost root]# yum install ncftp
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Resolving dependencies
Dependencies resolved
I will do the following:
[install: ncftp 2:3.1.6-2.i386]
Is this ok [y/N]: y
Getting ncftp-3.1.6-2.i386.rpm
ncftp-3.1.6-2.i386.rpm    100% |=========================| 491 kB    00:04
Running test transaction:
Test transaction complete, Success!
ncftp 100 % done 1/1
Installed:  ncftp 2:3.1.6-2.i386
Transaction(s) Complete
[root@localhost root]#

3. To remove a package which installed already, use "remove" option with yum.

   # yum remove [package-name]

Example:
[root@localhost root]# yum remove ncftp
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Resolving dependencies
Dependencies resolved
I will do the following:
[erase: ncftp 2:3.1.6-2.i386]
Is this ok [y/N]: y
Running test transaction:
Test transaction complete, Success!
Erasing: ncftp 1/1
Erased:  ncftp 2:3.1.6-2.i386
Transaction(s) Complete
[root@localhost root]#

4. To install any updates available, use "update" option with yum.

   # yum update

Example:
[root@localhost root]# yum update
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
No Packages Available for Update
No actions to take
[root@localhost root]#

5. To search a package by name (wildcard ok), use "search" option with yum.

   # yum search [any-name]

Example:
[root@localhost root]# yum search ??ftp
Gathering header information file(s) from server(s)
Server: Fedora Core 1 - i386 - Base
Server: Fedora Core 1 - i386 - Released Updates
Finding updated packages
Downloading needed headers
Looking in available packages for a providing package
Available package: vsftpd.i386 0:1.2.0-5 from base matches with
vsftpd - Very Secure Ftp Daemon
Available package: vsftpd.i386 0:1.2.0-5 from base matches with
vsftpd
2 results returned
Looking in installed packages for a providing package
Installed package: ncftp.i386 2:3.1.6-2 matches with
ncftp
1 results returned
[root@localhost root]#
--------------------------------------------------------------------------------
UPDATE: 2004-02-27
Thanks to Charles Curley,
please read his excellent HOWTO Some Notes on yum Repositories at
http://www.charlescurley.com/yum/
관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
[zog][펌글]조그 - N@search 유사 검색어기능 패치  (Homepage_조그) (2005/02/08 09:57 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=182

출처: http://runuo.co.kr/zog/?no=347

N@search 유사 검색어기능 패치

원본자료 다운로드 : http://navyism.com/main/memo.php?bd=pds&no=103&pagenum=&cat_no=2&search_word=&search_title=&search_memo=&search_name=&search_and=&&no=120

이하는 Zog용 N@search 스킨자료에 맞게 수정하실 부분입니다.
(기존의 조그용 나서치 스킨은 수정하실 필요 없습니다.)
스킨다운로드 : http://runuo.co.kr/zog?no=217

수정파일 : N@search 유사 검색어기능 패치 nasearch.php
이하 수정내용...

1) 파일 최상단부분에서

set_time_limit(0);
$start_time=(double)microtime()+time();
////////////////////////////////////////////////////////////////////기본설정
include "header.inc";
include "nasch_connect.php";
include "lib.php";
$set=mysql_fetch_array(mysql_query("select * from nasch2_config limit 1"));
include "config/config.php";
// Zog용 전용 스킨에 따른 추가부분
$zog_url="http://runuo.co.kr/zog"; //자신의 블로그 주소를 적어주세요.

(..이하 생략)

2) 라인 408부근

   $data[no]=$get_no_[$i];
   $data[title]=$get_title_[$i];
   $data[name]=$get_name_[$i];
   $data[memo]=$get_memo_[$i];
   $data[mail]=$get_mail_[$i];
   $data[home]=$get_home_[$i];
   $data[date]=$get_date_[$i];
   $data[link]="$module[directory]/$module_view_file?$module_id_name=$data[id]&$module_col_primary=$data[no]";
// Zog용 전용 스킨에 따른 추가부분
   $data[zog_link]="$zog_url"."?no="."$data[no]"; // 추가.. 조그연결 주소 만들기

(..이하 생략)

3) 라인 80부근

...

// Zog용 전용 스킨에 따른 주석처리부분


위의 모듈 부분을 주석처리해주세요.
굳이 주석처리를 안하셔도 됩니다만, Zog에서는 관련성이 없는 부분이라 생각됨에 따라서...
적용된 예는 제 블로그 왼쪽의 나서치를 참고하시면됩니다.


强風止家 - 강풍

조그용



***** 관리자님에 의해서 게시물 카테고리변경되었습니다 (2005-09-16 08:30)



***** 관리자님에 의해서 게시물 카테고리변경되었습니다 (2005-12-14 08:00)
관리자 님 | 코멘트(1) | 스크랩|프린트|M|D
[zog][펌글]본문 Show/Hide 기능.  (Homepage_조그) (2005/02/08 09:26 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=181

출처: http://www.sa-rang.pe.kr/blog/?no=84

드디어 좀 제대로 된 팁을 알려드리게 되었군요..oT^To
설치법 설명하겠습니다.


첫째!


첨부된 showhide.php 파일을 조그 루트 폴더에 업로드 합니다.



둘째!


각각 첨부된 파일의 이름에 맞게 해당 원본파일에 코드를 추가합니다.



셋째! (사용방법)


글쓰기에 들어가 보시면, 버튼이 두 개 생겼습니다.


Show/Hide 버튼을 클릭하시거나 단축키를 누르시면, 버튼이 END로 바뀌면서 Textarea에 Show/Hide 태그가 추가 됩니다.
조그의 MORE 기능처럼, 이 태그 이하부터 내용을 숨기게 됩니다.  



END로 바뀐 버튼은, 내용의 중간 부분을 숨기고자 할 때 등록하는 태그입니다.
쉽게 말해서.. Show/Hide 태그와 END 태그 사이의 내용이 숨겨진다는 것이죠.

MORE처럼 아래 모든 내용을 숨기고 싶다면 END 버튼은 굳이 사용할 필요가 없습니다.
그 버튼은 내용의 중간 부분을 숨기기 위해 있는 첨자 태그로써 존재하는 것이니까요.

설명이 충분했나요?
퀴즈나 프로필 설명이나.. 뭐 여러가지로 쓰일 수 있는 팁이 될 것 같군요.


도움이 되었으면 합니다.^-^


思郞 思 郞

조그의 블로그에만 적용



***** 관리자님에 의해서 게시물 카테고리변경되었습니다 (2005-09-16 08:30)



***** 관리자님에 의해서 게시물 카테고리변경되었습니다 (2005-12-14 08:00)
관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
NFS 서버 구축하기  (Linux_일반) (2005/02/07 05:49 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=180

▶ NFS 란?



NFS(Network Filesystem)는 서버간의 자원공유와 네트워크 파일시스템으로서의 데이터 공유를 위해 SUN사에서 개발한 서비스로서 기존의 UINX, BSD 계열의 대규모 서버군과 함께 널리 이용되어온 서비스 이다.



Linux OS도 크게 모태를 거슬러 올라가면 BSD계열의 OS에서 파생되어온 운영체제 이기 때문에 당연히 NFS 서비스를 운용이 가능하다.



단순한 파일시스템의 공유정도의 기능이라면 Samba 서버등의 서비스도 있겠지만 NFS의 궁극적인 이용목적은 역시 서버군을 형성하여 부하분산을 유도하는데 있다고 할수 있다.



NFS는 네트워크 기반의 파일시스템 공유 서비스이기 때문에 NFS 클라이언트 측에서는 디스크없는 환경의 서버환경등 많은 장점이 있지만 역시 네트워크 기반의 서비스 이기 때문에 네트워크 부하량은 매우 크다. 때문에 외부 네트워크에 물려 있는 서버들을 서버군으로 형성하기 보다는 로컬 네트워크에 물려있는 서버들의 서버군을 형성하는 경우가 대부분이며 보안상의 이유들로 인해 외부 네트워크에서의 구성은 극히 드물다.



또한 NFS 서비스에서 말하고자 하는 부하분산이란 하드디스크의 읽기/쓰기에 관련한 부하를 처리해 주는것에 가장큰 목적을 둔다.



서버 시스템은 Apache 나 MySQL DB의 가동만으로도 시스템 리소스를 어느정도 점유하고 있다. 여기에서 가장 부하가 많이 걸리는것은 역시 하드디스크의 읽기/쓰기 작업에서 많이 나타난다.



실제로 FTP 서버등에서 고용량 데이터를 다운받을때 해당 서버의 메모리 점유율을 보면 엄청나다.



즉 하드디스크의 Read/Write 처리를 다른 서버에서 처리하도록 분산해줌으로서 실제로 서비스를 해주는 서버 시스템은 시스템 리소스와 자원을 보다 효율적으로 활용할수 있다는것이다.




관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
shade webhard 0.7.8 (2004-12-29) 웹 하드 설치  (Homepg_일반) (2005/02/06 09:25 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=179

프로그램명 : shade webhard 0.7.8
사용환경 : Linux, APM (자바스크립과 PHP로만 만들어져있음)
라이센스 : LICENSE.TXT 를 반드시 읽어보십시요.
데모 : http://www.hangaroy.net/webhard/demo

관리자 님 | 코멘트(3) | 스크랩|프린트|M|D
[Tip] Gmail 계정 리눅스에 마운트하기  (Linux_일반) (2005/02/06 04:24 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=178

느리다는 것만 빼면 1기가 짜리 웹 백업스토리지로 쓸만할 것 같군 -_-;



Gmail 은 구글에서 시작한 메일서비스인데, 아직 베타라서 초대에 의해서만 가입할 수 있음.



1기가! 용량을 제공하고, Conversation이라는 개념을 도입해서 메일 찾아읽기가 좀 편하달까..



참고로, gmail 초대권이 저한테 6장 있으니, 필요한 사람은 말하세용



다음은 리눅스에서 Gmail 계정을 마운트 하는 법에 대한 글입니다



http://bbs.kldp.org/viewtopic.php?t=43314





조태(khatz)

You know what I'm saying  

관리자 님 | 코멘트(1) | 스크랩|프린트|M|D
[제로보드] 듀란님의 전체쪽지 기능추가판  (Homepage_제로보드) (2005/02/05 06:45 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=177

이것의 원본은 http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&no=2701 이며,
무언가 저작권 관련으로 문제가 될경우 바로 삭제할 것을 사전에 알립니다...-,.-;;

기능추가라고 해도 그냥 특정레벨 이상이나 특정레벨에게만 보낼 수 있는 것 뿐입니다. [죄송;;]
개인적으로 감사히 잘 쓰다가 투철한 공유정신을 발휘해 이렇게 올려봅니다. [탕!]

우선 업로드한 파일(admin_sendmemo.zip)의 압축을 푸시면 다음의 파일이 있습니다.

- images (폴더, 전체쪽지 작성 폼에 쓰이는 이미지가 들어있음)
- admin_sendmemo.php (전체쪽지 작성 폼)
- admin_sendmemo_ok.php (스크립트 실행파일)

따로 수정하실 건 없을 듯 하구요, 위 파일들을 제로보드 디렉토리(예: bbs)에 업로드하셔야 합니다.
그리고 쪽지창을 띄우실때 넓이(width)를 400px, 높이(height)를 480px로 해주시면 최적입니다.(^^)

『특정레벨 이상』은 말 그대로 레벨 선택상자에서 지정해준 레벨 이상에게만 발송하며,
『특정레벨 Only』는 레벨 선택상자에서 지정해준 레벨의 회원들에게만 발송됩니다.
그리고 발송대상 값을『특정레벨 이상/Only』으로 지정해야만 레벨 선택상자가 활성화됩니다.


아무쪼록 유용히 쓰시는 분이 계셨으면 좋겠네요...^^

파일 : http://www.nzeo.com/bbs/download.php?id=cgi_tip&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&select_arrange=headnum&desc=asc&no=6743&filenum=2


원본글 : http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&select_arrange=headnum&desc=asc&no=6743




***** 관리자님에 의해서 게시물 카테고리변경되었습니다 (2005-09-16 08:29)



***** 관리자님에 의해서 게시물 카테고리변경되었습니다 (2005-12-14 08:00)



***** 임헌정님에 의해서 게시물 카테고리변경되었습니다 (2005-12-21 07:54)
admin_sendmemo.zip
관리자 님 | 코멘트(3) | 스크랩|프린트|M|D
[제로보드] 제로보드 & HTTP 인증 연동  (Homepage_제로보드) (2005/02/05 06:42 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=176

제로보드 회원의 아이디와 비밀번호와 대조해서 HTTP 인증을 하는데 성공했습니다.

일단 HTTP 인증이라 함은... http://www.nzeo.com/bbs/zboard.php?id=p_study&no=627


아시다시피 비밀번호는 MySQL password() 함수로 암호화되기 때문에

$member[password] 따위로 직접 호출해도 쓸데가 없었습니다.

그런데 이 MySQL password() 함수를 PHP에서 구현시켜주는 팁을 찾았다는...

다음의 URL은 PHP스쿨의 원문입니다.

http://www.phpschool.com/bbs2/inc_view.html?id=9085&code=tnt2


관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
phpMyAdmin 설치하기  (DB_Mysql) (2005/02/04 07:30 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=175

제목 없음

[펌] phpMyAdmin 설치하기 | 리눅스

2005/02/01 23:30

 

http://blog.naver.com/adioshun/80009884228

출처블로그 : ★ 아름다운 세상을 위하여 ★

phpMyAdmin 설치하기

차례
1. phpMyAdmin이란?
2. 다운로드하기
3. config.inc.php 파일 수정하기
4. 업로드하기
5. 실행


1. phpMyAdmin이란?
phpMyAdmin은 웹(WWW) 상에서 MySQL을 관리하기 위해 PHP로 작성된 툴입니다. database를 생성, 제거한다든지, database 내의 table을 생성,제거,변경할 수 있고, 또 table 내의 field들을 삭제, 편집, 추가할 수 있습니다. 이뿐아니라, SQL문을 실행하고, 여러 포맷으로 데이터를 내보낼 수 있으며, 현재 46개국 언어들을 지원합니다. 이 글을 쓰고 있는 현재의 최신 버전은 2.5.4-rc2입니다.

2. 다운로드하기
phpMyAdmin의 공식 사이트는 http://www.phpmyadmin.net입니다. 이곳에서 최신버전이나 안정적인 최신버전을 다운로드 받으시면 됩니다. 그림 1에 보인 것과 같이 여러 압축형태로 제공되고 있습니다.

그림 1. phpMyAdmin 다운로드 페이지

3. config.inc.php 파일 수정하기
phpMyAdmin 설치 파일을 다운로드 받으면, 그 안에 config.inc.php 파일이 있습니다. 이 파일에 자신의 MySQL 정보를 기록해주어야합니다. zip 파일을 다운로드받아 PC에서 압축을 푼 화면을 그림 2에 보였습니다.

그림 2. 압축해제하여 config.inc.php를 찾기

서버관리자가 phpMyAdmin을 설치하고, MySQL의 root 계정으로 설정을 해두면, 그 서버의 웹호스팅 관리자들은 자신이 부여받은 MySQL ID로 로그인하여 이용할 수 있습니다. 만약 서버관리자가 phpMyAdmin을 설치해주지 않으면, 각 웹호스팅 관리자들이 자신이 부여받은 공간에 설치하고, 부여받은 MySQL 계정으로 설정해서 이용할 수 있습니다.

꼭 수정해 주어야 할 부분을 그림 3에 보였습니다. 리눅스 서버에 올려놓고 vi 같은 에디터로 수정해도 되겠죠?

그림 3. config.inc.php에서 수정할 부분 

$cfg['PmaAbsoluteUri']에는 설치될 phpMyAdmin의 경로를 적어 줍니다. 만약, admin 사용자의 계정에 올린다면, 다음처럼 할 수 있겠지요?

   $cfg['PmaAbsoluteUri'] = 'http://192.168.10.3/~admin/phpMyAdmin/';

$cfg['Servers'][$i]['controluser'] 에는 MySQL ID를,
$cfg['Servers'][$i]['controlpass'] 에는 해당 암호를 그대로 입력합니다.

서버관리자일 경우에는 root를, 일반사용자일 경우에는 자신이 부여받은 MySQL ID와 비번을 입력하면 되겠지요?

서버관리자가 설치해두면, 일반사용자들이 누구나 이용할 수 있지만, 일반사용자의 MySQL ID로 설정하게 되면, 그 사용자 DB만 이용할 수 있습니다.

4. 업로드하기
이렇게 수정된 phpMyAdmin을 설치하고자 하는 위치로 FTP 프로그램을 이용하여 업로드합니다.

그림 4. phpMyAdmin 업로드하기

5. 실행
http://192.168.10.3/phpMyAdmin/에 올린 phpMyAdmin을 웹 브라우저로 실행해봅니다. 그림 5에 접속했을 때의 화면이 보입니다.

그림 5. phpMyAdmin 실행하기

config.inc.php에 MySQL root 계정정보를 넣었기 때문에 일반사용자들이 자신들의 MySQL ID로 로그인할 수 있습니다. 로그인 후의 화면을 그림 6에 보였습니다.

그림 6. MySQL admin 계정으로 로그인한 화면

이렇게 하여 사용자의 MySQL DB에 접근할 수 있는 phpMyAdmin 설치과정을 보였습니다. 이렇게 설치된 phpMyAdmin을 이용해서 DB를 새로 만든다든지, Table등을 조작할 수 있습니다.

이 문서를 작성한 주 목적은 MySQL DB를 이용하는 제로보드의 특정 게시판을 백업한다든지, 이전하기 위한 방법을 설명하기 위해 미리 만들었습니다.

2003년 10월 11일 토

허창원(hilite@chollian.net)

마산삼일교회(www.sam-il.org) 인터넷부
극동테크(www.kdtechno.com)

관리자 님 | 코멘트(0) | 스크랩|프린트|M|D
리눅스 팁 모음  (Linux_일반) (2005/02/04 07:24 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=174

네이버

 

[펌] 리눅스 팁 모음 | 리눅스 2005/02/01 02:38
http://blog.naver.com/adioshun/80009857409
출처블로그 : ★당신에게 가장 소중한 것은 무엇입니까??..♬ ★

FTP 사용법 제대로 알기

이번 강좌에도 GUI방식의 애플리케이션이 있으나 통상 리눅서가 많이 사용하는
텍스트모드의 애플리케이션을 소개하겠습니다.
GUI로는 한컴 리눅스 OS에 기본으로 내장되어 있는 gftp를 사용하면 됩니다.
우선 ftp를 설명하고, ncftp에 대해서 간단히 알아보겠습니다.

TCP/IP 애플리케이션 중 텔넷과 함께 가장 기본적인 것이 바로 파일 전송을 담당하는 FTP이다.
ftp 사용법 자체는 무척 간단하다.
ftp 명령 다음에 접속하고자 하는 ftp 주소를 적는다.
[root@fileplus root]# ftp ftp.hancom.com
Connected to ftp.hancom.com.
220 ProFTPD 1.2.5rc1 Server (ProFTPD HancomLinux Installation) [ftp.hancom.com]
500 AUTH not understood.
500 AUTH not understood.
KERBEROS_V4 rejected as an authentication type
Name (ftp.hancom.com:root): anonymous
331 Anonymous login ok, send your complete email address as your password.
Password:
230 Anonymous access granted, restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
anonymous는 익명을 뜻한다. 큰 규모의 ftp는 익명을 대부분 허용한다.
Password를 물으면 당황하지 말고 자신의 이메일을 적는다.
보안상의 이유로 패스워드를 입력하는 것은 안보인다.
보통 아이디 뒤에 @문자까지만 적어주면 알아서 접속한 여러분의 호스트 주소를 붙여서 생각한다.

FTP 접속이 허락되었다는 메세지와 함께 FTP 명령을 받을 상태가 되어 있다는
ftp> 프롬프트가 표시된다.
ftp> help
를 하면 사용가능한 명령의 리스트가 출력된다.
cd(change directory), ls(list), put(upload), get(download) 정도의 명령만 알면된다.

ftp> ls
227 Entering Passive Mode (211,174,51,35,219,90).
150 Opening ASCII mode data connection for file list
drwxr-xr-x 17 community community 4096 Jan 20 05:11 pds
drwxr-xr-x 12 community community 4096 Oct 1 06:09 pub
drwxr-xr-x 3 community community 4096 Feb 26 2002 update
drwxr-xr-x 3 community community 4096 Feb 25 2002 update1
226 Transfer complete.
ftp> cd pub
250 CWD command successful.
ftp> cd Acrobat
250 CWD command successful.
ftp> get Acrobat.tgz
local: Acrobat.tgz remote: Acrobat.tgz
227 Entering Passive Mode (211,174,51,35,219,213).
150 Opening BINARY mode data connection for Acrobat.tgz (13936656 bytes).
pub -> Acrobat 디렉토리로 이동 후 Acrobat.tgz라 파일을 받는 과정을 보여주고 있다.
간과하지 말아야 할 사항이 get, put 명령 모두 파일을 하나씩만 처리한다는 점이다.
그리고 바이너리를 전송받기 위해서는 bin 명령을 먼저내리며,
전송모습을 보기 위해서는 hash 명령을 해주면 된다.
두 명령 모두 토글 명령이므로 다시 명령하면 이전상태로 돌아간다.
여러 파일을 받을때는 mget, mput을 사용하면 된다.
그리고 파일마다 받을 것인지 물어오게 되는데 prompt란 명령을 주면 묻지 않는다.
접속해제는
ftp> bye
이다.

파일 전송은 매우 빈번하게 사용하는데다 ftp 명령이 매우 빈약하기 때문에
대부분의 리눅서들은 ncftp(닉FTP)라는 프로그램을 사용한다.
mget, mput 대신 get, put으로 다수의 파일을 전송이 가능하며,
-C 옵션을 주면 이어받기를 해주고, -R 옵션을 주면 디렉토리를 통째로 받을 수도 있다.
로컬의 디렉토리를 이동할 때는 지역(local)을 의미하도록 lcd 명령을 사용한다.
로컬의 리스트는
ncftp> !ls
를 통해서 볼 수 있다.
[root@fileplus root]# ncftp -u anonymous ftp.hancom.com
NcFTP 3.1.3 (Mar 27, 2002) by Mike Gleason (ncftp@ncftp.com).
Connecting to ftp.hancom.com(211.174.51.35)...
ProFTPD 1.2.5rc1 Server (ProFTPD HancomLinux Installation) [ftp.hancom.com]
Logging in...
Anonymous access granted, restrictions apply.
Logged in to ftp.hancom.com.
ncftp / > !ls
Acrobat.tgz Desktop
Antwone.Fisher.avi install.log
Antwone.Fisher.smi install.log.syslog
Daredevil.Ctp.HQ-SCR.Bivx.VF-VO.avi pumhaeng.zero-spt.avi
Daredevil.Ctp.HQ-SCR.Bivx.VF-VO.smi white.oleander(2002)Xvid-Dvl.avi
위에 보는 바와 같이 접속시 -u user 옵션을 이용하여 아이디를 한 줄에 입력하여 접속할 수도 있다.
ncftp의 쉽고 다양한 기능을 접해보길 기대하며 ftp와 ncftp에 대하여 소개하였다.

Happy Linuxing~~

 

압축 및 압축해제 제대로 알기

KDE 아카이브 도구(압축 툴)로서 Ark가 있습니다.
이것은 GUI방식입니다.
한컴리눅스 OS에 포함이 되어 있습니다.

그러나 아직도 일반리눅서들은 gzip과 bzip2를 많이 애용합니다.
이번에는 이에 대해서 설명드리겠습니다.

gzip
gzip은 Lempel-Ziv 코딩(LZ777)이라는 기법을 사용하여 압축을 합니다.

명령 사용법은

gzip [-9] file1 file2 ...

압축에 성공하면 기존의 file1, file2는 사라지고 file1.gz, file2.gz와 같이
파일명이 .gz로 끝나는 압축파일이 만들어집니다.

-9 옵션은 시간이 많이 걸리지만 최대의 압축을 수행합니다.
이와 반대로 -1 또는 --fast 옵션을 주면 압축률보다는 속도가 빨라집니다.

gzip 압축된 것을 풀고자 할 때는 다음과 같이 명령을 합니다.

gunzip file.gz
= gzip -d file.gz

-d 옵션은 압축해제(decompress)를 뜻합니다.
압축을 풀때는 file.gz를 삭제하고 file만을 남깁니다.
gzip은 묶기 기능을 지원하지 않습니다.
이는 작은 기능의 유닉스 철학을 따르는 것입니다.

bzip2
최근에 커널 소스를 압축하는데 gzip과 같이 사용되고 있어 인기를 끌고 있는
엄청난 압축률의 소유자가 bzip2가 있습니다.
Burrow-Wheeler 블록 정렬 텍스트 압축 알고리즘과 Huffman 코딩을 사용합니다.
특히, 텍스트 압축에서 뛰어난 성능을 보입니다.

사용법은

bzip2 file

압축을 마치면 .bz2가 붙는 파일이 생성됩니다.

압축을 해제시는 다음과 같이 합니다.

bzip2 -d
= bunzip2

파이프로 다른 프로그램과 연결할때는 gzip과 같이 -c 옵션을 사용합니다.
기존에 gzip으로 하던 일을 다른 기능의 수정없이 대신합니다.
그러나 아직도 gzip또한 bzip2과 함께 많이 쓰이는 툴입니다.

tar
tar 명령은 파일을 묶기만 하는 명령입니다.
파일을 묶을 때 소유권과 허가권 등 유닉스/리눅스 파일 고유 특징을
그대로 보존한다는 점이 중요합니다.

사용법은

tar cf file.tar file1 file2 ... dir1 dir2 ...

c는 create를 의미합니다.
f는 file을 의미합니다.
v는 verbose를 의미합니다. 즉 시각적으로 보여줍니다.
tar는 주로 소스 코드를 개발자가 배포할 때 많이 사용합니다.
보통 tar는 디렉토리를 묶을 때 많이 사용하며, 현재 디렉토리의 파일을
그냥 묶는 일은 별로 없습니다. 게다가 tar 명령으로 나중에 파일을 풀 때
현재 디렉토리에다 풀어버리도록 묶는 것은 매우 예의에 벗어나는 행동입니다.

반대로 묶여있는 파일을 풀 때는 x옵션을 사용합니다.
x는 extract를 의미합니다.

■ zip
zip은 Unix, VMS, MSDOS, OS/2, Windows NT, Minix, Macintosh 등에서 모두
쓰이는 압축/해제 도구입니다.
자세한 사용법은
# man zip
으로 확인하시기 바랍니다.
압축해제는 unzip입니다.


이제 정리의 의미로 다음과 같은 파일이 있을 때 어떻게 푸는지 설명을 드리겠습니다.
다음과 같은 파일이 있습니다. fileplus.1.0.tar.gz
# gunzip fileplus.1.0.tar.gz
fileplus.1.0.tar로 압축이 해제됩니다.

# tar xvf fileplus.1.0.tar
묶여있는 fileplus.1.0.tar 파일이 원래의 모습으로 풀립니다.
fileplus.1.0이라는 디렉토리가 생기는 것이 일반적인 관례입니다.

요즘은 흔히들 위 두 과정은 다음과 같이 한번에 끝냅니다.
# tar xvfz fileplus.1.0.tar.gz

지금까지 리눅스에서의 압축에 대한 설명을 드렸습니다.
자세한 사항은 맨페이지라 불리는 man을 통해서 알아보시기 바랍니다.
# man man

Happy Linuxing~~


바탕화면 아이콘 이쁘게 꾸미기

이번에는 바탕화면의 아이콘을 꾸미는 방법에 대해서 설명드리겠습니다.

우선 자료실-한컴KDE에 등록된 IcOsX-0.7.tar.gz란 파일을 다운로드 합니다.

편의상 root계정으로 설명을 드립니다.
# mv iconsx-0[1].7.tar.gz IcOsX-0.7.tar.gz
(다운받은 파일의 이름이 혹시 다르다면 위 과정을 거칩니다.
즉 파일이름을 변경합니다.)

# cp IcOsX-0.7.tar.gz /usr/share/icons
(IcOsX-0.7.tar.gz란 파일을 /usr/share/icons 디렉토리로 복사를 합니다.)

# cd /usr/share/icons
(/usr/share/icons 디렉토리로 이동을 합니다.)

# tar xvfz IcOsX-0.7.tar.gz
(IcOsX-0.7.tar.gz 압축파일의 압축을 풀어줍니다.)

# rm -f IcOsX-0.7.tar.gz
(이미 압축을 푼 IcOsX-0.7.tar.gz 파일을 지웁니다.)


[KDE 제어판] - [외양과 테마] - [아이콘]을 선택합니다.
IcOsX라고 나와 있는 테마를 선택하고 적용합니다.
이제 이쁘게 변한 아이콘들을 보실 수 있을 겁니다.

고급설정에서 아이콘 크기를 128까지 키워보세요.
좀 더 재미있는 바탕화면을 보실 수 있습니다.
취향에 따라 바꿔가며 해보세요.

또한 트레이의 모습도 트레이에 마우스 오른쪽을 클릭후 크기에서 자유롭게 변경하실 수 있습니다. 


CDROM 사용시 알아두면 좋은 팁

리눅스를 처음 사용하는 사용자가 당황해 하는 개념이 마운트 개념이다.
플로피 디스크, CDROM 등의 장치를 사용할 때
또는 윈도우즈 파티션을 사용할 때 쓰게 되는 것이 마운트이다.
즉 리눅스는 모든 장치를 사용할 때 마운트하여 자신의 하드디스크인양 인식하여 사용한다.
이것이 간단한 마운트의 내용이다.

기본 사용법
1. 바탕화면의 CDROM 아이콘을 클릭한다.
2. 그냥 CDROM 빼려고하지말고 언마운트를 먼저한 후 CDROM드라이브에서 매체를 꺼낸다.

위 사항을 터미날에 실행되는 과정은 다음과 같다.
# mount /dev/cdrom
= # mount /dev/cdrom /mnt/cdrom
= # mount /mnt/cdrom

CD의 내용을 확인 할 위치는 다음과 같습니다.
/mnt/cdrom
즉 mnt는 마운트되는 일반적인 내용을 담는 디렉토리입니다.

언마운트 방법은 다음과 같습니다.
# umount /dev/cdrom
= # umount /dev/cdrom /mnt/cdrom
= # umount /mnt/cdrom
유의할 부분은 해당디렉토리에 위치해서 명령을 내려서는 안된다는 겁니다.
그리고 eject란 명령어로 언마운트와 CDROM배출을 동시에 할 수도 있습니다.


여기서 특히 CDROM 마운트시 자주 발생하는 문제 해법을 두 가지 소개합니다.

1.
드문 경우지만 cdrom을 언마운트를 시도하여도 사용중이라고 나올때 대처법입니다.
우선 자신의 pwd(현재위치가) /mnt/cdrom이 아닌지 확인합니다.
경로도 정상이여도 안될때 다음과 같은 명령어를 써보십시오.

# fuser -km /dev/cdrom

2.
일반 유저에게 mount,unmount를 허용하려면 다음과 같이 하십시오.
/etc/fstab 을 수정한다.
/dev/cdrom /mnt/cdrom iso9660 noauto,ro,user
위와 같이 user라는 옵션을 추가하면 됩니다.


리눅스에서 한영키 사용하기


출처 : www.lug.or.kr

리눅스에서 한영키는 일반적으로 Shift+Space bar입니다.
하지만 초보자 및 일반사용자들은 불편할 것입니다.
리눅스에서 한영키와 한자키 등을 정의할 수 있도록 해보겠습니다.
(참고: 한컴리눅스 OS는 기본적으로 아래 패치가 적용되어 있습니다.)

먼저 root계정으로 로그인하신후
한텀에서

# xev
엔터 하시면 키정의를 하실수 있습니다.
한영키나 한자키, Back Space , Del키등을 누르시면
keycode 121 이런 형식으로 보이실겁니다.

확인된 키코드(keycode)값을 /etc/X11/Xmodmap 파일을 열어서 정의해 주시면 됩니다.

! i386 and alpha !표시는 주석표시
  keycode 22 = BackSpace
  keycode 107 = Delete
  keycode 121 = Hangul_Hanja
  keycode 122 = Hangul

저장후 바로 적용하기 위해 다음과 같이 입력합니다.

# xmodmap /etc/X11/Xmodmap
또는 X윈도우(Ctrl+Alt+←)를 다시 시작하면 바로 적용됩니다.

 

 

 

KDE가 이상이 있을 때 처치법

KDE가 문제가 생겼을 때 초기화 하는 방법이 있다.

본인의 홈디렉토리에 보면
#ls -a
하여 보면 .kde란 숨김 폴더가 있다.
아시다시피 파일(디렉토리)명 앞에 점이 붙으면 숨김파일이다.

위 폴더를 지운다.

#rm -rf .kde

X윈도우를 다시 띄워보면 초기화 된것을 볼 수 있다.

참고)
kde 설정 마법사를 통해서 간단히 변화를 꾀한다면 명령창에 kpersonalizer를 입력하면 설정마법사가 뜬다.

 

 

 

사용자 그대로 가지고 리눅스 다시 설치하기

리눅스를 다시 깔고 싶은데 사용자가 많아서 고민하시는 분들을 위한 팁입니다.

준비물: 디스켓1장 혹은 새로운 하드디스크.

순서

1) 우선 /etc 디렉밑에서 사용자와 관련된 passwd, group, shadow 이 3개 파일을 플로피나 다른 디스크로 복사합니다.

2) /home 디렉토리를 통째로 다른 디스크로 복사합니다.
# cp -a -R * /mnt/other 이런식으로 하면 되겠지요...

3) 사용자들이 쓰던 DB파일을 복사합니다.
# cp -a -R /usr/local/mysql/data /mnt/other/data

4) 리눅스를 새로 설치합니다.

5) 위 1에서 복사한 파일들을 /etc 디렉토리 밑에 복사합니다.
당연히 겹쳐쓰기에서 yes를 하시구요.

6) 2 와 3에서 복사한 파일들을 원래 디렉토리로 복사하던지
/etc/fstab 파일을 설정해서 마운트합니다.

 

 

 

LILO 부팅시 에러 해석하기

Q&A 게시판을 보면 리로 부팅시에 LI만 나온다는 사람들이 가끔씩 있습니다.
부팅시에 리로의 에러 메시지를 알아보겠습니다.

'L' = /boot/boot.b가 로딩될 수 없어서 생긴 에러. 디스크 에러가 주원인
'LI' = LILO의 재설치로 /boot/boot.b가 이동되었거나. 디스크에러가 원인
'LIL' = 디스크에러로 인해 맵(map) 파일로 부터 LILO가 필요한 데이터를 할당할 수 없어서 생긴 에러
'LIL?' = LILO의 재설치로 /boot/boot.b 파일이 이동되었거나 디스크 에러
'LIL-' =유효하지 않은 맵 파일 데이터거나 /boot/boot.b 파일의 이동으로 야기된 에러
'LILO' = 이렇게 나와야 성공적으로 로딩된 LILO이죠.


출처 : www.lug.or.kr

 

 

DVI 비디오 카드 설정

 

Hancom Linux OS 3.0에서 DVI지원 비디오 카드 설정 방법

(XFree86 4.2.1 기준)

■ nVidia Chip Set 계열

1. 우선 www.nvidia.com사이트에서 다음과 같은 2개의 드라이버 파일을 미리 다운 받는다.

- NVIDIA_kernel-1.0-4191.src.rpm

- NVIDIA_GLX-1.0-4191.src.rpm

2. Hancom Linux OS 3.0 인스톨시 linux text 명령을 사용하여 텍스트 모드로 인스톨한다.

3. 설치중 엑스 설정시 모니터는 generic lcd monitor 로 설정한다.

4. X-Window 설정만하고 테스트는 하지 않는다.

5. 부팅시 텍스트 모드로 부팅하도록 설정한다.

6. 설치가 끝나면 텍스트 모드로 부팅한다.


7. 부팅후 다운 받은 드라이버 패키지들을 다음과 같은 명령어로 Building 한다

rpmbuild --rebuild NVIDIA_kernel-1.0-4191.src.rpm

rpmbuild --rebuild NVIDIA_GLX-1.0-4191.src.rpm


8. Building 한 패키지들을 다음과 같은 순서대로 설치한다.

rpm -Uvh /usr/src/hancom/RPMS/i386/NVIDIA_kernel-1.0-4191.i386.rpm

rpm -Uvh /usr/src/hancom/RPMS/i386/NVIDIA_GLX-1.0-4191.i386.rpm


9. /etc/X11/XF86Config 파일에서 다음을 수정합니다.

1) Device section에서

Driver "nv" 로 되어 있는 부분을 Driver "nvidia" 로 고친다

2) Module section 에서 Load "glx" 추가 하고 다음과 같이 # 로 주석 처리 함

#Load "dri"

#Load "GLcore"

3) Monitor section 에서

Option "ConnectedMonitor" "DFP" 를 추가

10. 파일을 저장하고 나와 startx 해본다.

■ ATI Chip Set 계열

- 별다른 설정없이 출력이 됨

 

새로운 하드디스크 추가하기

 

현재 사용하고 있는 하드디스크는 Primary Master에 장착되어 있으며, 추가할 하드디스크는 Primary Slave에 장착했다고 가정합니다.

점퍼 설정 방법은 하드디스크의 앞면에 나와있으며, 대부분의 하드디스크는 점퍼를 떼면 「Slave」역할을 합니다. 컴퓨터 케이스를 열고 하드디스크를 끼운 다음 고정시키고 전원과 연결 케이블을 끼워줍니다.

※ 지금 설명은 IDE타입의 하드디스크를 컴퓨터에서 인식하는 것입니다. 참고로 SCSI 하드디스크는 CMOS에서 세팅하는 것이 아니고 별도로 추가된 SCSI 어댑터에서 지원하는 셋업 프로그램을 이용합니다. Ctrl + I 키를 이용해 설정합니다.

CMOS에서 하드 인식시키기

1. 부팅 시 Delete나 F2키를 눌러 CMOS를 실행합니다.
CMOS는 컴퓨터마다 다른 프로그램을 사용하나 대부분 Award사의 CMOS를 사용하므로 Award를 기준으로 설명)

2. 오른쪽 줄의 [IDE HDD AUTO DTECTION]를 선택하여 키를 누르면 자동으로 하드디스크를 인식합니다. Master 하드디스크를 인식하고 Slave 하드디스크를 인식합니다.

3. [SAVE & EXIT SETUP]메뉴를 누르고 저장한 다음 CMOS를 빠져 나옵니다.

4. Slave 하드디스크를 떼었을 경우 2단계까지 진행하고 메인 메뉴의 [STANDARD CMOS SETUP] 누르고 [PRIMARY SLAVE] 디스크 타입을 [NONE]으로 설정하고 키를 눌러 메인 메뉴를 빠져 나온 다음 [SAVE&EXIT SETUP]메뉴를 선택 후 Y를 선택하여 저장 후 CMOS를 빠져 나옵니다.

5. 하드디스크를 추가나 붙이는 것에 상관없이 사용할 수 있도록 CMOS를 설정하고 싶다면 2단계까지 진행하고 [STANDARD CMOS SETUP]메뉴에서 모든 하드디스크 타입을 [AUTO]로 설정합니다.

새 하드디스크에 리눅스 파티션을 설정하는 방법을 알아보겠습니다.

[root@localhost /root]# fdisk /dev/hdb

Command (m for help): p

파티션의 정보를 확인합니다. 새로운 하드 장착 시 아래와 같이 파티션 정보가 나타나지 않습니다.

Disk /dev/hda: 255 heads, 63 sectors, 788 cylinders
Units = cylinders of 16065 * 512 bytes
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System

Command (m for help): n

새로운 파티션을 생성합니다. 아래 내용은 파티션을 하나로 사용할 경우입니다.

Command action
e extended p primary partition (1-4)
p
(파티션을 Primary로 설정합니다.)
Partition number (1-4): 1
(사용할 파티션 숫자를 입력합니다.)
First cylinder (1-788, default 1):
Using default value 1
(초기값을 입력합니다.)
Last cylinder or +size or +sizeM or +sizeK (1-788, default 788):
Using default value 788
(마지막 실린더 값을 입력합니다.)

Command (m for help): p

파티션의 해당 정보를 확인합니다.

Disk /dev/hda: 255 heads, 63 sectors, 788 cylinders
Units = cylinders of 16065 * 512 bytes
device Boot Start End Blocks Id System
/dev/hdb1 1 788 6329578+ 83 Linux

Command (m for help): w

파티션을 저장 후 종료합니다.

[root@localhost /root]# mke2fs /dev/hdb1(분할한 파티션을 ext2 파일시스템으로 생성)
or
[root@localhost/root]# mkfs -t ext2 /dev/hdb1

예)도스 파일시스템 만들기
[root@localhost/root]# mkfs -t msdos /dev/hdb1

 

키보드 한/영 변환키 바꾸기

 

 

 


기본 설정된 한/영 전환키는 한/영 키와 Shift+Space키입니다.

하지만, 노트북에서는 이 한/영 키가 제대로 작동하지 않습니다.
xev 명령을 이용하여 X윈도우와 관련된 키보드나 마우스의 이벤트 값으로 keycode 값을 알아내어, 한/영 변환키 지정 값을 변경 할 수 있습니다..

자세한 xev 명령은 man xev로 살펴 봅시다.

한텀창에서 xev 명령을 실행합니다.
그럼, 한텀창에 X 윈도우와 관련된 키보드나 마우스의 이벤트 값을 볼 수 있습니다.
그중, 여기에서는 오른쪽 Alt키 keycode값을 알아내어 이를 한/영 변환키로 사용해 보겠습니다.
물론, Shift + Space 키도 같이 사용합니다.

KeyRelease event, serial 26, synthetic NO, window 0x2400001,
root 0x39, subw 0x0, time 818847283, (715,836), root:(719,861),
state 0x8, keycode 113 (keysym 0xff31, Hangul), same_screen YES,
XLookupString gives 0 characters: ""

여기에서는 3번째 줄의 keycode 값이 113번이므로 이를 /etc/X11/Xmodmap 에 수정합니다.
주의할 것은 노트북에서는 값이 다르므로, 키보드를 클릭하였을 때 나타나는 값을 확인해야 합니다.
맨 하단의 keycode 122 = Hangul 값을 keycode 113 = Hangul로 수정합니다.

#> vi /etc/X11/Xmodmap
! Euro sign support
! keycode 26 = e E currency
! keycode 54 = c C cent
! keycode 113 = Mode_switch Mode_switch Multi_key
keycode 115=Super_L
keycode 117=Menu
keycode 121 = Hangul_Hanja
keycode 113 = Hangul

수정이 되었다면, X를 재 실행하여 변경을 적용합니다.

GRUB 설정하기

 

 


GRUB 개요

grub은 grand unified bootloader의 약자로 GNU Hurd용이지만 리눅스에서도 점차 LILO대신 GRUB를 사용하고 있다. GRUB은 강력한 메뉴 편집 기능과 LILO에는 볼 수 없는 다양한 기능을 가지고 있다.

GRUB 설치

한컴리눅스 2.2버전을 설치할 경우, 부트로더로써 GRUB이나 LILO를 선택하게 되는데 만일 LILO를 선택하였다면 아래 설치방법을 진행하고, GRUB를 설치하였다면 아래 설치사항은
넘어가고 나머지 부분만 살펴보면 되겠다.

1) 소스 설치

ftp://alpha.gnu.org/gnu/grub에서 0.9버전의 grub을 다운로드 할 수 있다.
#tar xvzf grub-0.90.tar.gz
#cd grub-0.9
#./configure
#make
#make install
#mkdir -p /boot/grub
#cp -r /usr/local/share/grub/i386-pc/* /boot/grub/
#cp doc/menu.lst /boot/grub


2) rpm 설치
한컴리눅스 OS 2.2버전 첫번째 시디
#mount /mnt/cdrom
#cd /mnt/cdrom/Hancom/RPMS
#rpm -Uvh grub-0.90-12hl.i386.rpm

meun.lst 파일 편집

menu.lst 파일은 한컴리눅스 2.2 버전 기준으로 /boot/grub/menu.lst에 위치한다.

GRUB에서 사용하는 디스크 이름은 리눅스에서와는 좀 다르다.
/dev/hda ==> (hd0)
/dev/hda1 ==> (hd0,0)
/dev/fd0 ==> (fd0)
또한, GRUB은 IDE 하드디스크와 SCSI 하드디스크를 구별하지 않는다. 즉 바이오스 상의 정보를 그대로 사용하여 하드디스크를 인식하게 되는 것이다.

아래 meun.lst 파일은 리눅스의 /boot 파티선은 /dev/hdb1 이며, / 파티선은 /dev/hdb8로 가정하며, 윈도우 98 파티선은 /dev/hda1로 가정하여 설정한다.


default=0
timeout=10
title HancomLinux
root (hd1,0)
kernel /vmlinuz-2.4.13-1hl ro root=/dev/hdb8
title Window98
rootnoverify (hd0,0)
makeactive
chainloader +1

default=0
timeout=10
10초 동안 입력이 없으면 첫 번째 방법, 즉 파일에서 맨 앞 쪽에 기술되는 방법으로 부팅한다는 의미이다.

title HancomLinux
말 그대로 제목을 나타낸다

root (hd1,0)
리눅스 커널이 위치하고 있는 파티선으로 /boot 파티선의 위치를 나타낸다. /dev/hdb1에 /boot를 설치하였으므로, root (hd1,0)이다.

kernel /vmlinuz-2.4.13-1hl ro root=/dev/hdb8
/boot 파티선을 따로 잡고 있으므로, /boot/vmlinuz-2.4.13-1hl이 아니라, /vmlinuz-2.4.13-1hl이 된다. 만일 /boot 파티선을 따로 잡지 않았다면, /boot/vmlinuz-2.4.13-1hl이 되게 된다.
root=/dev/hdb8은 / 파티선을 지정한 파티선 넘버를 지정하게 된다.

title Window98
마찬가지로 윈도우 타이틀을 나타낸다.

rootnoverify (hd0,0)
rootnoverity는 root와 거의 같지만 마운트를 하지 않는다. 윈도우 2000의 NTFS 파티선처럼 인식하지 못하는 파티선의 경우 이 옵션으로 지정한다.

makeactive
GRUB의 루트 디바이스를 부팅 가능한 파티선으로 지정한다. 이 명령어는 첫 번째 하드디스크의 Primary 파티선에서만 사용가능하다.

chainloader +1
makeactive 명령으로 부팅 가능하도록 지정된 파티선의 첫 번째 섹터부터 읽어 부팅한다.

GRUB install

/boot/grub/menu.lst 파일을 설정에 맞게 수정되었다면
#grub-install /dev/hda
명령으로 하드디스크 첫 번째 디스크의 /MBR 영역에 설치를 한 후, 리부트 하여 GRUB의 메뉴가 뜨는지 확인한다.

Menu Interface

GRUB의 메뉴 선택 화면에서 화살표를 이용하면, 메뉴를 선택할 수 있다.
해당되는 메뉴에서 'e '를 누르면, 각 메뉴에 대한 설정들을 직접 메뉴에서 수정할 수 있다.
e : 편집 모드
o : 줄 추가
d : 줄 삭제
b : 편집이 끝난 후, 수정된 내용을 가지고 부팅

Commandline Interface

GRUB의 메뉴에서 'c'를 누르면, grub> 프롬프트를 볼 수 있다.
commandline에서 'tab'키를 이용한 자동 완성기능 지원하고, 현재 사용 가능한 명령어를 볼수 있다.
주의할 점은, menu interface나 commandline에서 다양한 편집이 가능하므로, menu.lst 파일에 password 옵션을 추가하여 패스워드를 설정하는 방법을 추천한다.
password [password]
패스워드를 추가했다면 p를 입력하여, 패스워드를 입력하여야지만 menu나 commandline를 사용할 수 있다.

 

 

 

휠마우스 설정

 

 

한컴리눅스 OS 2.2버전에서 다음과 같이 파일을 수정합니다.
#> vi /etc/XII/XF86Config-4

Section "InputDevice"
   Index "InputDevice"
   Driver "mouse"
   Option "Protocol" "PS/2" ==> "IMPS/2"
   Device "/dev/psaux"
   Emulate3Buttons "no"

위 파일을 열어 section"inputDevice"부분에 "PS/2"를 "IMPS/2"로 바꾸어 줍니다.

파일 설정이 완료되면 로그아웃 후 재 로그인 합니다.

USB 장치 사용하기

 


TEST 제품 - usb floppy, usb hdd, usb printer

리눅스에서 usb 장치를 인식시킨 후 사용하려면 우선 usb 모듈이 올려져 있어야 합니다. usb 인식에 필요한 모듈은 usb_uhci와 usb_storage이며 대부분 자동으로 인식되어지므로 사용하고자 하는 usb 장치를 usb 포트에 꽂기만 하면 됩니다. /etc/modules.conf 파일을 vi나 편집기로 연 후 아래 라인이 포함되어 있는지 확인하기 바랍니다.

alias usb-controller usb-uhci

기본적인 usb 장치이름은 /dev/sda입니다. 각 장치별 마운트 방법을 설명하겠습니다.

① usb floppy

1. usb 포트에 장치 연결 후 리눅스로 부팅 합니다.

2. 콘솔 및 한텀에서 마운트 옵션을 실행합니다.

3. #mount /dev/sda /mnt/floppy [Enter]

위와 같이 하면 특별한 문제없이 usb floppy 장치를 마운트 후 사용할 수 있습니다.

② usb hdd

1. usb 포트에 장치 연결 후 리눅스로 부팅 합니다.

2. 콘솔 및 한텀에서 마운트 옵션을 실행합니다.

3. /mnt/disk라는 디렉토리가 없다면 먼저 디렉토리 생성 후 마운트를 하기 바랍니다.

   #mkdir /mnt/disk

4. #mount /dev/sda /mnt/disk [Enter]

5. hdd가 초기화 상태라면 포맷을 하기 바랍니다. 포맷 옵션은 아래와 같습니다.

#mkfs -t ext3 /dev/sda

6. 초기화가 끝나면 리눅스의 fdisk를 사용하여 hdd의 파티션 공간을 사용자에 맞게끔 분할하여 사용할 수 있습니다.

모든 설정이 끝나면 추가된 hdd 공간을 사용하여 리눅스를 사용할 수 있습니다.

③ usb printer

1. usb 포트에 장치 연결 후 리눅스로 부팅 합니다.

2. 한텀에서 chmod 666 /dev/usb/lp0 명령으로 모든 사용자에게 쓰기권한을 허가합니다..

3. 한텀창에서 루트 권한으로 "setup" 명령을 실행하고 Print Configuration 메뉴를 선택합니다.

4 "새로생성" 버튼을 누르면 새로운 프린트 큐 생성 창이 뜹니다.

5. 큐이름에 자신이 넣고 싶은 이름을 넣고 큐 유형을 선택합니다. 큐 유형은 프린터가 컴퓨터에 직접 물려있는 "로컬프린터"로 설정합니다.

6. 장치선택화면에서 /dev/usb/lp0를 선택합니다.

7. 다음 프린터 드라이버를 선택하는 창이 뜨는데, 이때 자동으로 검색되는 프린터 드라이버를 지정합니다. (프린터 드라이브가 자동으로 지정되지 않는 경우 그와 비슷하거나 유사한 모델의 프린터 드라이버를 지정해 줍니다.)

8. 프린터 설정을 모두 마쳤다면 생성된 프린터 큐를 선택 후 편집버튼을 누르고 "드라이버 옵션" 탭의 속성들을 설정하여 주는데, 용지부분을 A4로 변경하고, 포스트스크립트에 관련된 체크를 모두 해제하고 하단의 확인 버튼을 눌러 빠져 나옵니다.

9. "적용" 버튼을 눌러 변경된 사항을 적용시킨 후 lpd 데몬을 재시작 합니다.

10. printtool 메뉴 중 "테스트"를 선택하여 올바르게 설정되었는지 확인해 봅니다.


Xmanager란 무엇일까?


이번에는 윈도우즈에서 Telnet이나 ssh가 아닌 X윈도 자체를 불러와서 쓸 수 있는 유용한 상용프로그램에 대해서 설명하겠습니다.
이 문서는 한컴리눅스 OS 3.0(3.1beta 동일)을 기준으로 되어 있습니다.

Xmanager는 네트워크로 연결된 UNIX와 VMS 호스트의 응용 프로그램을 윈도우상에서 사용할 수 있게 해 주는 X 서버 소프트웨어입니다. UNIX 워크스테이션과 엔터프라이즈 서버를 모든 데스크탑에서 사용할 수 있게 해 주는 최고의 인터네트워킹 솔루션이며, 기업 전산 환경에 반드시 필요한 소프트웨어입니다. Xmanager를 활용하면 한 대의 UNIX 또는 VAX시스템을 전직원이 동시에 사용할 수 있으며, 시스템 구축 비용을 대폭 절감할 수 있다고 합니다.
■ 실행 화면


■ 평가판 받을 수 있는 곳
http://netsarang.co.kr/download/download.html

■ 사용전 설정 부분
<리눅스 박스>
1. 폰트 서버 설정

/etc/X11/fs/config 파일에 아래 항목이 있을 경우 주석 처리 후 폰트 서버 구동.(41라인 근처)
no-listen = tcp --(변경 후)--> #no-listen = tcp

폰트 서버 구동 방법 : Unix(Linux)에서 해야 할 일
# /etc/rc.d/init.d/xfs restart [Enter]

2. kde를 X윈도로 사용하는 경우

/etc/X11/xdm/xdm-config 파일의 다음 라인을 코멘트로 막습니다.(28라인 근처)
DisplayManager.requestPort: 0 ==>
!DisplayManager.requestPort: 0

/etc/X11/xdm/Xaccess 파일의 다음 줄에 코멘트 기호(#)를 삭제합니다.(40라인 근처)
#* #any host can get a login window ==>
* #any host can get a login window

/usr/share/config/kdm/kdmrc 파일을 찾아서 다음과 같이 설정합니다.(77라인 근처)
[Xdmcp]
Enable=true

※ 해당 파일의 위치를 찾을 수 없다면 slocate란 명령어로 찾아보시기 바랍니다.
모든 과정을 마쳤다면 재부팅을 하십시오.그리고 아래 과정으로 넘어가시면 됩니다.

<윈도우즈 박스>
1. [시작]-[프로그램]-[Xmanager 1.3.9]-[X설정]-"폰트" 탭에서
폰트서버추가 버튼을 누른후 리눅스 박스의 IP를 입력한다.
2. [시작]-[프로그램]-[Xmanager 1.3.9]-[Xmanager]를 클릭하여 실행한다.

이제 윈도우즈에서 리눅스박스에 접속하여 리눅스의 X윈도를 쓸 수 있습니다.
감사합니다. :-)

모니터 화면이 한쪽으로 치우칠 때 처치법

 

 


이번에는 한 PC에서 윈도우즈와 리눅스를 같이 쓸 때 리눅스로 부팅시 모니터 화면의 치우침 현상으로 곤란을 겪을 때 사용되는 유틸리티에 대해서 설명드리겠습니다.
우선 한컴리눅스 OS에는 xvidtune이라는 유틸리티가 기본으로 들어있습니다.

# xvidtune
이라고 실행을 하면 다음과 같은 화면이 나옵니다.



위 화면에서 Left 혹은 Right 버튼을 눌러서 좌우를 맞춥니다.
(Apply 버튼을 눌러야 적용된 화면을 볼 수 있습니다.)
화면이 맞추어졌다고 판단이 되면 Show 버튼을 누릅니다.
그러면 아래 화면과 같이 수치가 표시 됩니다.



"1024x768"... 부분부터 한 줄을 모두 블럭지정하여 임시저장합니다.
그리고 편집기로 /etc/X11/XF86config 파일을 엽니다.
(Xconfigurator를 실행한 적이 한번이라도 있으면 XF86config-4를 엽니다.)



위 화면과 같이 모니터부분에 modeline이라고 입력후 블럭지정으로 임시저장되어 있던 내용을 복사합니다.
이제 편집기를 저장하고 나와서 X서버를 재실행하거나 리눅스를 재부팅합니다.
위 과정이 모두 순조롭게 되었다면 제대로 적용된 화면을 볼 수 있습니다.

Happy Linuxing~~

md5sum이란 무엇일까?

 


이번에는 다운로드한 파일의 무결성을 체크하는 방법을 설명드리겠습니다.
주로 ISO이미지 파일의 이상유무를 테스트할 때 많이 사용합니다.
md5sum은 체크썸(checksum)을 생성해 주는 유틸리티입니다.
체크썸이란 파일의 실제 내용에 대해 산술적인 계산을 해 특정한 숫자를 뽑아낸 것입니다.
이를 이용해 파일의 무결성을 확인할 수 있습니다.
보안에 관련된 목적으로 아주 중요한 시스템 파일 내용이 변경되거나 손상됐는지 여부등을
체크썸 목록으로 관리하고 이를 참조하는 스크립트를 만들어 쓸 수도 있습니다.
md5sum은 이런 보안 어플리케이션에 제일 적합한 명령어입니다.

사용법은
# md5sum HancomLinuxOS31.iso
를 하고 조금 기다리면 계산값이 나옵니다.
그리고 iso를 제공한 곳에서 함께 제공하는 HancomLinuxOS31.md5 파일을
# cat HancomLinuxOS31.md5
을 통해서 값을 확인하여 위에 계산된 값과 일치한다면 결점이 없는 파일을 받은걸로 간주하면 됩니다.

윈도우즈에서는 어떻게 사용해야 하나 고민하는 사용자를 위해서 간단히 설명드리자면...
*.md5 파일은 ASCII파일이므로 일반 메모장으로 열어보시면 되며,
체크할 파일은 다음의 프로그램을 사용해서 체크하시면 됩니다.

윈도우즈 md5sum 프로그램

이상으로 파일의 무결성을 체크하는 방법을 설명드렸습니다.


Happy Linuxing~~


로그인창 거치지 않고 로그인하기

 

 

이번 강좌는 윈도우즈에 익숙한 사용자들이 많이 질문하는 내용인
로그인창을 거치지 않고 로그인하기에 대해서 설명드리겠습니다.

리눅스에서 root는 굉장히 강력한 권한을 지녔습니다.
경우에 따라 시스템을 다시는 사용하지 못할 수도 있습니다.
그래서 해킹(정확한 표현으로는 크래킹)에서 root권한만을 따내면 작업 끝이라곤 합니다.
# rm -rf /
가 의미하는 것을 아시기만 하여도 이해가 되실 겁니다.
따라서 하드웨어 설정이나 프로그램 설치등의 작업이외에는 가급적 일반유저를 사용하시는 것이 좋습니다.
리눅스의 장점중 하나가 바로 다중 사용자 시스템이라는 것입니다.
각 사용자가 매우 독립적으로 분리되어 있고 서로 간섭하지도 않습니다.
따라서 재미있게 사용할 수도 있습니다.
예를 들면
시스템을 화려하게 꾸민 개인 용도의 사용자와 다른 사람도 사용할 수 있는 공용 계정,
그리고 업무에 사용할 사용자 등......
개인도 여러 사용자를 만들어 놓고 입맛에 맞게 골라서 쓸 수도 있습니다.
기본적으로 혼자 쓰도록 되어 있는 윈도우즈 9x계열을 사용하시던 분께서는 불편하실지도 모르겠지만...
root로 사용했을 때의 위험성과 일반유저의 장점을 생각하신다면 로그인 과정이 그리 불편하지 않으리라고 생각됩니다.

참고로 대부분 제어판에서 설정을 해서 로그인창이 안보이는 경우도 많지만, 윈도우즈도 2000이상에서는 로그인을 기본으로하고 있습니다.

물론 리눅스에서도 방법이 있습니다.있고요!^^*

시작-설정-KDE제어판-시스템관리-로긴관리자-'편리한 기능'탭
'자동로그인가능'을 선택한 후
'암호를 입력하지 않고 로그인가능' 선택합니다.
이때는 root는 보이지 않습니다.

root로 하려면 편법적으로
/usr/share/config/kdm/kdmrc를 열어 다음 부분을 root로 수정해 줍니다.
DefaultUser=root
AutoLoginUser=root
또한
AutoLogingEnable=true
로 되어 있나 확인하시면 됩니다.

재부팅 후부터 바로 root로 로그인 되는 것을 볼 수 있습니다.


Happy Linuxing~~


 


GRUB 배경이미지 바꾸기

 

 

이번에는 부트매니저인 GRUB의 배경이미지를 바꾸는 방법을 알려드리겠습니다.
http://www.gimp.org 홈페이지에서 플러그인인 grub-image.scm 을 다운로드 받습니다.

gimp가 설치되어 있는 경우...
gimp-config --install-script grub-image.scm
라고 입력합니다.

grub용으로 사용할 이미지를 선택하여 gimp로 실행합니다.
파일 -> Grub Boot image를 클릭하면....
splash.xpm.gz파일이 생성됩니다.
이것을 /boot/grub/ 디렉토리에 복사해 넣고 재시작하면 됩니다.


Happy Linuxing~~

 

하위 디렉토리들의 용량 확인하는 방법

 


이번에는 하위 디렉토리의 크기를 확인하는 방법에 대해서 알아보겠습니다.
하위 디렉토리의 크기를 확인할 때 du하면 정신없이 내려옵니다.
이런 경우
# du -h --max-depth=1 /usr
라고 입력해 보세요.
하위 디렉토리 각각의 용량만 기록하게 됩니다.

예제:
[root@fileplus root]# du -h --max-depth=1 /usr
606M /usr/share
114M /usr/X11R6
107M /usr/bin
4.0K /usr/dict
4.0K /usr/etc
4.0K /usr/games
62M /usr/include
637M /usr/lib
45M /usr/local
16M /usr/sbin
136M /usr/src
4.3M /usr/libexec
5.0M /usr/kerberos
1.7G /usr
[root@fileplus root]#



Happy Linuxing~~


grub에서 싱글부팅


이번에는 시스템이 문제가 생겼거나 root패스워드를 분실했을때 사용되는 싱글모드로 들어가는 방법을 설명드리겠습니다.
즉 grub에서 싱글모드로 부팅하는 방법입니다.

부팅시 grub화면이 뜨면 부팅하고자 하는 곳에 커서를 놓고 e를 입력합니다.
root (hd1,1)
kernel /vmlinuz-2.4.18-5smp ro root=LABEL=/ vga=0x303 console=/dev/tty2 CONSOLE=/dev/tty2 hdd=ide-scsi apm=power-off
initrd /initrd-2.4.18-5smp.img

vga=0x303 -> 커널 LPP사용
console=/dev/tty2 CONSOLE=/dev/tty2 -> 로그인시 메시지를 두번째 가상 터미널로 이동
hdd=ide-scsi -> hdd디스크를 스카시 장치 처럼 인식
apm=power-off -> 리눅스 시스템을 종료했을때 전원자동끄기(smp시스템은 전원이 자동으로 종료되지 않습니다.-물론 커널에서 수정할 수 있지만 커널 컴파일하기 귀찮은 분들은 이렇게 적어도 됩니다. lilo의 경우 append="apm=power-off"라고 입력하면 되죠)
위와 같이 세개가 나올겁니다.

이중 두번째 kernel로 시작하는 부분에 커서를 놓고 또 e를 선택합니다.

제일 끝에.... 알파벳 대문자 S 또는 single이라고 입력하고 [Enter]를 칩니다.
kernel /vmlinuz-2.4.18-5smp ro root=LABEL=/ S

위와 같이 편집후 이전 화면으로 왔으면 키보드에서 b(booting)을 누르면 싱글 모드로 부팅되게 됩니다.
로그인이 되었으면 이제 다음과 같은 명령어로 패스워드를 변경하면 됩니다.
# passwd
...
# reboot
위의 grub 편집은 일회적으로 변경하는 것이기 때문에 재부팅 후에는 이전상태로 돌아갑니다.


cf)
lilo의 경우 Ctrl+x를 누른 후 레벨명(linux) 1이라고 입력하면 됩니다.



Happy Linuxing~~



웹브라우저 오페라 7.11 설치하기

 

 


리눅스용 웹브라우저 오페라 7.11이 오페라 소프트웨어에서 제공되고 있습니다.



윈도우즈버전/맥버전/리눅스버전 등 각종 플랫폼을 지원하고 있습니다.

유료버전과 광고가 들어간 무료버전 두가지가 있습니다.

7.11에 대하여 오페라 소프트웨어는 다음과 같이 밝히고 있습니다.
Opera 7 for Linux

Opera 7.11 is the first Opera 7 release on Linux. Now you can enjoy features including:

* M2 e-mail client
* FastForward and Rewind
* Take Web Notes as you browse
* Cookie manager
* Built-in search
* Mouse gestures
* Wand password manager


설치는 한컴리눅스 OS 3.1이 기준입니다. 다른 배포판 또는 하위버전은 설치가 안될 수 있습니다.

우선 자료실에 등록된 다음 파일을 다운 받습니다.

opera.tgz 다운받기


그리고 압축을 해제한 후

# tar xvfz opera.tgz

다음 두 가지 rpm을 설치합니다.

# rpm -Uvh openmotif21-2.1.30-6.i386.rpm

# rpm -Uvh opera-7.11-20030515.1-static-qt.i386.rpm

이제 다음과 같이 실행을 합니다.

관리자 님 | 코멘트(4) | 스크랩|프린트|M|D

Fedora Core 2 FTP 설치기  (Linux_일반) (2005/02/04 06:03 pm)
+ 고유주소 : http://4ellene.cafe24.com/blog/?no=172

네이버

 


[펌] Fedora Core 2 FTP 설치기 2004/07/07 02:23
http://blog.naver.com/adioshun/80003814120
출처블로그 : 시작과 끝 msbatangfonts.tar
msgulimfonts.tar

-= IMAGE 1 =-
원본 크기의 사진을 보려면 클릭하세요

Fedora Core 2 (페도라 코어 2)가 커널 2.6.x 를 지원하는 덕분에 그동안 느려서 써기 힘들은 USB2 외장 하드디스크가 윈도우에서처럼 매우 빨라졌다. 너무 만족스럽다.


 

게다가 FTP를 통해 설치했는데, 선택한 FTP 미러가 너무도 빨라, 단 40분만에 설치가 완료되었다.


 

상상할 수 있는가?? 운영체제와 오피스 패키지 그리고 수많은 유용한 프로그램들을 모두 설치하는데, 단, 40분... 그것도 CD 한장으로 갈아끼우는 일도 없이 모두 완벽하게 설치되었다!!


 

게다가 윈도우 처럼 인터넷에 연결되자마가 웜에 감염되지도 않아 미리 보안 패치를 받아두는 짓 따위를 할 필요는 없다.


 

멋지다 페도라~~


 

이 설치기는 리눅스 초보자를 위한 것이 아니다.


 

설치 준비

FTP로 설치한다고 해서 CD가 없어도 되는건 아니었다.


 

다음 파일을 받아서 CD로 굽는다.


 


 

방금 만든 CD로 부팅하면 된다.


 

부팅하면 간단한 텍스트 메뉴가 나오는데 그냥 "엔터"를 치면 설치 화면으로 넘어간다.


 

설치 언어를 물어보면 Korean을 선택한다.
다른 것은 기본 값을 선택하면 된다.


 

FTP 미러와, Fedora가 있는 디렉토리를 선택하라고 나오면 자신이 선택한 미러를 적는다.


 


 

  • 내가 선택한 미러와 페도라의 경로
    • ftp.sayclub.co.kr
    • pub/Linux/fedora/linux/core/2/i386/os

잠시 후 미러에서 설치 프로그램을 받아와 그래픽 환경에서 한국어 메시지를 보며 설치할 수 있게 된다.
이후 설치 과정은 설명하지 않는다. 알아서 하시라.


 

  • 나의 파티션

    hda1 :ntfs
    hda2 7GB : ext3 /
    hda3 8.5 : ext3 /home/
    hda5 516MB : swap
    

Gnome 2 환경에서 RunLevel 5로 부팅되게 설치했다.


 

설치후 보니, 내가 선택하지 않았던 패키지들이 많이 설치되었다.


 

불필요한 서비스 삭제


 

시스템설정->서버설정->서비스 에서 IIim, isdn, gpm 제거


 

로그아웃후 재시작하면 한글 입력기 Nabi가 자동실행된다.


 

아직은 IIImf보다는 Nabi가 더 좋다...


 

불필요한 패키지 삭제

# yum remove slocate


 

내가 페도라를 깔면 가장 먼저 지워버리는 패키지가 slocate 이다. locate 명령을 위한 패키지인데, 하드 디스크 전체의 파일 목록 데이터베이스를 생성해서 파일 검색 속도를 빠르게 해주는 것이다.
나로서는 정말 쓸모 없으면서 컴퓨터 속도를 갑작스레 느리게 만드는 짜증나는 패키지이다.


 

그 외에 iiimf-* 로 시작하는 패키지들도 삭제해 버리고 나는 사용하지 않는 emacs와 tetex 패키지등도 yum remove 를 이용해 삭제해 버렸다. 의존성 관계에 있는 것을 yum 이 알아서 다 삭제해 준다.


 

시스템 전체 업그레이드

그동안 출시된 보안 패치들을 업그레이드 해야 하겠다. 이것은 아래에서 yum과 up2date의 소스리스트를 바꾼뒤에 해도 된다.
# yum -y upgrade


 

한참 기다려야 할껄...


 

yum 소스 리스트 정리

페도라를 설치하고서 꼭 해줘야 할게 있다면, yum 소스 리스트에 http://rpm.livna.orghttp://freshrpms.net 을 추가하는 것이다.


 

그리고 더불어, 기본 리포지토리로 설정되 전세계에서 접속을 해오는 Redhat 의 페도라 리포지토리를 삭제하고, 미러로 바꿔주는 것도.


 

/etc/yum.conf 를 다음과 같이 고친다. 기존의 내용은 삭제해버린다.


 

[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
retries=20

[fedora-us-2]
name=Fedora Core 2 -- Fedora US mirror
baseurl=http://mirrors.usc.edu/pub/linux/fedora/fedora/fedora/2/i386/RPMS.os

[fedora-us-2-updates]
name=Fedora Core 2 updates -- Fedora US mirror
baseurl=http://mirrors.usc.edu/pub/linux/fedora/fedora/fedora/2/i386/RPMS.updates

[fedora-us-2-stable]
name=Fedora Linux (stable) for Fedora Core 2 -- Fedora US mirror
baseurl=http://mirrors.usc.edu/pub/linux/fedora/fedora/fedora/2/i386/RPMS.stable


[livna-stable]
name=Livna.org Fedora Compatible Packages (stable)
baseurl= http://rpm.livna.org/fedora/$releasever/$basearch/yum/stable


[livna-unstable]
name=Livna.org Fedora Compatible Packages (unstable)
baseurl=http://rpm.livna.org/fedora/$releasever/$basearch/yum/unstable

[livna-testing]
name=Livna.org Fedora Compatible Packages (testing)
baseurl=http://rpm.livna.org/fedora/$releasever/$basearch/yum/testing

[freshrpms]
name=Fedora Linux $releasever - $basearch - freshrpms
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms
페도라의 기본 미러는 자기가 알아서 다른데로 해준다. 전부다 저 미러로만 접속하려 들면 짜증낼테니...

귀찮아서 APT-RPM은 사용하지 않기로 했다. GPG 체크도 제외시켰다.
원한다면 Fedora Core 1 설치기를 참조하여 설치한다.
APT-RPM의 Synaptic 을 이용하면 GUI 환경에서 편하게 패키지를 선택해 설치하고 제거, 업그레이드 할 수 있다.

up2date 소스 리스트 정리

화면 우하단에 둥글게 나와서 업데이트된 패키지가 있는지 알려주는 up2date 도 소스 목록을 지정해 줄 수 있다.


 


 

이제 livna.org 와 freshrpms.net 의 패키지들의 업데이트 상황도 쉽게 알 수 있고, 편하게 업데이트 할 수 있다. 굳이 yum update 를 할 필요가 없다.

Xmodmap 설정으로 한영키 사용하기

/etc/X11/Xmodmap 의 설정 고쳐서 한영키를 사용한다.


 

xev를 실행해서 한/영키와 한자키를 누르고 거기서 나오는 keycode를 Xmodmap 파일에 등록해주면 된다.
keycode 209 = Hangul
keycode 210 = Hangul_Hanja


 

나비(Nabi)와 Xmodmap이 자동으로 실행되지 않는다??

Core 2의 버그로 보인다.


 

Nabi의 경우, XIM을 읽어들이는 파일이 /etc/X11/xinit/xinitrc.d/xinput 인데, 이 xinput 을 읽어서 실행해주는 프로그램인 /etc/X11/xdm/Xsession 을 보면, xinput 이 아니라 xinput.sh 처럼 .sh가 붙어있는 파일만 읽어들이도록 설정되어 있다. 그러므로 xinput 을 xinput.sh 로 복사해주면 된다.
# cd /etc/X11/xinit/xinitrc.d
# cp xinput xinput.sh


 

xinitrc.d 에 있는 다른 파일들도 마찬가지로 .sh 로 복사해준다.


 

Xmodmap 의 경우는 X.org의 버그인가? 잘 모르겠다. 나의 경우 xmodmap /etc/X11/Xmodmap을 분명히 실행함에도 이 설정이 작동하지 않았다. 나와 같은 현상을 겪는다면, 일반 사용자 계정에서
[kwon37xi@ktux kwon37xi]$ gnome-session-properties
위와 같이 실행하고, 시작프로그램에 xmodmap /etc/X11/Xmodmap을 등록해주면 된다.
각, 사용자 계정별로 해줘야 한다.


 

NTFS 설치

Linux-NTFS 프로젝트에서 ntfs 커널 모듈을 받아서 설치한다. 현재 커널 버전에 맞는 것으로 받아야 한다.


 


 

설치 후,
# modprobe ntfs
이제 NTFS 파티션을 사용할 수 있게 되었다.


 

/etc/fstab 수정

VFAT과 NTFS의 한글 파티션을 제대로 사용하려면 fstab을 수정해야 한다.
# Windows 파티션
/dev/hda1 /mnt/win ntfs iocharset=utf8,defaults,users,umask=0200 0 0

# VFAT USB-2 HDD
/dev/sda1               /mnt/uhdd               vfat    iocharset=utf8,defaults,users,umask=0   0 0


 

MS-Windows 98 의 한양 굴림/바탕 사용하기

한글 MS-Windows 98의 gulim.ttc와 batang.ttf 를 /usr/share/fonts/ko/ms-gulim/usr/share/fonts/ko/ms-batang에 복사하고, 첨부한 fonts.dir, font.alias 를 각 디렉토리에 복사해준다.


 


 

''/etc/X11/xorg.config 파일에서 다음과 같이 수정한다.
    Load "xtt"
    #Load "freetype"
xtt를 사용하고 freetype은 주석처리해서 사용하지 못하게 하는 것이다.


 

그리고 다음을 실행한다.
# fc-cache


 

이제 구형 방식인 X 글꼴 시스템과, GNOME이 사용하는 최신 X FontConfig에 글꼴이 등록되었다.


 

XTerm 한글 사용하기

XTerm은 유니코드를 지원한다. 지난번 Fedora Core 1 설치기에서 글꼴을 설치하라고 했었는데, 사실은 그럴필요가 없었다. 이미 모든 글꼴은 설치되어 있었다.. 죄송~~


 

~/.Xresources 에 다음을 등록한다.
xterm*utf8: 1
xterm*VT100*font: -misc-fixed-medium-r-semicondensed-*-13-*-*-*-*-*-iso10646-1
xterm*VT100*boldFont: -misc-fixed-bold-r-semicondensed--13-120-75-75-c-60-iso10646-1


 

그리고 다음 명령 실행
. xrdb -merge ~/.Xresources
이제 XTerm 을 실행하면 한글이 됨을 볼 수 있다.


 

mlterm의 설치

페도라가 UTF-8 문자 인코딩으로 넘어오면서 생긴 심각한 문제 중의 하나는 기존 EUC-KR 기반의 유닉스/리눅스에 telnet 혹은 ssh 로 접속하면 한글이 모두 깨져버린다는 것이다.
이에대한 해결책이 이미 있었으니 mlterm(Multi Language Terminal) 이다.
유니코드 부터 EUC-KR, EUC-JP 등 다양한 인코딩을 넘나들며 작업할 수 있는 터미널이다.


 

mlterm SRPMrpmbuild --rebuild mlterm-*.src.rpm으로 컴파일해 설치해서 사용하면 된다.


 

* mlterm을 위한 글꼴 설정
~/.mlterm/font 파일을 다음과 같이 편집한다.
# EUC-KR 일때 이용하는 글꼴
ISO8859_1 = -ms-gulimche-medium-r-normal-*-%d-*-*-*-*-*-iso8859-1
ISO8859_1_BOLD = -ms-gulimche-bold-r-normal-*-%d-*-*-*-*-*-iso8859-1
KSC5601_1987 = -ms-gulimche-medium-r-normal-*-%d-*-*-*-*-*-ksc5601.1987-0
KSC5601_1987_BOLD = -ms-gulimche-bold-r-normal-*-%d-*-*-*-*-*-ksc5601.1987-0

# UTF-8일때 이용하는 글꼴
ISO10646_UCS4_1=-misc-fixed-medium-r-semicondensed-*-%d-*-*-*-*-*-iso10646-1


 

* mlterm 설정
~/.mlterm/main 을 다음과 같이 편집한다.
scrollbar_view_name = sample

fontsize=13

bg_color=wheat
fg_color=black


 

mlterm을 EUC-KR로 실행하고자 한다면 다음과 같은 방식으로 하면 된다.
$ mlterm --km=euc-kr --fontsize=12


 

mlterm 이 이미 실행된 상태에서도 Ctrl-마우스오른쪽버튼을 클릭하면 메뉴가 떠서, 글꼴과 문자 인코딩등의 설정을 바꿀 수 있다.


 

mlterm 은 xterm에 비해 매우 느리다. 평소에는 xterm을 Telnet/SSH 접속할 때는 mlterm을 사용하는게 나을 듯.


 

Java 글꼴 설정


 


 

XMMS MP3 듣기

페도라는 기본적으로 XMMS에서 mp3파일 지원을 빼두었다.
MP3 와 함께 시험삼아 XOSD도 설치해보자.
# yum install xmms-mp3 xmms-xosd
이제 *.mp3 파일도 들을 수 있다.


 

** XMMS 한글 설정
XMMS 설정 창의 글꼴 탭에서 폰트셋 사용하기, X글꼴 사용하기를 활성화 시켜주고서..


 

연주목록 글꼴
-adobe-helvetica-medium-r-*-*-12-*,-baekmuk-gulimbdf-medium-r-normal-*-12-*-*-*-m-*-ksc5601.1987-0


 

기본창 글꼴
-adobe-helvetica-medium-r-*-*-12-*,-baekmuk-gulimbdf-medium-r-normal-*-12-*-*-*-m-*-ksc5601.1987-0


 

제목 탭에서는 제목 형식을 %f로 지정한다. 이렇게 하지 않으면 기존 EUC-KR로 되어 있는 ID3 태그들의 내용이 다 깨져 보이게 된다. 그냥 파일 이름만 보는게 낫다.


 

** XOSD 한글 설정
XMMS가 파일을 바꿔 연주할 때마다 화면에 제목을 뿌려주는 프로그램이다.
일반플러그닌탭에서 On Screen Display를 플러그인 사용으로 활성화 시켜주고, 설정 버튼을 누른다.
글꼴 선택 부분을 다음과 같이 한다.
-adobe-helvetica-bold-r-*-*-24-*,
-baekmuk-gulimbdf-bold-r-normal-*-24-*-*-*-m-*-ksc5601.1987-0


 

       
△ 이전글: XP 설치시 "An Unexpected Error (768) Occurred at Line 5118@ind:Xp\Client\Boot\Setup\Setup.c" 오류 메시지
▽ 다음글: 네트워크 엑세스거부대처법 (XP파일공유 안될때) Restrictanonymous
Copyright 1999-2019 Zeroboard / skin by enFree