tcpdump


* 이 문서를 보기 전에 알아야 할 사전 지식

이 문서는 네트워크의 패킷들을 잡아내는 Tcpdump라는 프로그램에 대해서 설명하고 있다. 프로그램의 특성상, 네트워크에 관련된 많은 용어들과 특히 TCP/IP에 대한 내용 이 많이 나온다. 따라서 보다 잘 이해하기 위해서는 네트워크 설비 자료나, 네트워크 프로그래밍 가이드, 혹은 네트워크 프로토콜(TCP/IP)에 관련된 책들을 참조하는 것이 좋을 것이다.

* Tcpdump란?

Tcpdump는 주어진 조건식을 만족하는 네트워크 인터페이스를 거치는 패킷들의 헤더들 을 출력해 주는 프로그램이다. 프로그램의 특성상, 네트워크 인터페이스를 아주 심도 있게 사용하기 때문에, 실행하는 사람은 반드시 네트워크 인터페이스에 대한 읽기 권 한이 있어야만 한다.
OS dependent)
위에서 말하는 읽기 권한을 가지고 있어야 하는 파일, 혹은 Tcpdump의 퍼미션 이다.
o SunOS : /dev/nit, /dev/bpf*
o Solaris(SunOS 5.x) : /dev/le 등
o HP-UX & IRIX & Linux : root에서 실행하거나, root로 setuid를 설정해야 함
o Ultrix & Digital UNIX : root가 pfconfig를 이용하여, promiscuous-mode를 가능하게 설정하면 어떤 유저라도 사용할 수 있다.
o BSD : /dev/bpf* 

* Tcpdump의 패키지 구하기

Tcpdump는 ftp://ftp.ee.lbl.gov/tcpdump.tar.Z에서 최신 버전을 구할 수 있다. 유명 한 프로그램이기 때문에, 시스템소프트웨어를 패키지형태로 제공해 주는 OS들의 경우 Vendor에서 패키징된(컴파일된) 버전으로도 구할 수 있을 것이다.

* Tcpdump의 설치

Tcpdump는 libpcap(Protocol Capture Library)라는 것을 사용한다. 이 라이브러리는 Platform에 상관없이 동일한 방법으로 사용자 레벨에서 패킷들을 캡춰할 수 있게 해 준다. 따라서 이 라이브러리가 없다면, ftp://ftp.ee.lbl.gov/libpcap.tar.Z에서 구하 여 설치하도록 한다.

ANSI C 컴파일러는 아마 대부분의 시스템에서 구비하고 있을 것이다. 만약 없다면 ftp://prep.ai.mit.edu/pub/gnu/gcc.tar.gz를 받아서 설치하기 바란다.

libpcap라이브러리가 완벽하게 설치되었다는 가정하에서 다음의 절차에 따라 설치를 시작한다.

o Makefile.in의 BINDEST와 MANDEST 항목에 각각, tcpdump 실행파일과 메뉴얼 페이 지가 설치될 디렉토리들을 입력해 준다.
o Tcpdump 패키지와 함께 제공되는 ./configure 스크립트를 실행시킨다. 이 스크립트는 현재 시스템의 환경들을 검사하고 이에 맞추어서 Makefile을 생성해 준다.
o make를 실행한다.
o 컴파일이 다 됐으면, make install을 수행하여 실행파일을 설치하고, make install-man을 실행하여 메뉴얼 페이지도 설치한다.
o tcpdump의 퍼미션이 제대로 되었는지를 검사한다. setgid가 설정되어 있기 때문에, 원하지 않는 사람이 실행하게 된다면 위험하다. 
위에서 설명한 절차를 그대로 옮겨 본다.

# vi Makefile.in
# ./configure
# make
# make install
# make install-man

OS dependent)
o DEC/OSF and BSD/386, etc : tcpdump가 OS와 함께 제공되는 경우가 있다. 이럴 경우 tcpdump를 업그레이드 하기 전에 반드시 기존의 tcpdump를 백업해 두도록 하자.
o Linux : libpcap 라이브러리는 2.0.25 커널에서 테스트 됐다. 2.0.x 대 커널 에서 25이하의 버전에서는 실행이 아마 가능할 것이다. 그러나 1.x대의 커널에서는 동작 여부가 입증되지 않았으므로 주의해야 한다.
o OSF 4 : OSF4에서는 stack C 컴파일러에 치명적인 버그가 있다. 이 버그를 피해가려면, ./configure를 실행한 후 컴파일 하기 전에 Makefile에서 다음의 문장을 삭제한 후 컴파일해 주면 된다.

-DETHER_HEADER_HAS_EA=1 -DETHER_ARP_HAS_EA=1

* Tcpdump Source의 간략한 설명

* Tcpdump의 옵션들

o -a : Network & Broadcast 주소들을 이름들로 바꾼다.
o -c Number : 제시된 수의 패킷을 받은 후 종료한다.
o -d : comile된 packet-matching code를 사람이 읽을 수 있도록 바꾸어 표준 출력으로 출력하고, 종료한다.
o -dd : packet-matching code를 C program의 일부로 출력한다.
o -ddd : packet-matching code를 숫자로 출력한다.
o -e : 출력되는 각각의 행에 대해서 link-level 헤더를 출력한다.
o -f : 외부의 internet address를 가급적 심볼로 출력한다(Sun의 yp server와의 사용은 가급적 피하자).
o -F file : filter 표현의 입력으로 파일을 받아들인다. 커맨드라인에 주어진 추가의 표현들은 모두 무시된다.
o -i device : 어느 인터페이스를 경유하는 패킷들을 잡을지 지정한다. 지저되지 않으면 시스템의 인터페이스 리스트를 뒤져서 가장 낮은 번호를 가진 인터페이스를 선택한다(이 때 loopback은 제외된다).
o -l : 표준 출력으로 나가는 데이터들을 line buffering한다. 다른 프로그램에서 tcpdump로부터 데이터를 받고자 할 때, 유용하다.
o -n : 모든 주소들을 번역하지 않는다(port,host address 등등)
o -N : 호스트 이름을 출력할 때, 도메인을 찍지 않는다.
o -O : packet-matching code optimizer를 실행하지 않는다. 이 옵션은 optimizer에 있는 버그를 찾을 때나 쓰인다.
o -p : 인터페이스를 promiscuous mode로 두지 않는다.
o -q : 프로토콜에 대한 정보를 덜 출력한다. 따라서 출력되는 라인이 좀 더 짧아진다.
o -r file : 패킷들을 '-w'옵션으로 만들어진 파일로 부터 읽어 들인다. 파일에 "-" 가 사용되면 표준 입력을 통해서 받아들인다.
o -s length: 패킷들로부터 추출하는 샘플을 default값인 68Byte외의 값으로 설정할 때 사용한다(SunOS의 NIT에서는 최소가 96Byte이다). 68Byte는 IP,ICMP, TCP, UDP등에 적절한 값이지만 Name Server나 NFS 패킷들의 경우에는 프로토콜의 정보들을 Truncation할 우려가 있다. 이 옵션을 수정할 때는 신중해야만 한다. 이유는 샘플 사이즈를 크게 잡으면 곧 패킷 하나하나를 처리하는데 시간이 더 걸릴 뿐만아니라 패킷 버퍼의 사이즈도 자연히 작아지게 되어 손실되는 패킷들이 발생할 수 있기 때문이다. 또, 작게 잡으면 그만큼의 정보를 잃게되는 것이다. 따라서 가급적 캡춰하고자 하는 프로토콜의 헤더 사이즈에 가깝게 잡아주어야 한다.
o -T type : 조건식에 의해 선택된 패킷들을 명시된 형식으로 표시한다. type에는 다음과 같은 것들이 올 수 있다. rpc(Remote Procedure Call), rtp(Real-Time Applications protocol), rtcp(Real-Time Application control protocal), vat(Visual Audio Tool), wb(distributed White Board)
o -S : TCP sequence번호를 상대적인 번호가 아닌 절대적인 번호로 출력한다.
o -t : 출력되는 각각의 라인에 시간을 출력하지 않는다.
o -tt : 출력되는 각각의 라인에 형식이 없는 시간들을 출력한다.
o -v : 좀 더 많은 정보들을 출력한다.
o -vv : '-v'보다 좀 더 많은 정보들을 출력한다.
o -w : 캡춰한 패킷들을 분석해서 출력하는 대신에 그대로 파일에 저장한다.
o -x : 각각의 패킷을 헥사코드로 출력한다.

조건식(expression)

옵션의 제일 마지막인 조건식은 어떤 패킷들을 출력할지를 선택하는데 쓰인다. 조건식이 주어지지 않는 다면 모든 패킷들이 그 대상이 될 것이다. 일단 주어지면, 아무리 패킷들이 많아도 조 건식에 부합하는 패킷만을 출력한다.

조건식들은 하나 또는 몇 개의 primitive들로 구성되어 있다. primitive들은 보통 하나 혹은 몇개의 qualifier들 다음에 오는 하나의 값으로 이루어진다. Qualifier들은 모두 3 종류이며 다음과 같다.

o type : 주어진 값의 종류가 무엇인지를 나타낸다. 가능한 type들은 'host', 'net', 'port'가 있다. type이 없는 값들은 type을 host라 가정한다.
o dir : id로 부터의 어떤 특정한 전송 방향을 나타낸다. 가능한 방향은 'src', 'dst', 'src or dst', 'src and dst'이다. 만약 방향이 정해지지 않았다면, src or dst라 가정한다. "For `null' link layers (i.e. point to point protocols such as slip) the inb ound and out bound qualifiers can be used to specify a desired direction."
o proto : 매칭을 특정 프로토콜에 한해서 수행한다. 가능한 프로토콜들은 ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp, udp이다. 만약 프로토콜이 명시되지 않았다면, 해당하는 값의 type에 관련된 모든 프로토콜들이 그 대상이 된다.

이 밖에도 위의 패턴을 따르지 않는 Primitive들이 존재한다(gateway, broadcst, less, greater, 산술식).

좀 더 정교한 조건식들을 사용하려면, 'and(&&)', 'or(||)', 'not(!)'들을 사용하여 여러 primitive들을 연결하면 된다. 같은 표현들은 생략될 수 있다.

사용 가능한 Primitive들

o dst host HOST
packet의 IP destination 항목이 HOST일때 참이 된다.
o src host HOST
packet의 IP source 항목이 HOST일때 참이 된다.
o host HOST
IP source, IP destination 항목 중 어느 하나라도 HOST이면 참이다.
o ether dst ehost
ethernet destination 주소가 ehost일 때 참이다.
o ether src ehost
ethernet source 주소가 ehost일 때 참이다.
o ether host ehost
ethernet source, destination 항목들 중 어느 하나라도 ehost이면 참이다.
o gateway host
패킷이 host를 게이트웨이로 사용하면 참이다. 이 말의 의미는 ethernet sour ce나 destination 항목은 host이지만, IP source와 destination은 host가 아닐 때를 말한다.
o dst net NET
패킷의 IP destination 주소가 NET의 network number를 가지고 있을 때 참이 다.
o src net NET
패킷의 IP source 주소가 NET의 network number를 가지고 있을 때 참이다.
o net NET
패킷의 IP source 주소 혹은 destination 주소가 NET의 network number를 가 지고 있을 때 참이다.
o net netmask mask
IP 어드레스가 지정된 netmask를 통해서 net과 매칭되면 참이다.
o net net/len
IP 어드레스가 netmask와 len 비트만큼 매치되면 참이다.
o dst port PORT
패킷이 ip/tcp, ip/udp 프로토콜의 패킷이고 destination port의 값이 PORT일 때 참이다. port는 /etc/services에 명시된 이름일 수도 있고 그냥 숫자일 수도 있다. 만약 이름이 사용됐다면 port 번호와 프로토콜이 같이 체크될 것이다. 만약 숫자나 불 확실한 이름이 사용됐을 경우에는 port 번호만이 체크될 것이다.
o src port PORT
패킷의 source port의 값으로 PORT를 가지면 참이다.
o port PORT
패킷의 source, destination port 중에 하나라도 PORT이면 참이다.
o less length
패킷이 length보다 짧거나 같으면 참이다.(len <= length)
o greater length
패킷이 length보다 짧거나 같으면 참이다.(len >= length)
o ip proto protocol
패킷이 지정된 종류의 프로토콜의 ip패킷이면 참이다. Protocol은 icmp, igrp, udp, nd, tcp 중의 하나 혹은 몇 개가 될 수 있다. 주의할 점은 tcp, udp, icmp들은 '\'로 escape되어야 한다.
o ehter broadcast
패킷이 ethernet broadcast 패킷이라면 참이다. ehter는 생략 가능하다.
o ip broadcast
패킷이 IP broadcast 패킷이라면 참이다.
o ether multicast
패킷이 IP multicast 패킷이라면 참이다.
o ether proto protocol
패킷 이 ether type의 protocol이라면 참이다. protocol은 ip, arp, rarp 중에 하나 혹은 몇개가 될 수 있다. ip proto protocol에서와 마찬가지로 ip, arp, rarp는 escape 되어야 한다.
o decnet src host
만약 DECNET의 source address가 host이면 참이다. 이 어드레스는 '10.123'이 나 DECNET의 host name일 수 있다. DECNET host name은 DECNET에서 돌아가도록 설정된 Ultrix 시스템에서만 사용 가능하다.
o decnet dst host
DECNET destination address가 host이면 참이다.
o decnet host HOST
DECNET source, destination address중의 하나라도 HOST이면 참이다.
o ip, arp, rarp, decnet
ether proto [ip|arp|rarp|decnet]의 약어
o lat, moprc, mopdl
ether proto [lat|moprc|mopdl]의 약어
o tcp, udp, icmp
ip proto [tcp|udp|icmp]의 약어
o expr relop expr
+ EXPR
proto [expr:size]의 형식을 띤다. proto, expr, size에 올 수 있는 것들은 다음과 같다.
# proto : ether, fddi, ip, arp, rarp, tcp, udp, icmp
# expr : indicate Byte offset of packet of proto
# size : optional. indicate the size of bytes in field of interest
# default is one, and can be two or four 
+ RELOP
!=, =, <=, >=, etc. 

이 조건식을 사용하기 위해서는 먼저 해당하는 Protocol(proto)의 헤더에 관련된 것들을 자세히 알아야만 한다. proto에는 대상이 될 프로토콜을 지정한다. expr에는 프로토콜 헤더의 처음부터의 Byte Offset을 지정하는 식이 들어가게 된다. Size는 Option이며 지정이 안 되어 있을 경우에는 자동으로 1byte를 지칭한다. 따라서 이 조건식을 사용하게 되면 헤더에 포함된 정보를 Bitmask를 사용하여 직 접 원하는 패킷인지를 가려낼 수 있기 때문에, 보다 정밀한 사용이 가능하게 된다. 

* Tcpdump의 사용 예제들

o security라는 호스트로부터 날아오고, 날아가는 패킷들을 출력
# tcpdump host security
o security와 mazinga, getarobo 사이에 날아다니고 있는 패킷들을 출력
# tcpdump host security and \( mazinga or getarobo \)
o security에서 elgaim을 제외한 모든 호스트로 날아다니는 IP 패킷들을 출력
# tcpdump ip host security and not elgaim
o gateway amurorei를 거치는 ftp에 관련된 패킷들을 출력
# tcpdump 'gateway amurorei and ( port ftp or ftp-data )'
o local호스트가 아닌 호스트와 로컬호스트가 맺는 TCP 커넥션의 시작과 마지막 패 킷들을 출력한다(SYN, FIN 패킷).
# tcpdump 'tcp[13] & 3 != 0 and not src and dst net non-local'
o gateway amurorei를 지나는 576Byte보다 큰 패킷들을 출력한다
# tcpdump 'gateway amurorei and ip[2:2] > 576'
o Ethernet boradcast 혹은 multicast를 통해서 보내진 것이 아닌, IP broadcast 혹 은 multicast 패킷들을 출력한다.
# tcpdump 'ehter[0] & 1 = 0 and ip[16] >= 224'
o Echo request/reply가 아닌 ICMP 패킷들을 모두 출력한다.
# tcpdump 'icmp[0] != 8 and icmp[0] != 0' 

* Tcpdump의 평가

TCPDUMP는 여러모로 좋은 툴이다. libpcap을 거의 100% 활용한 프로그램의 예이며, 실제로 많은 툴들이 TCPDUMP와 병행하여 돌아가거나, TCPDUMP를 기반으로 제작되었다. TCPDUMP의 막강한 packet filter는 현재 로컬 네트워크 상에서 날아다니고 있는 특정한 패킷들을 실시간으로 기록해 줄 수 있으며, 이를 이용하여 네트워크에서 벌어지는 일들을 네트워크 관리자가 원하는 대로 뽑아 볼 수 있게 해 준다. 또한, 시스템 관리자들에게는 로컬 유저의 외부로의 커넥션들을 감시하고, 또 특정 침입자가 침투 경로로 자주 이용하는 호스트, 혹은 원하지 않는 호스트로부터의 커넥션을 실시간으로 감시할 수 있게 해 준다. libpcap을 이용하여 비슷한 툴을 제작하고자 하는 사람들에게도 TCPDUMP는 가장 훌륭한 예제가 될 것이다.
* References

o TCP dump Manual page : written by Van Jacobson, Craig Leres and Steven McCanne, all of the Lawrence Berkeley National Laboratory, University of California, Berkeley, CA.
o TCP dump Document included in TCP dump package


written by Kwon, YongChul

'Network' 카테고리의 다른 글

각 포트별 TCP/UDP 서비스  (0) 2017.01.06
router root bridge  (0) 2017.01.06
PCAP 파일에서 UNIX 도구를 이용한 IP 주소 요약  (0) 2017.01.06
SLB 구성 - DSR vs Inline  (0) 2017.01.05
라우팅 테이블  (0) 2017.01.04

:: 라우팅 경로 추가

[root@s92 network-scripts]# route add -host 211.63.89.90 eth0
[root@s92 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
211.63.89.91 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
211.63.89.90 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
211.63.89.93 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
211.238.132.0 211.63.89.1 255.255.255.0 UG 0 0 0 eth0
211.63.89.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 211.63.89.1 0.0.0.0 UG 0 0 0 eth0
[root@s92 network-scripts]#

:: 라우팅 경로 추가 (network 대역)

[root@s92 network-scripts]# route add -net 211.238.133.0 netmask 255.255.255.0 gw 211.63.89.1 dev eth0
[root@s92 network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
211.63.89.91 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
211.63.89.90 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
211.63.89.93 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
211.238.133.0 211.63.89.1 255.255.255.0 UG 0 0 0 eth0
211.238.132.0 211.63.89.1 255.255.255.0 UG 0 0 0 eth0
211.63.89.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 211.63.89.1 0.0.0.0 UG 0 0 0 eth0

사설에서 사설로 접속할때 서버1에서 아래와 같이 세팅해준다.
[root@s92 network-scripts]# route add -net 172.16.30.0/24 gw 211.63.89.93 dev eth0

:: 삭제 방법
route del -net 211.63.89.0 netmask 25

'Network' 카테고리의 다른 글

각 포트별 TCP/UDP 서비스  (0) 2017.01.06
router root bridge  (0) 2017.01.06
PCAP 파일에서 UNIX 도구를 이용한 IP 주소 요약  (0) 2017.01.06
SLB 구성 - DSR vs Inline  (0) 2017.01.05
tcpdump  (0) 2017.01.04

증분백업/복구


지속적으로 파일을 백업해야 하는 상황이라면 증분백업을 고려해볼수 있다.

가령 분단위로 데이터를 저장하는 파일이 있고 추가되는 파일을 지속적으로 백업할 경우 활용이 가능하다.

스크립트를 만들어 두면 더욱 편하다.


/home/fedora 에 아래와 같이 test1, 2, 3 파일을 생성하였다.

[root@s92 backup]# cd /home/fedora

[root@s92 fedora]# touch /home/fedora/test1
[root@s92 fedora]# touch /home/fedora/test2
[root@s92 fedora]# touch /home/fedora/test3


# 1차 풀 백업
[root@s92 fedora]# tar cvfzp /backup/Full-backup.tar.gz --listed-incremental /backup/backuplist /home/fedora
tar: Removing leading `/' from member names
/home/fedora/
/home/fedora/test1
/home/fedora/test2
/home/fedora/test3

# 풀백업 후 파일 하나 추가로 생성
[root@s92 fedora]# touch /home/fedora/test4

# 생성후 증분백업
[root@s92 fedora]# tar cvfzp /backup/Incremental1.tar.gz --listed-incremental /backup/backuplist /home/fedora
tar: Removing leading `/' from member names
/home/fedora/
/home/fedora/test4

[root@s92 fedora]# cd /backup
[root@s92 backup]# ls
Full-backup.tar.gz full-backup.tar.gz incremental2.tar.gz
Incremental1.tar.gz home incremental3.tar.gz
backuplist incremental1.tar.gz src.tar.z

[root@s92 backup]# tar tvfz incremental1.tar.gz
drwxr-xr-x root/root 29 2005-11-08 18:27:21 home/fedora/
-rw-r--r-- root/root 0 2005-11-08 18:27:21 home/fedora/test4
[root@s92 backup]# tar tvfz Full-backup.tar.gz
drwxr-xr-x root/root 29 2005-11-08 18:37:32 home/fedora/
-rw-r--r-- root/root 0 2005-11-17 15:09:24 home/fedora/test1
-rw-r--r-- root/root 0 2005-11-17 15:09:26 home/fedora/test2
-rw-r--r-- root/root 0 2005-11-17 15:09:27 home/fedora/test3

# 파일 하나 더 추가
[root@s92 backup]# touch /home/fedora/test5

# 추가 후 2차 증분백업
[root@s92 backup]# tar cvfzp /backup/Incremental2.tar.gz --listed-incremental /hackuplist /home/fedora
tar: Removing leading `/' from member names
/home/fedora/
/home/fedora/test1
/home/fedora/test2
/home/fedora/test3
/home/fedora/test4
/home/fedora/test5

[root@s92 backup]# ls
Full-backup.tar.gz backuplist incremental2.tar.gz
Incremental1.tar.gz full-backup.tar.gz incremental3.tar.gz
Incremental2.tar.gz incremental1.tar.gz src.tar.z

# 증분백업한 내용
[root@s92 backup]# tar tvfz Full*
drwxr-xr-x root/root 29 2005-11-08 18:37:32 home/fedora/
-rw-r--r-- root/root 0 2005-11-17 15:09:24 home/fedora/test1
-rw-r--r-- root/root 0 2005-11-17 15:09:26 home/fedora/test2
-rw-r--r-- root/root 0 2005-11-17 15:09:27 home/fedora/test3
[root@s92 backup]# tar tvfz incremental1.tar.gz
drwxr-xr-x root/root 29 2005-11-08 18:27:21 home/fedora/
-rw-r--r-- root/root 0 2005-11-08 18:27:21 home/fedora/test4
[root@s92 backup]# tar tvfz incremental2.tar.gz
drwxr-xr-x root/root 36 2005-11-08 18:28:57 home/fedora/
-rw-r--r-- root/root 0 2005-11-08 18:28:57 home/fedora/test5

[root@s92 backup]# ls
Full-backup.tar.gz backuplist incremental2.tar.gz
Incremental1.tar.gz full-backup.tar.gz incremental3.tar.gz
Incremental2.tar.gz incremental1.tar.gz src.tar.z

# 처음 풀 백업한 파일 복원하기
[root@s92 backup]# tar xvfz Full-ba*
home/fedora/
home/fedora/test1
home/fedora/test2
home/fedora/test3

[root@s92 backup]# ls
Full-backup.tar.gz backuplist incremental1.tar.gz src.tar.z
Incremental1.tar.gz full-backup.tar.gz incremental2.tar.gz
Incremental2.tar.gz home incremental3.tar.gz

# 1차 증분백업한 파일 복원하기
[root@s92 backup]# tar xvfz Incremental1.tar.gz -g ./backuplist
home/fedora/
home/fedora/test4
[root@s92 backup]# ls
Full-backup.tar.gz backuplist incremental1.tar.gz src.tar.z
Incremental1.tar.gz full-backup.tar.gz incremental2.tar.gz
Incremental2.tar.gz home incremental3.tar.gz

# 2차 증분백업한 파일 복원하기
[root@s92 backup]# tar xvfz Incremental2.tar.gz -g ./backuplist
home/fedora/
home/fedora/test1
home/fedora/test2
home/fedora/test3
home/fedora/test4
home/fedora/test5

[root@s92 backup]# cd home
[root@s92 home]# ls
fedora
[root@s92 home]# cd fedora

[root@s92 fedora]# ls
test1 test2 test3 test4 test5



'Tip' 카테고리의 다른 글

TCP 연결수 확인 스크립트  (0) 2017.01.06
nslookup  (0) 2017.01.06
RPM 패키지 관리  (0) 2016.12.31
압축관련  (0) 2016.12.31
cron  (0) 2016.12.31
kill 커맨드
KILL에도 이렇게 다양한 옵션이 있었다.

[root@s92 bin]# kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1
36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5
40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9
44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5
60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1
64) SIGRTMAX
[root@s92 bin]#


:: 옵션 일부만 설명
1 : restart
9 : 완전 죽이기
15 : 죽이는건 아니고 중지 시키기




killall - 프로세스명이 일치하는 경우 사용

터미널에 아래와 같이 입력한다.

 [root@s92 bin]# killall -9 PROCESS_NAME




pkill - 프로세스 매개변수 참고

 [root@s92 bin]# pkill -9 -ef my_process


:: 옵션
설명

-9 : kill
-e : log 출력
-f : 명령행 전체 참조



'Server' 카테고리의 다른 글

호스트네임을 이용한 DNS 서버 셋팅하기  (0) 2017.01.06
/etc/hosts 파일을 이용하여 sendmail 설정하기  (0) 2017.01.06
xinetd 데몬과 standalone 데몬  (0) 2016.12.31
Quota 설정하기  (0) 2016.12.31
ftp command  (0) 2016.12.31

RPM 패키지 관리


:: 특이한 옵션들 
--replacepkgs : 이미 설치되어 있는 패키지가 존재할 경우도 이 옵션을 사용하여 패키지를 설치할 수 있다.
ex) # rpm -ivh --replacepkgs ncftp-3.1.8-2.i386.rpm

--replacefiles : RPM 패키지 설치시 이미 설치되어 있는 패키지와 새로 설치할 패키지간의 버전이 서로 달라 패키지 충돌로 인하여 설치되지 않는 경우에 사용.
이 옵션을 사용하면 설치하고자 하는 패키지내의 파일이 설치되어 있는 패키지의 파일 버전과 다르더라도 이를 무시하고 설치가 이뤄진다.

--force : 기존에 패키지가 설치되어 있더라도 강제로 덮어서 설치한다. --replacepkgs 와 replacefiles 를 포함하고 있다.

:: 해당 파일을 포함하는 패키지 알아보기
[root@s92 work]# rpm -qf /usr/bin/make
make-3.80-5
[root@s92 work]#

:: 해당 패키지 정보 요약보기

 [root@s92 work]# rpm -qi vsftpd

Name : vsftpd Relocations: (not relocatable)
Version : 2.0.1 Vendor: Red Hat, Inc.
Release : 5 Build Date:
Install Date: Build Host: tweety.build.redhat.com
Group : 시스템 환경/ 데몬들 Source RPM: vsftpd-2.0.1-5.src.rpm
Size : 245885 License: GPL
Signature : DSA/SHA1, 2004년 10월 21일 (목) 오전 04시 12분 59초, Key ID b44269d04f2a6fd2
Packager : Red Hat, Inc. 
URL : http://vsftpd.beasts.org/
Summary : vsftpd - 매우 안전한 Ftp 데몬
Description :
vsftpd는 매우 안전한 FPT 데몬입니다. 이것은 완전히 처음부터 작성되었습니다.
[root@s92 work]#


[root@s92 work]#

:: 설치된 패키지 파일 목록보기
[root@s92 work]# rpm -ql vsftpd
:
/etc/logrotate.d/vsftpd.log
/etc/pam.d/vsftpd
:
[root@s92 work]#

:: 패키지 설정파일 알아보기

 [root@s92 work]# rpm -qc vsftpd

/etc/logrotate.d/vsftpd.log
/etc/pam.d/vsftpd
/etc/vsftpd.ftpusers
/etc/vsftpd.user_list
/etc/vsftpd/vsftpd.conf
[root@s92 work]#


:: 패키지 검증
[root@s92 work]# rpm -V vsftpd
.......T. c /etc/vsftpd/vsftpd.conf

점검상태는 8문자로 다음과 같다.
5 : MD5체크섬
S : 파일크기
L : 심볼릭 링크
T : 파일 최종변경시간
D : 장치
U : 사용자
G : 그룹
M : 파일 허가권 또는 파일 형식모드



------------------------------------
abcd.src.rpm
------------------------------------
src.rpm 은 소스컴파일 할수 있는 파일도 포함되어 있다.

[예제]
# rpm -ivh ncftp.src.rpm

src.rpm 설치하면 /usr/src/redhat/SOURCE 에 소스압축파일 생김

 [root@s92 redhat]# cd /usr/src/redhat/SOURCES

[root@s92 SOURCES]# ls
ami-1.0.11.tar.gz ncftp-3.1.5-ncursesw.patch
ami-1.0.6-nostatus.patch ncftp-3.1.5-pmeter.patch
ami-1.0.7-engpix.tar.gz ncftp-3.1.6-rh1.patch
hanja-words-19991115.tar.gz ncftp-3.1.7-shell.patch
hanja.dic.gz ncftp-3.1.8-epsv.patch
ncftp-3.0.1-pref.patch ncftp-3.1.9-src.tar.bz2
ncftp-3.0.3-resume.patch ncftp-319-v6-20050419.diff.gz

[root@s92 redhat]# cd ..
[root@s92 redhat]# ls
BUILD RPMS SOURCES SPECS SRPMS
[root@s92 redhat]# cd SPECS
[root@s92 SPECS]# ls
ncftp.spec <- 생긴파일

[root@s92 SPECS]# rpmbuild -ba ncftp.spec
[root@s92 redhat]# cd ..
[root@s92 redhat]# ls
BUILD RPMS SOURCES SPECS SRPMS

[root@s92 redhat]# cd BUILD
[root@s92 BUILD]# ls
ncftp-3.1.9 <- 생긴폴더 (소스 컴파일 할수 있는 파일들)

[root@s92 BUILD]# cd ..
[root@s92 redhat]# ls
BUILD RPMS SOURCES SPECS SRPMS
[root@s92 redhat]# cd RPMS
[root@s92 RPMS]# ls
athlon i386 i486 i586 i686 noarch
[root@s92 RPMS]# cd i386
[root@s92 i386]# ls
ncftp-3.1.9-1.i386.rpm ncftp-debuginfo-3.1.9-1.i386.rpm
# 생긴 rpm 파일들

[root@s92 SPECS]# cd ../SRPMS
[root@s92 SRPMS]# ls
ncftp-3.1.9-1.src.rpm
[root@s92 SRPMS]#


'Tip' 카테고리의 다른 글

nslookup  (0) 2017.01.06
증분백업/복구  (0) 2016.12.31
압축관련  (0) 2016.12.31
cron  (0) 2016.12.31
/etc/shadow 필드 설명  (0) 2016.12.31

:: tar.z 으로 압축할때
[root@s92 work]# ls
gaim
[root@s92 work]# tar cvfz gaim.tar.z gaim
[root@s92 work]# ls
gaim gaim.tar.z
[root@s92 work]#

:: 압축풀때 - 첫번째 방법
[root@s92 work]# gunzip gaim.tar.z
[root@s92 work]# tar xvf gaim.tar

:: 압축풀때 - 두번째 방법
[root@s92 work]# tar xvfz gaim.tar.z

:: bzip으로 압축하기
[root@s92 work]# tar cvfj gaim.tar.bz2 gaim

:: bzip 압축풀기 - 첫번째 방법
[root@s92 work]# bunzip2 gaim.tar.bz2
[root@s92 work]# tar xvf gaim.tar

:: bzip으로 압축풀기 - 두번째 방법
[root@s92 work]# tar xvfj gaim.tar.bz2

:: 기타 압축 명령어 - zip, unzip, uncompress(*.Z)

[참고옵션]
v - 아카이브 생성과정 보여줌
C - 압축풀때 경로지정
t - 압축된 내용을 보여줌
u - 업데이트 관련옵션

:: 압축파일 안에 파일 넣기
[root@s92 work]# tar rvf gaim.tar /usr/bin/telnet
tar: Removing leading `/' from member names
/usr/bin/telnet
[root@s92 work]# tar -tvf gaim.tar | grep telnet
-rwxr-xr-x root/root 77460 2004-07-05 17:57:18 usr/bin/telnet
[root@s92 work]#

'Tip' 카테고리의 다른 글

증분백업/복구  (0) 2016.12.31
RPM 패키지 관리  (0) 2016.12.31
cron  (0) 2016.12.31
/etc/shadow 필드 설명  (0) 2016.12.31
사용 불가능한 쉘 지정하기  (0) 2016.12.31

:: 데몬 띄우기 
/etc/init.d/crond start

:: 내용보기
crontab -l

:: 등록하기 
crontab -e

00 12 * 1-12/3 * /sbin/reboot
분 : 시 : 일 : 월 : 요일 : 실행파일

:: 제거하기
crontab -r
crontab -u user -r

:: 사용자제한
/etc/cron.allow 에 사용자를 등록하면 해당 유저들만 서비스를 이용할 수 있다
그러나 이 파일이 없으면 모든 유저가 모두 서비스를 이용할 수 있다.

cat > /etc/cron.allow
leopit



- 실사용예

 # crontab -l

# daemon check & restart (lewis.py lewis_1m.py send.py)

* * * * * /home/deploy/daemon_monitor.sh

# backup log file

02 4 * * * /opt/backup.sh

# Delete log file

02 5 * * * /home/olddata.sh

# Delete elasticsearch data

30 1 * * * /usr/bin/curator --config /hanmail/curator.yml /hanmail/action.yml


'Tip' 카테고리의 다른 글

RPM 패키지 관리  (0) 2016.12.31
압축관련  (0) 2016.12.31
/etc/shadow 필드 설명  (0) 2016.12.31
사용 불가능한 쉘 지정하기  (0) 2016.12.31
AWK 사용법  (0) 2016.12.30

1 데몬이란 무엇인가
데몬이란 시스템에 백그라운드 모드로 수행중이며 어떤 사건, 즉 이벤트를 기다리거나 주기적으로 주어진 작업을 수행하기 위하여 대기하고 있는 프로세스를 의미한다. 일반적으로 데몬프로세스는 이름끝에 'd'자가 붙는다. 기본적으로 리눅스에는 여러 기능과 서비스를 제공하기 위한 다양한 데몬 프로세스들이 시스템에서 돌아가고 있다. 이런 기본적인 리눅스 데몬들에 관한 자세한 설명은 LINUX서비스데몬들을 참고하라. 이런 서비스 데몬들의 실행여부는 레드햇 리눅스 계열에서 ntsysv 커맨드로 조정하면 된다.

리눅스상에서 현재 실행되고 있는 데몬의 현황을 보려면 pstree 커맨드를 쓴다.

[root@localhost root]# pstree 
init-+-atd 
|-bash---ami_applet 
|-bdflush 
|-crond 
|-deskguide_apple 
|-gconfd-1 
|-gnome-name-serv 
|-gnome-smproxy 
|-gnome-terminal-+-bash---vi 
| |-bash---pstree 
| `-gnome-pty-helpe 
|-gpm 
|-kapmd 
|-keventd 
|-khubd 
|-6*[kjournald] 
|-klogd 
|-kserver 
|-ksoftirqd_CPU0 
|-kswapd 
|-kupdated 
|-login---bash---startx---xinit-+-X 
| `-gnome-session---bash 
|-mdrecoveryd 
|-5*[mingetty] 
|-mozilla-bin-+-mozilla-bin---4*[mozilla-bin] 
| `-netstat 
|-nautilus---nautilus---5*[nautilus] 
|-nmbd 
|-oafd 
|-panel 
|-portmap 
|-rhn-applet 
|-rpc.statd 
|-sawfish 
|-sendmail 
|-smbd 
|-sshd 
|-syslogd 
|-tasklist_applet 
|-xfs 
`-xinetd---fam 

<리눅스에는 이렇게 많은 서비스데몬들이 실행되고 있다>

2 데몬의 실행방식
데몬의 실행방식은 크게 stand-alone방식과 xinetd방식이 있다.
2.1 Stand-alone방식
이 방식의 데몬들은 데몬이 시작되면 말 그대로 자기 스스로 시스템에서 상주하며 클라이언트 요청에 응답을 보내주는 방식으로 보통 아파치 데몬처럼 클라이언트의 요청이 잦은 데몬들이 이런 방식으로 실행된다. 스탠드 얼론방식의 데몬을 확인하려면 쉘상에서 pstree 명령을 내리면 데몬들을 트리형식으로 보여준다. 스탠드 얼론 방식의 데몬들은 xinetd방식보다는 클라이언트 요청에 신속하게 대응한다는 장점은 있으나 이런 스탠드 얼론 데몬들이 시스템에서 많이 생성되게되면 시스템의 자원낭비가 심해지게 되고 퍼포먼스도 떨어지게 된다.
2.2 inetd방식
스탠트 얼론처럼 자기 스스로 독립적으로 시스템에 실행되는게아니라 xinetd라는 수퍼데몬이 시스템에서 대기하고 있다고 클라이언트 요청이 들어오면 xinetd데몬에 의해 해당 서비스를 제공해줄 데몬을 실행시키는 방식이다. telnet이나 ftp같이 비교적 클라이언트 요청의 빈도가 낮은 서비스들은 이런 xinetd데몬이 시스템 활용측면에서는 유리하다. 또한 tcp wrapper를 써서 보안을 손쉽게 설정할 수 있는 것도 장점이다. 그러나 전술한 아파치 데몬같이 클라이언트의 자잘한 요청이 많은 서비스에 대해서는 inetd방식이 시스템효율을 도리어 떨어드리게된다. xinetd데몬은 스탠드 얼론방식으로 실행되는 슈퍼데몬이며 서비스 요청시 xinetd데몬의 차일드 프로세스로 다른 데몬이 실행된다. 이를 확인하려면 pstree로 xinetd데몬을 확인하고 다른 한텀창에서 telnet이나 ftp로 자신의 호스트에 접속해보라. 그럼 xinetd데몬에서 차일드 프로세스로 해당 데몬이 실행되는 것을 확인할 수 있다.

[root@localhost home]# pstree 
init-+-atd 
|-bash---ami_applet 
|-bdflush 
............. 
|-xfs 
`-xinetd---fam 

<트리 끝부분에 xinetd데몬이 떠 있는 것을 확인 할 수 있다.>

[root@localhost root]# pstree 
init-+-atd 
|-bash---ami_applet 
|-bdflush 
...... 
|-xfs 
`-xinetd-+-fam 
`-in.telnetd---login 



xinetd데몬은 곧 설명할 /etc/xinetd.d 디렉토리 내에서 설정한다.

3 데몬관리
3.1 ntsysv
스탠드 얼론 데몬들은 레드햇 계열에서 ntsysv로 조정한다. ntsysv 커맨드를 내리면 시스템 데몬들의 리스트가 나타나고 아스트리크(*) 표시가 되어 있는 데몬들이 시스템에서 실행되는 데몬들이다. 특정데몬을 실행시키고 싶으면 스페이스바로 *표시를 토글시키면 된다. 예를 들어 데스크탑으로 쓰는 리눅스 박스에서 sendmail과 kuduz데몬은 꺼두는 것이 부팅속도를 조금 높여주는 방법이 된다. 그외에 여러 데몬들이 있는데 각각의 데몬에 대한 설명을 보려면 데몬으로 바를 옮긴 후 F1키를 누르면 된다.

이 ntsysv에 의해 제어되는 데몬들은 레드햇 리눅스에서는 /etc/rc.d/init.d 에 등록이 되어 있다. 쉘상에서 데몬을 제어하고자 한다면 service 명령을 쓰며 데몬명과 start, stop, restart 커맨드를 사용할 수 있다.
예를 들어 네트웍 데몬을 재실행하고자 할 때

#service network restart 

과 같이 하면된다. ntsysv로 하나 이상의 데몬 실행 설정을 해주었다면 다음과 같이 커맨드로 수퍼데몬을 재실행 해 준다.

#service xinetd restart 

3.1.1 ntsysv에 데몬등록하기
rpm같은 바이너리 패키지로 설치한 어플은 ntsysv에 자동으로 등록되지만 소스로 설치한 어플은 ntsysv에 등록이 안된다. 이때는 소스로 프로그램을 설치하다보면 실행과 정지를 편하게 할수 있는 스크립트가 있다. 이것을 /etc/rc.d/init.d 밑에 카피하면 ntsysv에 등록이 되는데 그냥 카피하면 안되고 점을 제거하고 카피하면 이상 없이 등록이 된다. 만약 mysql.server 이라는 것을 등록한다면 카피할 때 mv mysql.server mysqld 라고하고 mv bnetd.init bnetd 라고 하면된다. 이 때 카피할 스크립트 첫부분에 다음과 같은 문장을 넣어주어야 한다.

#!/bin/sh 
# MySQL: Starts the MySQL Server 

# chkconfig: 2345 90 90 
# description: A very fast and reliable SQL database engine. 

즉 chkconfig 설정 부분이 들어가야 한다는 것이다. 자세한 것은 man chkconfig로 알아보면 된다.
chkconfig --add mysqld

3.2 xinetd설정
슈퍼데몬의 설정은 /etc/xinetd 에서 이루어진다.

[root@localhost root]# cd /etc/xinetd.d 
[root@localhost xinetd.d]# ls 
chargen daytime echo finger rexec rsh services talk time wu-ftpd 
chargen-udp daytime-udp echo-udp ntalk rlogin servers sgi_fam telnet time-udp 
[root@localhost xinetd.d]# 

대충 살펴보니 에코서버, 타임서버, FTP, 텔넷서버등이 설정되어 있는 것을 볼 수 있다. 예를 들어 telnet 스크립트 파일을 열어보자.

# default: on 
# description: The telnet server serves telnet sessions; it uses \ 
# unencrypted username/password pairs for authentication. 
service telnet 

disable = no 
flags = REUSE 
socket_type = stream 
wait = no 
user = root 
server = /usr/sbin/in.telnetd 
log_on_failure += USERID 


disable옵션은 데몬을 실행시킬 것인지를 결정하는 옵션으로 no로 되어 있으면 서비스 요청시 실행하게 되고 yes로 하면 실행시키지 않는다. socket_type은 stream은 TCP, dgram은 UDP방식을 의미한다.
서비스 포트 자체를 막고자 한다면 /etc/services 를 수정하면 되고 데몬 서비스는 이 스크립트 파일의 disable옵션을 조정해주면 되는 것이다.

4 stand alone데몬을 inetd방식으로 바꾸기
실습겸으로 stand alone방식의 데몬을 inetd방식의 데몬으로 바꾸어보도록 하자. 실습할 어플리케이션은 Proftpd이다. proftpd설정파일은 /etc/proftpd.conf 이다. 이 파일을 열어보면 proftpd는 기본적으로 stand alone방식으로 돌아가고 있다는 것을 알 수 있다.

# This is a basic ProFTPD configuration file (rename it to 
# 'proftpd.conf' for actual use. It establishes a single server 
# and a single anonymous login. It assumes that you have a user/group 
# "nobody" and "ftp" for normal operation and anon. 

ServerName "ProFTPD Default Installation" 
ServerType standalone 
DefaultServer on 



pstree로 현재 시스템에서 확인해보자

[leedw@choco ~]$ pstree 
init-+-atd 
|-bdflush 
|-nmbd 
|-portmap 
|-proftpd 
...... 



이제 이 프로세스를 inetd방식으로 바꾸어보자. 일단 proftpd 설정파일인 /etc/proftpd.conf 를 열어 ServerType을 inetd로 수정한다.

ServerType inetd 

그리고 /etc/xinetd.d 로 가서 프로세스 스크립트 파일을 만들어야 한다. proftpd란 파일명으로 아래와 같이 작성한다.

service ftp 

socket_type = stream 
wait = no 
user = root 
server = /usr/sbin/proftpd 
log_on_success += DURATION 
nice = 10 
disable = no 


server에 프로세스 실행파일의 경로명을 적어줘야 한다. which등으로 찾아서 패스를 적어준다.
이제 현재 스탠드얼론으로 실행중인 proftpd를 시스템에서 죽여줘야 한다. killall로 proftpd를 끝낸다.

#killall proftpd 

그리고 xinetd설정이 적용될 수 있도록 수퍼데몬인 xinetd를 재실행시켜줘야 한다.

#service xinetd restart 

이제 ftp로 호스트에 접근해보면 proftpd가 xinetd의 차일드 프로세스로 실행되는 것을 확인 할 수 있을 것이다.

[leedw@choco ~]$ pstree 
init-+-atd 
............ 
|-vmware-guestd 
|-xfs 
`-xinetd-+-in.telnetd---login---bash---ftp 
|-in.telnetd---login---bash---pstree 
`-proftpd




// 여기부터는 수업시간에 배운거 //

:: standalone
- 항상 대기중인 데몬이다 ex) httpd 
- 관련 디렉토리 : /etc/rc.d/init.d/

:: xinetd
(Redhat 7.0 부터 inetd가 xinetd로 바뀌었음) 7.0 이하 버전은 /etc/inetd.conf 가 다 관리했었음
- 요청이 있을때만 해당 데몬을 call한다. (메모리를 효율적으로 사용가능)
- 관련 디렉토리 : /etc/xinetd.d/
- 관련 파일 : /etc/xinetd.conf

:: xinetd.conf 파일 설명 

defaults
{
instances = 60 # 동시 접속 가능한 호스트 수
log_type = SYSLOG authpriv # 로그기록형식
log_on_success = HOST PID #서버가 시작될때와 끝날때 기록될 것들
# 옵션 : PID HOST USERID EXIT DURATION
log_on_failure = HOST # 서버구동 불가능일때와 접근거부되었을때 기록될 것들
# 옵션 : HOST USERID ATTEMPT RECORD
only_from = 211.63.89.91/32 #이 아이피만 접근을 허용한다.
# 211.63.89.91/255.255.255.255 와 같은의미
no_access = 0.0.0.0/0 # 접근거부할 아이피 - 이렇게 해놓면 아무도 접근을 못하게 됨
disable = shell login exec finger #해당서비스는 이용불가
protocol = tcp #서비스가 사용할 프로토콜 - /etc/protocols에 있어야 함
socket_type = stream # stream(tcp) dgram(udp)
wait = no #단일 쓰레드 : yes 다중쓰레드 : no
server = /usr/sbin/in.telnetd # 실행될 데몬 경로
access_time = 01:00-07:00 # 작동시간
redirect = 211.63.89.93 23 #앞에는 리다이렉트시킬 아이피 뒤에는 포트
port = 8080 # 사용할 포트번호 /etc/services 목록내의 포트와 일치해야함
cps = 25 30 # 초당 25개 이상 서비스요청이 들어오면 30초 동안 중단하고 
서비스 재개
}

'Server' 카테고리의 다른 글

/etc/hosts 파일을 이용하여 sendmail 설정하기  (0) 2017.01.06
프로세스 죽이기 - kill, killall, pkill  (0) 2016.12.31
Quota 설정하기  (0) 2016.12.31
ftp command  (0) 2016.12.31
netstat  (0) 2016.12.31

# vi /etc/shadow

username : 사용자 이름
passwd : 암호화된 문자 패스워드
last : 패스워드 최종변경날짜
may : 현재의 패스워드가 변경되어야 하는 최소 날짜수
must : 현재의 패스워드가 변경되어야 하는 최대 날짜수
warn : 패스워드 만려될것임을 알려주는 시기
expire : 패스워드가 만료되고 계정을 사용할수 없게 되는 시기
disable : 계정이 만료된 후의 날짜수

root:$1$xc7t0dtk$bKRWW2YW5STMh6s2aDkJO0:13102:0:99999:7:::

'Tip' 카테고리의 다른 글

압축관련  (0) 2016.12.31
cron  (0) 2016.12.31
사용 불가능한 쉘 지정하기  (0) 2016.12.31
AWK 사용법  (0) 2016.12.30
리눅스 서치 커맨트 find, grep, egrep 예제  (0) 2016.12.29

이렇게 하면 멍텅구리 쉘이 된다.


[root@s92 download]# vi /bin/no.sh

#!bin/sh

echo "Please ask webmaster"


[root@s92 download]# chmod 755 /bin/no.sh

[root@s92 download]# vi /etc/shells

/bin/no.sh # add this.

[root@s92 download]# usermod -s /bin/no.sh leopit

'Tip' 카테고리의 다른 글

압축관련  (0) 2016.12.31
cron  (0) 2016.12.31
/etc/shadow 필드 설명  (0) 2016.12.31
AWK 사용법  (0) 2016.12.30
리눅스 서치 커맨트 find, grep, egrep 예제  (0) 2016.12.29

+ Recent posts