출처 : 대전국제IT교육센터 정성재 강사
1. Daemon이란?
Daemon이란 사전적인
의미로는 보통 악마(demon)를 뜻하거나, 그리스신화의 Daemon처럼 수호신을
뜻한다. 유닉스(리눅스)에서는 악마처럼 앞에 나타나지
않고, 사용자가 모르게 뒤에서 시스템의 관
리를 위해 움직이는 프로그램을 말한다. 즉, 백그라운드로 실행되어 있다가 네트워크를 통해
클라이
언트의 여러가지 요청(Mail이나 FTP등처럼)에 서비스하기 위해 설치하는 서버프로그램이다. 윈도우NT
나 윈도우2000의
서비스와 같은 의미로 보통 램에 상주하며, 대표적인 것으로는 httpd, ftpd,inetd
등이 있다.
2. Daemon의 종류
(1) 설명: 데몬에는 sendmail이나
apache처럼 단독으로 실행되는 것이 있고, ftp, telnet, pop3등을
한꺼번에 관리하는 inetd(커널
2.4버전인 경우에는 xinetd)같은 슈퍼데몬이 있다.
(2)단독으로 실행되는 데몬 : 웹서비스처럼 클라이언트의 서비스요청이 많은 경우에
유용하다. 항
상 램에 상주하므로 좀 더 빠른 서비스가 가능하나, 자원(메모리)의
낭비를 초래할 수 있다. 대표적인 것으로는 다음과 같은 것이 있다.
1)
httpd : World Wide Web 서비스를 제공하는 아파치 데몬이다. 웹서버로 사용하지 않는다면 부
팅시간이
많이 걸리므로 사용하지 않는 것이 좋다.
2) named : DNS서버를 사용할 경우 이 서버의 작동유무를 제어하는 데몬이다.
독립시스템일 경우
사용하지 않는다.
3) sendmail : E-mail을 주고 받을 때 사용되는
데몬이다.
4) smb : 일명 삼바를 실행 시켜주는 데몬이다. 삼바는 유닉스와 윈도우의 파일 및 프린터를
공
유하게 해주는 서비스이다.
5) crond: 리눅스에 등록된 명령어들을 정기적으로 수행하는 데몬이다.
즉, 멀티태스킹으로 동작
하는 리눅스에서 받은 메일의 스풀러 정리라든지 각종 명령어들을 실행하는
데몬이다.
반드시 실행시킨다.
6) gated : 라우팅데몬으로 리눅스에 라우팅 기능을 수행하고 싶으면 이
데몬이 떠 있어야 한다.
7) netfs: 삼바, NFS, NCP등을 마운트하거나 언마운트할 때 필요한 데몬이다. NFS 데몬등을
실행
하려면 해당 데몬을 실행하기 전에 미리 띄워야 한다.
8) nfs : NFS(Nerwork File
System)데몬을 띄우는 일을 한다. NFS는 TCP/IP를 이용하여 파일들을
서로 공유할 수 있게 만든다. 리눅스에서
NFS서버를 운영할 때 쓴다.
9) lpd : 프린터 데몬이다. lpr과 같은 명령어를 사용해 프린터를 사용하려면 이 데몬을
실행시
켜야 한다.
10) mcserv : mc(Midnight Commannd)라는 파일매니저 프로그램을
작동시키는 데몬이다.
11) ircd : IRC(Internet Relay Chat)데몬이다. IRC란 인터넷 채팅을 할 때 쓰는
일종의 채팅프로
그램이다.
12) syslog : syslog는 시스템에 일어나는 여러가지를 기록해주는
데몬이다. 이 데몬은 반드시 실
행하는 것이 좋다. 이 데몬이 있어야 시스템에 여러가지 사고가 발생시 기록을
추적
하는 단서를 얻을 수가 있기 때문이다. 이 데몬에 관련된 환경파일은
/etc/syslog.co
nf이다.
13) squid : http, ftp, gopher 같은
프로토콜을 사용할 때 캐쉬의 속도를 높여주는 데몬이다.
14) snmpd : SNMP(Simple Network Management
Protocol)데몬이다. 네트워크의 상황을 모니터를 할
때 사용된다.
15) amd :
automount의 약자로 호스트에서 그 서버의 파일을 읽을 때 자동으로 마운트하게 해 주
는 데몬이다. 이 데몬은
네트워크 정보가 잘못 입력되었을 경우 부팅될 때 문제를 일으킬
킬 수 있으므로 별다른 경우가 아니면 꺼 놓는 것이
좋다. 네트워크 설정이 정상적이거
나 아예 사용하지 않는 경우라면 선택해도 무방하다.
16)
bootparamd : 리눅스 서버를 통해 연결된 Sun워크스테이션의 네트웍을 부팅할 때 사용했던 데
몬으로 리눅스에서 sun 네트워크를 부팅시킬 때 사용한다. BOOTP와 DHCP를 사용
하는 경우에는 켜
놓을 필요가 없다.
17) portmap : 원격프로시저호출(RPC:Remote Procedure Call)연결을 제어해 주는 역할을
하며,
NFS와 RPC를 사용하는 서비스를 제공하는 데몬이다. 네트워크상에서
클라이언트-
서버개념이 적용되지 않는 시스템에서는 실행할 필요가 없는 데몬이지만 nfs, nis,
amd 등 원격 프로시저 호출을 하는 프로그램을 사용할 경우에는 반드시 선택해야
하는 데몬이다.
18) routed : 자동IP라우터로 독립적인 시스템에서는 실행할 필요가 없는
데몬이다.
19) atd : 백그라운드 작업을 해주거나 각종 예약 명령을 처리하는 작업을 한다. 기본적으로
선택
되어 있으며, 특별한 경우가 아니면 선택한다.
20) dhcp : 네트워크로 구성된 상태에서 리눅스
서버의 정보를 이용하여 부팅될 자신의 IP주소와
네트워크 정보를 가질 수 있게 하는 데몬이다. 네트워크에서 서버로
사용되면 BOOTP와
DHCP가운데 하나를 선택하는데, 정적IP를 부여한 네트워크 환경에서 선택한다.
네트워
크가 구성되지 않는 일반PC에서는 선택할 필요가 없다.
21) gpm : 리눅스로 부팅된 다음
텍스트 상태에서 마우스를 사용하여 영역을 선택하거나 복사를
가능하게 해주는 데몬이다. 이 서비스는
PS/2마우스일경우 X-window와 충돌할 수도 있
다. 만약 X-window를 실행시켰을 때 마우스가 움직이지
않으면 이 데몬을 끈다.
22) kerneld : 운영체제의 핵심인 커널 기능을 동작시키는 데몬이다. 반드시 선택한다.
23) keytable : 키보드의 정보를 설정하는 /usr/sbin/kbdconfig명령으로 키보드유형을 변환할
수
있도록 해주는 데몬이다.
24) network : 네트워크 관련된 각종 정보를 설정을
활성화하는 데몬이다.
25) sound : 리눅스의 부팅과 종료시 사운드의 믹서 설정을 복구하거나 저장하는 스크립트이다.
26) ruserd : 네트워크 사용자를 추적할 수 있는 데몬으로 특정 사용자의 위치를 확인할 수 있다.
27) rwhod : 원격
접속을 한 사용자들의 목록을 볼 수 있는 로그 정보를 가진 데몬이다.
28) ypbind : NIS(Network
Information Service) 즉, 네트워크에 알려진 모든 머신들에게 정보(In
formation)을
제공해주는 서비스를 해주는 네트워크-클라이언트에 관련된 서버이다.
29) yppasswd : NIS에 관련되는 것으로 클라이언트
사용자가 패스워드를 변경할 수 있도록 해주는
서버측의 데몬이다.
30) ypserv : NIS를
총괄하는 서버이다. 데이터베이스나 프로세스들로 구성되어 있는 간단한 네트
워크를 찾는 서버이다.
31) apmd : 고급전원 관리기능(Advanced Power Management)을 해주는 데몬이다. 마더보드에서
APM
을 지원한다면 이 데몬을 작동하도록 한다. doze, standby, suspend, nap, sleep,
mode
s 와 하드디스크 절전 등 바이오스에서 하는 것보다 더욱 더 뛰어난 기능을 발휘한다.
32)
pcmcia : 노트북이나 laptops 에서 사용하는 PCMCIA 관련 데몬이다.
(3)슈퍼데몬 inet에서 관리하는 데몬
1) 설명: Inet는 Internet Superserver라 불리우며 자주 실행되지 않는 데몬들을 통들어 관리해
슈퍼데몬이라고 부른다. 일반 데몬들처럼 프로세스가 항상 떠있지 않고, 클라이언트의
요청이 있는 경우 에만 데몬을
실행시킨다. 응답시간은 좀 걸리지만 메모리가 절약된다.
이 슈퍼데몬은 커널 2.2버전과 2.4버전이 차이가 있다. 커널
2.2버전 (리눅스 6.x 버전)
에서는 inetd라는 이름을 사용하였으며, 전체적인 환경 설정은
/etc/inetd.conf에서 통합
관리하였고, 슈퍼 데몬에 속하는 데몬들은 'TCP Wrapper'라는 프로그램에
의해 접근이
제어되었다. 커널 2.4버전(리눅스 7.x버전이후)에서는 xinetd라는 이름의 슈퍼데몬이
작동되고 환경설정은 /etc/xinetd.conf와 /etc/xinetd.d디렉토리의 각 서비스파일에서
관리한다.
2) 슈퍼데몬에서 관리하는 데몬
ㄱ. telnet : telnet서비스를 제공하는
데몬
ㄴ. ftp : ftp(file transper protocol)서비스를 제공하는 데몬
ㄷ. finger :
시스템에 현재 누가 로그인하고 있는지를 알려주고 그 밖에도 여러가지 유용한
정보를 얻을 수 있게 해주는
데몬
ㄹ. login : rlogin과 같은 명령어를 사용하여 신뢰하는 호스트에서 접속시 로그인할 수
있도록
해주는 데몬. 보안상 위험하니 사용하지 않는 것이 좋다.
ㅁ. auth : IDENT
프로토콜을 지원하는 서비스이다. 리눅스의 ident 데몬으로 접속해 현재 누가
접속했는지에 대한 정보를 알려주는
데몬이다.
ㅂ. shell : rsh와 같은 명령어를 사용해서 원격의 호스트에서 접속시 조건없이 쉘명령어를
실행
시키는 데몬이다.
ㅅ. tcpd : 호스트에서 telnet서비스를 요청하면 TCP
Wrapper에서 in.telnetd 를 작동시킨다. 이
과정만 보면 telnet서비스만 할 뿐 호스트에 대한
정보를 남기지 않는다. tcpd의 역할
은 in.telnetd가 구동되기 전에 telnet서비스 접속에 대한
기록을 파일에 적는 역할을
한다. 즉, tcpd가 TCP Wrapper 프로세스이다.
3.데몬의 실행과 중지
(1) 단독으로 실행되는 데몬
1) 설명: 단독으로 실행되는 데몬들은
/etc/rc.d/init.d 디렉토리에 스크립트 파일을 가지고 실행
/중지시키면 된다. 또는 service라는
스크립트를 사용해도 된다.
2) 사용예 : httpd데몬의 중단과 실행
ㄱ. [root@www root]#
/etc/rc.d/init.d/httpd stop
=> httpd 데몬을 중지시킨다.
ㄴ.
[root@www root]# /etc/rc.d/init.d/httpd start
=> httpd 데몬을
작동시킨다.
ㄷ. [root@www root]# service httpd restart
=>
service 명령을 이용하여 httpd 데몬을 재작동시킨다.
(2)슈퍼데몬 inet에서 관리하는 데몬
1) inet에서
관리하는 전체를 중지 또는 실행시키는 방법
ㄱ. 커널 2.2 버전
/etc/rc.d/init.d/inet
stop
/etc/rc.d/init.d/inet start
ㄴ. 커널 2.4 버전
/etc/rc.d/init.d/xinetd stop
/etc/rc.d/init.d/xinetd start
ㄷ.
참고: 위의 방법으로 inet을 중단시키면 inet데몬에 관련된 모든 데몬들이 작동을 하지 않는
다. 그러므로,
한가지 데몬만을 중단한 경우에는 적합하지 않다.
2) inet(또는 xinetd)에서 관리하는 데몬중 일부만 중지시키기
ㄱ. 커널 2.2 버전: inet데몬에서 일부만 중단하려면 /etc/inetd.conf 파일에서 한다. 해당
서비
스 항목의 맨 앞에 주석처리('#')를 하면 해당 서비스에 해당하는 데몬이
작동하지 않는다.
예) telnet서비스 중단하기
#telnet
stream tcp nowait root /usr/sbin/tcpd in.telnetd
=>
(항목설명)
- 서비스이름: /etc/services파일에 정의된 텔넷, ftp와 같은 특정 서비스들을
의미
- 소켓타입: 서비스에 의해 사용된 연결의 타입을 기술. 보통 tcp서비스인 경우에는
'stream', udp서비스인 경우에는 'dgram'이 옴
- 프로토콜:
네트워크 프로토콜 타입이 기술된다. 보통 'tcp'나 'udp'가 옴.
- 대기상태: 하나의 서버프로세스가 한번에 여러
요청을 처리할 수 있는지를 나타냄. wait
이면 inetd가 서비스들에 대한 각각의 요청을 처리하기
위해 여러 프로세스가
생성되는 것을 방지하고 nowait라고 설정되어 있으면 각각의 요청을 위해
프로
세스를 생성
- 사용자이름: 네트워크 서비스를 수행해야 할 로그인
이름
- 서버프로그램: 네트워크 서비스를 활성화시키기 위해 수행해야 할 프로그램을 가리킴
-
서버프로그램인자: 네트워크 서비스가 수행되기 시작할 때, 전달 되어야 할 인자와 설정
플래그들을 나열
ㄴ. 커널 2.4 버전: /etc/xinetd.d디렉토리에 보면 xinetd에서 관리하는 데몬들의 파일이
생성
되어 있다. 만약 telnet이면 telnet이라는 파일의 항목에서 'disable =
yes'
라고 설정하면 해당 데몬은 xinetd에서 실행하지 않는다. 또는 'chkconfig
telnet off' 하면 된다.
(3) 데몬관련명령어: ntsysv
1)
설명: 부팅시 자동실행되는 데몬들을 쉽게 설정하기 위해서는 'ntsysv'를 이용하면 된다. 그럼
데몬들의 목록이
나오는데 스페이스키로 선택해주면 부팅시마다 자동으로 데몬이 작동한다.
이 명령도 어렵다면 'setup'을 하면
X-window설정등 여러 메뉴가 나오는데 여기는 'System
Service'를 선택하면 된다. 물론 이 명령도
루트권한자만 가능하다.
2) 사용예
ㄱ. ntsysv
=> 현재 레벨의 자동으로 시작하는
서비스데몬을 지정할 수 있다.
ㄴ. ntsysv --level 5
=> 레벨 5의 자동으로 시작하는
서비스데몬을 지정할 수 있다.
4. 데몬의 확인
(1) 개요: 리스트로
나열하여 확인할 수 있고, 트리형태로 그래픽하게도 확인할 수 있다.
(2) 관련명령어
1) ps
ㄱ. 설명:
리스트로 나열하여 보여준다.
ㄴ. 사용예
ps -aux
2) pstree
ㄱ. 설명: 이
명령은 현재 가동중인 데몬들을 tree구조 형태로 나타내 준다.
ㄴ. 사용예
pstree