출처 - 한국성서대학교 - 매일의 성경


7월 18일 (월) / 잠언 17 ~ 19 장

질문: 가난한 자를 조롱하는 자어떤 사람인가?

답변:

 잠언 17 장

  5. 가난한 자를 조롱하는 자그를 지으신 주를 멸시하는 자요 사람의 재앙을 기뻐하는 자는 형벌을 면하지 못할 자니라


7월 19일 (화) / 잠언 20 ~ 22 : 16, 아가 1 장

질문: 겸손과 여호와를 경외함의 보상무엇인가?

답변:

 잠언 22 장

  4. 겸손과 여호와를 경외함의 보상은 재물과 영광과 생명이니라


7월 20일 (수) / 아가 2 ~ 4 장

질문: 솔로몬은 술람미에게 너는 동산의 샘이요 생수의 무엇이라고 말하는가?

답변:

 아가 4 장

  15. 너는 동산의 샘이요 생수의 우물이요 레바논에서부터 흐르는 시내로구나


7월 21일 (목) / 아가 5 ~ 7 장

질문: 솔로몬은 술람미의 눈을 비둘기에 비유하면서 무엇이라고 표현하는가?

답변:

 아가 5 장

  12. 눈은 시냇가의 비둘기 같은데 우유로 씻은 듯하고 아름답게도 박혔구나


7월 22일 (금) / 전도서 1 ~ 2 장, 아가 8 장

질문: 한 세대는 가고 한 세대는 오는데 영원히 있는 것은 무엇인가?

답변:

 전도서 1 장

  4. 한 세대는 가고 한 세대는 오되 영원히 있도다


7월 23일 (토) / 전도서 3 ~ 5 장

질문: 두 사람이 한 사람보다 더 나은 이유는 무엇인가?

답변:

 전도서 4 장

  9. 두 사람이 한 사람보다 나음 그들이 수고함으로 좋은 상을 얻을 것임이라


7월 24일 (일) / 전도서 6 ~ 8장

질문: 악인이 잘되지 못하고 장수하지 못하고 그 날이 그림자와 같은 이유는 무엇인가?

답변:

 전도서 8 장

  13. 악인은 잘 되지 못하며 장수하지 못하고 그 날이 그림자와 같으리니 이는 하나님은 경외하지 아니함이니라


저번주차 > 2016 - 하계 방학 묵상지 3주차

다음주차 > 2016 - 하계 방학 묵상지 5주차

Network Security - Basic

 - 일시 : 2016년 7월 16일


Network강의 전 (warming up)

 - 보안실무와 관련 있는 자격증 가운데 가장 필요한 정보보안 및 IT 자격증이라고 생각되는 것은?

 

 - 1. LPIC (리눅스 전문가 인증)

 - 2. CISSP (정보시스템보안전문가)

 - 3. 정보보안기사및 정보보안산업기사(舊 SIS)

 - 4. CCNA (네트워크 엔지니어)

 - CISA

 - CPPG

 - CISM

 - CCFP

 - 정보처리기사 및 정보처리 산업기사

출처 :보안뉴스 (www.boannews.com/media/view.asp?idx=37934)


 ∴ 학생들이 단순히 스펙을 추가하기 위한 자격증 취득이 아닌 관련 분야를 이해하고 지식을 쌓는 것은 물론 보안 실무에도 적극 활용할 수 있는 자격증이 무엇인지 진지하게 고민해야 한다.


 - Secuholic 7차 세미나에서 언급된 보안 직업군


  - 침투 테스터(Penetration Tester)

   : 시스템 / 네트워크 / DB / WEB / Mobile 등 해커의 입장에서 실제 해킹을 시도.

  - 보안 솔루션 엔지니어

   : 보안 솔루션 구축, 운영(F/W, IDS, IPS, UTM 등 다양한 보안 솔루션들)

  - 침해사고대응(Cert)

   : 침해사고 예방 업무(교육 / 보안 점검), 보안 이슈 분석 및 침해사고 대응 업무

  - 보안 관제

   : 보안 솔루션 모니터링 / 침해 시도 및 사고 발생 시 초기대응 업무



 목 차

 - Network

 - Network Hacking

 - Network Security


 1. Network

  1) What is Network?

  2) What kind of Network

  3) What Shape of Network?

  4) Network Analyze


 - 무엇인가를 공부 할 때 3가지를 생각하자

  1) 어떤 역할을 하는가?

  2) 어떤 크기를 갖고 있는가?

  3) 어떤 모양을 갖고 있는가?


  1)' What is Network?

   - 네트워크란 컴퓨터를 연결 해주는 것이다.


  2)' What kind of Network

   (1) 네트워크의 종류

    - Server / Client

    - Peer - to - Peer

   (2) 크기에 따른 분류

    - LAN

    - MAN

    - WAN


  3)' What Shape of Network?

   (1) 네트워크 토폴로지 

    - 상호 간에 정보를 교환할 수 있도록 유선, 무선을 통하여 연결된 형태

    - 물리적 토폴로지

     : 노드, 링크와 같은 네트워크를 구성하는 요소들의 배치에 의해 결정


    - 논리적 토폴로지

     : 노드들 사이의 데이터 흐름에 따라 결정


  4)' OSI 7 Layer

   - 국제 표준화 기구(ISO)가 정의한 국제 통신 표준 규약



   (1) Application     (7계층)

   (2) Presentation   (6계층)   Upper Layer

   (3) Session          (5계층)


   (4) Transport       (4계층)

   (5) Network        (3계층)     Low Layer 

   (6) Data Link       (2계층)

   (7) Physical         (1계층)




   - Upper Layer (데이터 생성을 담당)

    (1) 응용 계층 - Application

     : 사용자나 응용 프로그램 사이에 데이터 교환을 가능하게 함

    (2) 표현 계층 - Expression

     : 데이터의 입력 또는 출력을 표현

    (3) 세션 계층 - Session

     : 통신 대상 중 양 끝 단의 응용 프로세스가 통신을 관리하기 위한 방법 제공


   - Low Layer (데이터 전송을 담당)

    (4) 전송계층 - Transport

     : 신뢰성 있는 데이터를 주고 받게 하는 역할

     : 통신 주소 - 포트(Port: 0 ~ 65535)

     : 대표 Protocol - TCP(Teansmission Control Protocol), UDP(User/Universal Datagram Protocol)

     : 데이터 단위 - Segment

     : TCP Protocol - 3-Way-Handshake(연결), 4-Way-HandShake

     : : Protocol의 기능

      - 주소 설정, 순서 제어, 단편화 및 재조합, 캡슐화, 연결 제여, 흐름 제어, 오류 제어, 동기화, 다중화, 전송서비스

    (5) 네트워크 계층 - Network

     : 데이터를 목적지까지 안전하고 빠르게 전달하는 역할

     : 통신 주소 - IP

     : 대표 Protocol - IP(Internet Protocol), ICMP, IGMP, ARP, RARP, OSPF, RIP…

     : 데이터 단위 - 패킷(Packet)


    (6) 데이터 링크 계층 - Data Link

     : 안정적인 정보 전달을 위한 계층

     : 통신 주소 - MAC(Media Access Control)

     : 데이터 단위 - 프레임(Frame: bit의 모음)

     : 대표 Protocol - 이더넷(Eternet)

     : 2계층 대표 장비 - 브리지(Bridge), 스위치(switch)


    (7) 물리 계층 - Physical

     : 실제 장치를 연결하는 데 필요한 전기적, 물리적 세부 사항을 정의

     : 데이터 단위 비트(bit)

     : 1계층 장비 - 허브(Hub), 리피터(Repeater)



2. Network Hacking

 1) MITM(Man-In-The-Middle Attack)

  : 두 사람 사이에 중간자가 침입 하는 것

  (1) Sniffing

   : 컴퓨터 네트워크상의 트래픽을 엿듣는 도청장치


  (2) Spoofing

   : IP를 속여서 공격하는 기법

   : 순서제어 번호 추측(Sequence Number Gessing)

   : 반(Half) 접속 시도 공격(SYN flooding)

   : 접속 가로채기(Connection Hjacking)

   : RST를 이용한 접속 끊기(Connection Killing by RST)

   : FIN

   - IP Spoofing

    : 자신의 IP 주소를 속여서 접속하는 공격

   - ARP Spoofing

    : MAC 주소를 속여 랜에서의 통신 흐름을 왜곡시키는 공격

   - DNS Spoofing

    : DNS를 속여서 Hacker가 원하는 IP로 접속하도록 만드는 공격


  (3) Session Hi-Jacking

   : 다른사람의 세션 상태를 훔치거나 도용하여 액세스하는 해킹 기법

   - TCP Session Hijacking

   - Web Session Hijacking


 2) DoS(Denial of Service)

  : 대량의 접속을 유발해 해당 컴퓨터를 마비 시키는 수법

  (1) DDoS(Distributed Denial of Service)

   : 여러 대의 공격자를 분산 배치하여 동시에 '서비스 거부 공격(Denial of Service attack ; DoS)'를 함으로써 시스템이 더 이상 정상적 서비스를 제공할 수 없도록 만드는 것

    - DDoS 공격 종류 (1)

     : 대역폭 소진 공격

     : 프로토콜: OSI 3계층, OSI 4계층

     : 공격대상: 네트워크 인프라

     : 증상: 회선 대역폭 고갈, 동일 네트워크를 사용하는 모든 서비스에 대한 접속장애 발생

     : 공격 형태

      : UDP/ICMP Flooding

      : DNS Query Flooding

      : TCP SYN Flooding

      : TCP Flag Flooding

      : TCP Session Flooding


    - DDoS 공격 종류 (2)     

     : 서비스(어플리케이션) 마비 공격

      : 프로토콜: OSI 7계층

      : 공격대상: 웹 서버, 정보보호 장비 등

      : 증상: HTTP 서버 과다 접속 또는 서비스 부하로 인한 장애 발생, 공격 시스템만 피해를 입음

      : 공격 형태

       : HTTP Get Flooding

       : HTTP Get Flooding with Cache-Control

       : Slow HTTP POST DoS

       : Slow HTTP Header DoS

       : HashDos


  (2) DRDos(Distributed Reflect Denial of Service)

   : 공격의 반사체(Reflector)로 이용해 공격 규모를 더욱 증폭 시킨 공격


3. Network Security

 1) 방화벽(FireWall)


 2) IDS(Intrusion Detected System)


 3) IPS(Intrusion Prevention System)


 4) Honey-Pot


 5) 그 외 네트워크 보안 장비

  - WAF(Web-Application-Firewall)

  - ESM(Enterprise Security Management)

  - UTM(Unified Threat Management)

  - Anti DDos

  - Anti Spam


출처 - 한국성서대학교 - 매일의 성경


7월 11일 (월) / 왕상 7 ~ 9 장

질문: 솔로몬이 세운 두 기둥의 이름은 무엇인가?

답변:

 열왕기상 7 장

  21. 이 두 기둥을 성전의 주랑 앞에 세우되 오른쪽 기둥을 세우고 그 이름을 야긴이라 하고 왼쪽의 기둥을 세우고 그 이름을 보아스라 하였으며


7월 12일 (화) / 왕상 10 ~ 11 / 잠 1 장

질문: 스바 여왕은 솔로몬에게 여호와께서 당신을 왕으로 삼아 무엇을 행하게 하셨다고 했는가?

답변:

 열왕기상 10 장

  9. 당신의 하나님 여호와를 송축할지로다 여호와께서 당신을 기뻐하사 이스라엘 왕위에 올리셨고 여호와께서 영원히 이스라엘을 사랑하시므로 당신을 세워 왕으로 삼아 정의와 공의를 행하게 하셨도다 하고


7월 13일 (수) / 잠언 2 ~ 4 장

질문: 여호와는 패역한 자와 정직한 자를 어떻게 대하시는가?

답변:

 잠언 3장

  32. 대저 패역한 자는 여호와께서 미워하시나 정직한 자에게는 그의 교통하심이 있으며


7월 14일 (목) / 잠언 5 ~ 7 장

질문: 솔로몬은 훈계의 책망은 곧 무엇이라고 했는가?

답변:

 잠언 6 장

  23. 대저 명령은 등불이요 법은 빛이요 훈계의 책망은 곧 생명의 길이라


7월 15일 (금) / 잠언 8 ~ 10 장

질문: 지혜의 근본은 무엇인가?

답변:

 잠언 9 장

  10. 여호와를 경외하는 것지혜의 근본이요 거룩하신 자를 아는 것이 명철이니라


7월 16일 (토) / 잠언 11 ~ 13 장

질문: 거짓 입술은 누구에게 미움을 받는다고 했는가?

답변:

 잠언 12 장

  22. 거짓 입술은 여호와께 미움을 받아도 진실하게 행하는 자는 그의 기뻐하심을 받느니라


7월 17일 (일) / 잠언 14 ~ 16 장

질문: 제비는 사람이 뽑으나 모든 일을 작정하기는 누구에게 있다고 했는가?

답변:

 잠언 16 장

  33. 제비는 사람이 뽑으나 모든 일을 작정하기는 여호와께 있느니라


저번주차 > 2016 - 하계 방학 묵상지 2주차

다음주차 > 2016 - 하계 방학 묵상지 4주차

CentOS 5.8 -> 6.x , 7.x 


어댑터1 : NAT

어댑터2 : 호스트전용 어댑터


서버\리눅스\서버\tomcat


- 리눅스에 업로드

apache-tomcat-7.0.59.tar.gz

jdk-8u31-linux-i586.tar.gz


웹서버 : 정적 컨텐츠 제공

WAS(Web Application Server) : 동적 컨텐츠 제공  JSP


웹서버 + WAS + DBMS

       + PHP + DBMS


http://java.sun.com


# wget 192.168.20.87/apache-tomcat-7.0.59.tar.gz 

# wget 192.168.20.87/jdk-8u31-linux-i586.tar.gz


- jsp 파일은 client가 접근시 모두 java 소스로 변경해서 

- class 파일로 컴파일한다.

/home/tomcat/tomcat/work/Catalina/localhost/_/org/apache/jsp


$ ll

합계 57

-rw-rw-r-- 1 tomcat tomcat  4302 10월 14 12:10 hello_jsp.class

-rw-rw-r-- 1 tomcat tomcat  3578 10월 14 12:10 hello_jsp.java

-rw-rw-r-- 1 tomcat tomcat 16626  1월 29  2015 index_jsp.class

-rw-rw-r-- 1 tomcat tomcat 28905  1월 29  2015 index_jsp.java


==================================================================

LAB> CentOS 6.3 에 tomcat 설치하기


CentOS 6.3 + tomcat + Oracle

# /etc/init.d/oracle-xe stop

# su - tomcat

$ startup.sh

$ exit

# /etc/init.d/oracle-xe start

==================================================================


==================================================================

LAB> CentOS 5.8 에 tomcat 설치하기


CentOS 5.8 + tomcat + mysql

# su - tomcat

$ startup.sh

$ exit

# /etc/init.d/mysqld start


o Apache & Tomcat 연동이란 ?

- 일반적으로 Web Server(Apache)와 Servlet Container(Tomcat)간의 

  연동은 아래와 같다.


          +---------+         +---------+ 

index.jsp |         |         |         |

  ------> | Apache -----------> Tomcat  |

          |           mod_jk            |

          |           (AJP13)           |

          |             8009            |

          |        <-----------  html로 |

          |         |         |  변환   |

          +---------+         +---------+ 


mod_jk : 아파치와 톰캣을 연동하기 위한 모듈 (다리)

AJP13  : 아파치와 톰캣을 서로 통신하기 위한 프로토콜 (version 1.3)

8009   : 아파치와 톰캣을 서로 통신 포트


o Web Server(Apache)와 Servlet Container(Tomcat) 통신 포트 확인


- 아파치를 통해서 Tomcat에 접속 (방화벽 설정 전)

http://192.168.56.101  O


- 아파치를 통해서 Tomcat에 접속 (방화벽 설정 후)

- 서로의 통신 포트인 8009를 차단했으므로 접근이 안된다.

# iptables -A INPUT -p tcp --dport 8009 -j DROP

http://192.168.56.101  X


- 아파치를 통하지 않고 Tomcat에 바로 접속 과정

http://192.168.56.101:8080 O


o 아파치와 톰캣의 처리 플로우


1. 서버에서 설정

- 아파치를 설치하고, 톰캣을 설치하고, 서로 연동한다.

  아파치 웹서버의 httpd.conf에 톰캣 연동을 위한 설정을 추가하고 

   톰캣에서 처리할 요청을 지정함.

2. 사용자가 웹페이지 요청

- 사용자는 아파치 웹서버(보통 80포트)에 접속해 웹페이지를 요청한다.

3. 아파치 웹서버가 톰캣에게 전달

-  아파치 웹서버는 사용자의 요청이 톰캣에서 처리하도록 지정된 

   요청인지 확인하고 

   톰캣에서 처리해야 하는 경우에는 아래처럼

   톰캣의 AJP포트(보통 8009포트)에 접속해서 요청을 전달

4. 아파치의 요청을 처리하고 결과를 돌려줌

- 톰캣은 아파치 웹서버로부터 요청을 받아 처리한 후, 처리 결과를 

  아파치 웹서버에게 다시 돌려준다.

5. 아파치가 사용자에게 페이지를 전송

- 아파치 웹서버는 톰캣으로부터 받은 웹페이지의 처리 결과를 

  사용자에게 전송한다.



o 아파치와 톰캣 연동시 css와 image가 깨지는 원인

- 서로간의 연동은 잘 되었지만 DocumentROOT(웹루트 디렉토리)가 서로 

  다르게 설정되어서 발생하는 문제이다.

- 일반적으로 mod_jk를 설정하면 확장자를 선택하여 어떤 확장자에 

  대해서 jk모듈을 이용하여 tomcat으로 보낼지를 결정하게 된다.

- 이때 둘 사이의 ROOT 디렉토리가 다르기 때문에 문제가 발생한 것이다.


- .jsp 파일인 index.jsp는 tomcat으로 넘기지만 index.jsp에 포함되는 

  css파일과 이미지들은 Apache에서 처리하게 되는 것이다. 

  이때 Apache가 ccs파일과 이미지들을 자신의 DocumentROOT 디렉토리인

  /usr/local/apache/htdocs 에서 찾는데 당연히 파일이 없기 때문에 

  안되는 것이다.


o 해결방법

이를 해결하기 위해 Apache와 Tomcat의  DocumentRoot 디렉토리를 

동일하게 설정하면 된다.



-- 작업 순서 --

1. 아파치 웹서버 설정파일 수정

2. 아파치 웹서버 재시작

3. tomcat 디렉토리 권한 변경

-- 작업 순서 --


1. 웹서버 설정파일 수정

- apache + jsp 연동한 후에 httpd.conf 파일을 아래와 같이 수정한다.

# vi /usr/local/apache/conf/httpd.conf

-- /usr/local/apache/conf/httpd.conf --

  :

  :

# DocumentRoot 지시자의 값을 tomcat 의 기본 디렉토리로 변경한다.

# DocumentRoot "/usr/local/apache/htdocs"

DocumentRoot "/home/tomcat/tomcat/webapps/ROOT"

  :

  :

<Directory "/usr/local/apache/htdocs">

  :

  :

</Directory>


# 아래 <Directory> ~ </Directory>를 추가한다.

<Directory "/home/tomcat/tomcat/webapps/ROOT">

 Options Indexes FollowSymLinks

 AllowOverride None

 Order allow,deny

 Allow from all

</Directory>

  :

  :

# 아래 index.jsp를 추가한다.

<IfModule mod_dir.c>

 DirectoryIndex index.html index.jsp

</IfModule>

-- /usr/local/apache/conf/httpd.conf --


2. 아파치 웹서버 재시작

- 설정파일의 문법을 확인한 후 Syntax OK가 출력되면 아파치를 재시작한다.

# apachectl configtest

Syntax OK

# apachectl restart


3. tomcat 디렉토리 권한 변경

- nobody가 접근할 수 있도록 권한을 변경한다.

# chgrp nobody /home/tomcat

# chmod g+x /home/tomcat


4. 접속 확인

- 홈페이지 접속시 JSP 고양이가 뜨면 연동이 성공된 것이다.


http://IP주소/

http://IP주소/hello.jsp




o workers.properties 분석 

worker.list는 사용할 woker(톰캣) 인스턴스들의 리스트다. 

이름은 임의로 지정해주면 되며 

worker.woker이름.속성=값 의 형태로 정의해 주면 된다.


아래 설정을 보면 

포트는 8009를 사용하며 

프로토콜은 ajp13 프로토콜을 사용하며, 

host는 localhost 를 사용한다라는 의미이다.


--  workers.properties --

worker.list=worker1

worker.worker1.port=8009

worker.worker1.host=localhost

worker.worker1.type=ajp13


# 또 다른 예

#worker.list=ajp13

#worker.ajp13.port=8009

#worker.ajp13.host=localhost

#worker.ajp13.type=ajp13

--  workers.properties --


o Apache JServ Protocol (AJP)

- AJP는 웹서버 뒤에 있는 어플리케이션 서버로부터 웹서버로 들어오는 

  요청을 위임할 수 있는 바이너리 프로토콜이다.


원문 : http://en.wikipedia.org/wiki/Apache_JServ_Protocol

 

어플리케이션 서버로 핑을 할 수 있는 웹서버의 모니터링 기능을 지원한다.

웹 개발자들은 대체로 AJP를 여러 웹서버로 부터 여러개 어플리케이션 

서버로의 로드 밸런스 구현에 이용한다. 

세션들의 각각의 어플리케이션 서버 인스턴스의 이름을 갖는 라우팅 

메카니즘을 사용하는 현재 어플리케이션 서버로 리다이렉트된다. 

이 경우 어플리케이션 서버를 위한 리버스 프록시로 웹서버는 동작한다.


AJP는 mod_jk를 사용하는 Apache HTTP Server 1.x 와 Proxy AJP를 

사용하는 Apache 2.x 와 mod_proxy와 proxy 밸런써 모듈에서 같이 

실행된다. 

아직 릴리즈 되지 않은 lighttpd 1.5 버전과 ngix, grizzly 2.1 

그리고 iis에도 사용할 수 있다. 

또 AJP는 Jetty 서블릿 컨테이너로 동작하는 Apache Tomcat servlet 

컨테이너에도 사용할 수 있다.


==================================================================

'OS > [Linux] CentOS' 카테고리의 다른 글

[CentOS] 16. APM2 설치  (0) 2016.07.30
[CentOS] 15. APM 설치  (0) 2016.07.23
[CentOS] 14-1 패키지 관리 - tomcat 환경설정  (0) 2016.07.10
[CentOS] 14. 패키지 관리  (0) 2016.07.10
[CentOS] 13-2. 사용자 생성  (0) 2016.07.10

[root@ksw ~]# vi /etc/profile

-- /etc/profile --

  :

  :

## Java ##                                                  

JAVA_HOME=/usr/local/java                                  

PATH=$PATH:$JAVA_HOME/bin                                 

CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar  

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME CLASSPATH

## Java ##                                                  

  :

  :

-- /etc/profile --



[tomcat@ksw ~]$ vi .bashrc

-- .bashrc --

  :

  :

## Tomcat ##       


CATALINA_HOME=/home/tomcat/tomcat

TOMCAT_HOME=$CATALINA_HOME

PATH=$PATH:$TOMCAT_HOME/bin

CLASSPATH=$CLASSPATH:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar

export PATH JAVA_HOME CLASSPATH CATALINA_HOME TOMCAT_HOME 

## Tomcat ##   

-- .bashrc --



'OS > [Linux] CentOS' 카테고리의 다른 글

[CentOS] 15. APM 설치  (0) 2016.07.23
[CentOS] 14-2 패키지 관리 - tomcatWAS설치  (3) 2016.07.10
[CentOS] 14. 패키지 관리  (0) 2016.07.10
[CentOS] 13-2. 사용자 생성  (0) 2016.07.10
[CentOS] 13-1. 사용자관리체크  (0) 2016.07.10

#############################################

## 주제 : 소프트웨어 설치                  ##

#############################################


http://centos.org

http://ftp.daum.net

http://ftp.neowiz.com

ftp://ftp.kaist.ac.kr

http://vault.centos.org

http://rpmfind.net


rpm (redhat package manager) 약자로 미국의 RedHat 사가 개발한 패키징 방식이다.


tar.gz, tar.bz2, tar.xz 은 압축을 해제해야 소스인지, 컴파일한 파일인지 알 수 있다. 

그러니 rpm 으로 끝나는 확장자는 파일명만 보고도 소스인지, 컴파일한 파일인지 알 수 있다.

~.tar.gz  : tar + gzip  (소스형태, 컴파일형태)

~.tar.bz2 : tar + bzip2 (소스형태, 컴파일형태)

~.tar.xz  : tar + xz    (소스형태, 컴파일형태)

~.i386.rpm : rpm  (컴파일된 형태)

~.src.rpm : (소스 형태)

~.i386.rpm, ~.i586.rpm, ~.i686.rpm : (컴파일형태)

~.deb : 데비안계열의 패키징 방식


~.rpm : rpm 명령어로 설치

yum   : rpm 파일을 설치 


~.deb : dpkg 명령어로 설치

apt-get :   deb 파일을 설치


예전에는 리눅스에 프로그램을 설치하기 위해서는 아래와 같은 과정을 거쳤다.

소스 -> 환경설정 -> 컴파일 -> 설치 

~~~~    ~~~~~~~~

 |

 +--> 컴파일    -> 패키지명.버전명.i386.rpm  -> 설치 

 +--> 소스 파일 -> 컴파일 -> 설치 



rpm 의 가장 큰 단점.

- 패키지의 의존성이 존재하면 설치하기가 어렵다.


의존성 : 패키지끼리 서로 연관 되어있는 형태이다.

- 리눅스용 웹브라우저(firefox 를 설치했다.)

- 강제로 설치했다고 해도 firefox 가 실행이 안된다.

- 이것을 실행하기 위해서는 의존성이 걸린 Xwindow system 의 관련된 패키지들을

- 모두 설치해야 firefox 를 설치하고 사용할 수 있다.


yum : 이미 컴파일이 되어있는 패키지를 인터넷으로 다운받아서 설치하는 방식


~~~~.i386.rpm  <-- 컴파일된 rpm 파일

~~~~.src.rpm   <-- 소스 rpm 파일

~~~~.tar.gz    <-- 압축된 파일 (tar + gzip) 

~~~~.tar.bz2   <-- 압축된 파일 (tar + bzip2)

~~~~.tar.xz   <-- 압축된 파일 (tar + xz)


########################

## tar + gzip + bzip2 ##

########################


o gzip

- 파일을 압축하는 명령어다.

- gzip은 GNU 프로젝트를 통해 배포되는 유틸리티

- gzip으로 압축한 파일은 파일명이 : 파일명.gz 확장자를 갖는다.

- 또한 여러 파일들을 지정하면 각각의 파일명.gz 파일로 저장한다.


사용법 : gzip 옵션 파일들...

옵션 : 

-d --decompress  decompress

-1 --fast        compress faster

-9 --best        compress better


사용예 : gzip filename

- filename 을 압축해서 filename.gz 파일이 생성된다. 

- 이때 원본파일인 filename 없어지고 압축된 파일만 남는다.

- 여러 파일을 gzip으로 압축해도 각각 filename.gz 이 생성이 된다. 

- 여러개의 파일을 하나의 파일로 묶이지 않는다. 

- 여러개의 파일을 하나로 묶는 것은 tar의 역할이다. 


압축해제 : gunzip filename  or gzip -d filename



o bzip2

- 압축하면 나오는 파일명 : 파일명.bz2

- 대체로 gzip보다 10~20% 뛰어난 압축률이 더 좋다.


사용법 : bzip2 OPTION 파일들...

옵션 : 

-d --decompress     force decompression

-1 .. -9            set block size to 100k .. 900k

--fast              alias for -1

--best              alias for -9


사용예 : bzip2 filename

- filename 을 압축해서 filename.bz2 파일이 생성된다. 

- 이때는 filename 이 지워진다.

- 여러 파일을 bzip2로 압축해도 각각 filename.bz2 가 생성이 된다. 

- 여러개의 파일을 하나의 파일로 묶이지 않는다. 

- 여러개의 파일을 하나로 묶는 것은 tar의 역할이다. 


ex) bzip2 filename


압축해제 : bzip2 -d filename  or bunzip2 -d filename


o xz : 요즘 나온 압축 프로그램

사용법은 비슷하다.

리눅스 커널 소스가 이 압축프로그램으로 압축되어 있다. 

linux-3.17.2.tar.xz


xz 

unxz 


o tar 

- 압축하는 프로그램이 아니다.

- tar는 단순히 하나의 아카이브 파일로 묶어 주는 역할만 할 뿐, 

  파일의 크기를 줄여주는 압축 기능은 없으므로 

  tar 명령어 안에서 gzip이나 bzip2 명령어와 함께 사용한다.

- 이때 원본파일은 그대로 남는다.

- 파일을 원래 상태로 복원하기 위해 파일의 퍼미션이나 소유권 등의 정보를 유지하면서 여러개의 파일들을 하나의 파일로 묶는 기능을 가진다.


Usage: tar [OPTION...] [FILE]...


ex) tar options 파일.tar 파일들 ...


tar cjf tarfile.tar.bz2 files

tar czf tarfile.tar.gz  files 

tar cvf tarfile.tar     files 

~~  ~~~ ~~~~~~~~~~~~~~~ ~~~~~

 |   |       |            |

 |   |       |            +-- 묶일 파일 리스트들

 |   |       + 묶을 파일명

 |   +-- 옵션

 +-- 명령어

 

gzip -9 tarfile.tar  <-- tarfile.tar.gz


option

c : 새로운 아카이브의 생성

x : 아카이브로부터 파일 추출

t : 파일안에 묶인 내용을 출력

v : 파일을 묶거나 풀 때 정보를 출력

f : 읽거나 기록할 tar 파일을 정의

z : gzip으로 압축한다

j : bzip2 로 압축한다

C <DIR> : 압축을 해당 <DIR> 로 해제한다


==================================================================

LAB> 압축 연습하기 


-- 조건 --

작업 디렉토리 : 홈디렉토리(/root)

-- 조건 --


o 파일 압축

- 사용자와 그룹에 관련된 중요 파일 3개를 현재 디렉토리에 복사한다.

- /etc/passwd, /etc/group, /etc/shadow 파일을 현재 디렉토리에 

- 복사한다. 그런데 왜 명령어가 틀린가 ???? 다양한 방법이 있다는걸

- 보여주기 위해서 쓴 것이다.

# cd

# rsync /etc/passwd .

# install -m 644 /etc/group .

# cat /etc/shadow > shadow


- 복사한 파일을 확인한다.

# ls -l /etc/passwd passwd

# ls -l /etc/shadow shadow

# ls -l /etc/group group

# diff /etc/passwd passwd

# cmp  /etc/shadow shadow

# diff /etc/group group


- 각 파일을 압축한다.

- 만약 xz 명령어가 없다면 yum -y install xz 으로 패키지를 설치해야 한다.

# gzip group 

# bzip2 passwd 

# xz shadow  


- 압축된 파일을 확인한다.

- 중요한 것은 원본 파일이 삭제되고 각 파일명에 압축프로그램의

- 고유 확장자가 붙어있다는 것이다.

- 고유 확장자 : gzip -> .gz, bzip2 -> .bz2, xz -> .xz

# ls -l

total 24

-rw-r--r-- 1 root root 440 Mar 20 21:44 group.gz

-rw-r--r-- 1 root root 832 Mar 20 21:43 passwd.bz2

-r-------- 1 root root 368 Mar 20 21:46 shadow.xz


o 첫 번째 압축해제

- 각 압축 프로그램의 명령어의 -d 옵션을 이용해서 압축을 해제한다.

# gzip -d group.gz 

# bzip2 -d passwd.bz2 

# xz -d shadow.xz 


o 두 번째 압축해제

- 각 압축 프로그램의 -d 옵션이 아닌 다른 이름으로 된 해제 명령어를 

- 이용해서 압축을 해제한다.

# gzip group 

# bzip2 passwd 

# xz shadow 

# gunzip group.gz 

# bunzip2 passwd.bz2 

# unxz shadow.xz


- 압축 프로그램과 압축해제 프로그램의 하드링크와 심볼릭링크를

- 확인하는 부분이다.

# ls -li `which gunzip`

# ls -li `which gzip`

# ls -li `which zcat`

# ls -li `which bzip2`

# ls -li `which bunzip2`

   :

   :

==================================================================


==================================================================

LAB>  tar + gzip 으로 압축하기 (단일 파일인 경우)


- tar 와 gzip 을 각각 실행하는 경우

- 순서 : tar 로 묶고 gzip 으로 압축한다.

# tar cvf test.tar passwd shadow group

# gzip test.tar             <-- test.tar.gz


- tar 와 gzip 을 한번에 실행하는 경우

- 순서 : tar 명령어에 z 옵션을 넣어주면 test2.tar.gz 이 생성된다.

- tar 명령어에 z 옵션이 들어가면 tar 프로그램 내부에서 외부의 

- gzip 실행파일을 호출한다.

# tar cvzf test2.tar.gz passwd shadow group  


- tar 와 bzip2 를 각각 실행하는 경우

- 순서 : tar 로 묶고 bzip2 로 압축한다.

# tar cvf test3.tar passwd shadow group

# bzip2 test3.tar           <-- test3.tar.bz2


- tar 와 bzip2 를 한번에 실행하는 경우

- 순서 : tar 명령어에 j 옵션을 넣어주면 test2.tar.bz2 가 생성된다.

- tar 명령어에 j 옵션이 들어가면 tar 프로그램 내부에서 외부의 

- bzip2 실행파일을 호출한다.

# tar cvjf test4.tar.bz2 passwd shadow group  <-- test4.tar.bz2


==================================================================


==================================================================

LAB>  tar + gzip 으로 압축하기 (디렉토리인 경우)


*** 인터넷상에서 프로그램을 압축해서 배포하는 경우에는

*** 두 번째 예제처럼 디렉토리에 넣고 그 디렉토리를 묶는게 일반적이다.


o 디렉토리에 넣지 않고 묶을 경우

- 압축을 해제할 경우에는 현재 디렉토리 파일이 몽땅 풀린다.

# cd /etc

# tar czf etc.tar.gz *

# mv etc.tar.gz /tmp

# cd /tmp

# ls

etc.tar.gz

# tar xzf etc.tar.gz 

# ls

  :

  :

# rm -rf *


o 디렉토리에 넣고 묶을 경우

- 압축을 해제할 경우에는 디렉토리 자체가 나온다.

# cd /

# ls -F

bin/   boot/  etc/   ...

# tar czf etc.tar.gz etc

# mv etc.tar.gz /tmp

# cd -

/tmp

# ls

etc.tar.gz

# tar xzf etc.tar.gz 

# ls

etc  etc.tar.gz

==================================================================


==================================================================

LAB> tar 에서 -z(gzip) 옵션과 -j(bzip2) 옵션 확인하기.


tar 의 z 옵션 : 외부의 gzip 명령어인 /bin/gzip 을 호출한다.

tar 의 j 옵션 : 외부의 bgzip2 명령어인 /usr/bin/bzip2 를 호출한다.


o tar의 x 옵션 테스트 

- gzip 명령어를 이동시키고 tar 의 x 옵션을 호출하면 tar 명령어 

- 내부에서 /bin/gzip을 호출하는 것을 알 수 있다.


# mv /bin/gzip .

# ls -l /bin/gzip

ls: /bin/gzip: No such file or directory


# tar czf etc.tar.gz /etc

tar: gzip: Cannot exec: No such file or directory

tar: Error is not recoverable: exiting now

tar: Removing leading `/' from member names


- 다시 원래대로 복구한다.

# mv gzip /bin

# tar czf etc.tar.gz /etc

# ls -l etc.tar.gz 

-rw-r--r-- 1 root root 4958956 Nov  4 17:11 etc.tar.gz



o tar의 j 옵션 테스트 

- bzip2 명령어를 이동시키고 tar 의 j 옵션을 호출하면 tar 명령어 

- 내부에서 /usr/bin/bzip2 를 호출하는 것을 알 수 있다.


# mv /usr/bin/bzip2 .

# ls /usr/bin/bzip2

ls: /usr/bin/bzip2: No such file or directory

# tar cjf etc.tar.bz2 /etc

tar: Removing leading `/' from member names

tar: bzip2: Cannot exec: No such file or directory

tar: Error is not recoverable: exiting now


- 다시 원래대로 복구한다.

# mv bzip2 /usr/bin

# tar cjf etc.tar.bz2 /etc

# ls -l etc.tar.bz2

-rw-r--r-- 1 root root 3183126 Nov  4 17:18 etc.tar.bz2

===================================================================


===================================================================

LAB> 위에서 exec 를  이해하기 위한 프로그램을 짜보기.


- program 을 실행하면 외부의 ls 가 실행된다.

- 이때는 프로그램에서 exec 계열의 함수를 이용해서 외부 명령어를 

- 실행한다. 

- man execl 을 이용해서 exec 계열의 함수들을 확인할 수 있다.


# vi program.c

-- program.c --

#include <unistd.h>


int main()

{

  execl("/bin/ls", "ls", NULL);

  return 0;

}

-- program.c --


# gcc -Wall -o program program.c 


# ./program

  :

  :


# cp -v program.c program2.c

# vi program2.c

-- program2.c --

#include <unistd.h>  // execl

#include <stdio.h>   // printf


int main()

{

  execl("/bin/ls", "/bin/ls", NULL);

  fprintf(stderr, "program: /bin/ls: Cannot exec: No such file or directory\n");

  return 0;

}

-- program2.c --


# gcc -Wall -o program2 program2.c 

# ./program2

  : 

  :

# mv /bin/ls .

# ./program2

program: /bin/ls: Cannot exec: No such file or directory

# mv ls /bin


# cp -v program.c program3.c

# vi program3.c

-- program3.c --

#include <unistd.h>  // execl

#include <stdio.h>   // printf


int main(int argc, char *argv[])  // 명령행 인자를 쓸 때 반드시 넣어주어야 한다.

{

  // # gunzip   fstab

  //   ~~~~~~   ~~~~~

  //   argv[0]  argv[1]


  execl("/bin/gzip", "/bin/gzip", argv[1], NULL); // execl함수는 환경변수 세팅이 안된다.

  fprintf(stderr, "program: /bin/gzip: Cannot exec: No such file or directory\n");

  return 0;

}

-- program3.c --


- 정상 테스트

# gcc -Wall program3 program3.c

# cp /etc/fstab

# ./program3 fstab

# ls fs*

# gunzip fstab.gz


- 에러발생 테스트

# mv /bin/gzip .

# ./program3 fstab

program: /bin/gzip: Cannot exec: No such file or directory


- 원상복귀

# mv gzip /bin

=================================================================


==================================================================

LAB> 인터넷에서 받은 tar.gz 파일을 시스템에 설치하기.


목표 : 웹서버의 소스파일을 서버에서 설치한다.


http://httpd.apache.org


웹서버 파일명 : apache_1.3.41.tar.gz  


-- 설치 순서 --

1. 압축 해제

2. 환경설정

3. 컴파일

4. 설치

5. 웹서버 실행

6. 웹서버 확인

7. 메인 페이지 생성

8. 브라우저로 접속

-- 설치 순서 --


0. 체크사항

- 개발툴 없다면 설치한다.

# yum -y groupinstall "Development Tools"


- 아파치 웹서버가 있다면 삭제한다.

// 설치 확인

# rpm -q httpd

// 삭제

# rpm -e httpd


// 의존성 있는 http 삭제

# /etc/init.d/httpd stop

# yum -y groupremove httpd


1. 압축 해제

- 압축파일로 된 아파치 웹서버를 압축해제 한다.

# tar xzf apache_1.3.41.tar.gz  


2. 환경설정

- ./configure 명령어를 이용해서 환경을 설정한다.

- UNIX(LINUX) 에서는 현재 디렉토리의 실행파일들은 실행할 수 없도록

- 기본값은 막혀있다. 이를 풀수도 있지만 보안상의 이유로 안푸는 것이 좋다.

- 항상 현재 디렉토리의 실행파일은 ./실행파일명 으로 실행을 해야한다.

- configure 에서 옵션은 다 생략하고 가장 간단한 형태로 실행한다.

# cd apache_1.3.41

# ./configure


3. 컴파일

- make 는 프로젝트 단위로 컴파일을 한다.

#  make


4. 설치

- make 뒤에 install 이라는 인자를 준다.

- 그러면 컴파일된 파일들을 시스템에 자동으로 설치해준다.

# make install


5. 웹서버 실행

- apachectl 명령어는 웹서버를 실행시켜주는 명령어이다.

# /usr/local/apache/bin/apachectl start


6. 웹서버 확인

- netstat 명령어는 현재 서버에 LISTEN 되어 있는 포트를 출력해준다.

- 그중에서 0.0.0.0:80  이 부분이 나오면 된다.

# netstat -nlt

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State      

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      

tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN


7. 메인 페이지 생성

- 웹페이지가 제공되는 디렉토리 : /usr/local/apache/htdocs 

# cd /usr/local/apache/htdocs

// 필요 없는 파일 삭제

# rm -f *

# echo Welcome to Ko Seung-Wook Server. > index.html


8. 브라우저로 접속

- 자신의 IP주소를 확인하고 그 IP주소로 웹브라우저로 접속해본다.

// vmware

# ifconfig eth0

// virtual box

# ifconfig eth1

eth1      Link encap:Ethernet  HWaddr 00:0C:29:7C:CF:29  

          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0

  :

  :

# iptables -F

http://192.168.56.101

Welcome to Ko Seung-Wook Server. 


==================================================================


==================================================================

LAB> 인터넷에서 받은 tar.gz 파일을 시스템에 설치하기.


http://netcat.sourceforge.net

netcat-0.7.1.tar.gz


-- 순서 --

1. 압축 해제

2. 환경설정

3. 컴파일

4. 설치

5. 실행

6. 확인

-- 순서 --


1. 압축해제

- 업로드한 압축 파일을 해제한다.

# tar xvzf netcat-0.7.1.tar.gz 

netcat-0.7.1/

netcat-0.7.1/m4/

netcat-0.7.1/m4/lib-link.m4

netcat-0.7.1/m4/inttypes_h.m4

netcat-0.7.1/m4/lcmessage.m4

netcat-0.7.1/m4/inttypes.m4

  :

  :


2. 환경설정

- 압축이 해제된 netcat 디렉토리에 들어가서 환경설정을 한다.

# cd netcat-0.7.1

# ./configure


3. 컴파일

- 컴파일을 한다.

# make


4. 설치

- 시스템에 설치한다.

# make install


# yum groupinstall "development tools"


5. 실행

- nc를 실행한다.

- 실행하기 전에 이미 설치된 nc 패키지를 삭제한다.

pts/0# rpm -q nc

pts/0# rpm -e nc


- 방화벽정책으로 인해서 접속이 안되면 모두 해제한다.

pts/0# iptables -F


- 8888 포트를 대기한다. (server 개념)

pts/0# nc -l -v -p 8888

Connection from 127.0.0.1:57059

Hello

Hi~~


- 리슨된 포트로 접속한다. (client 개념)

pts/1# nc localhost 8888

Hello

Hi~~

==================================================================


==================================================================

LAB> Linux 에서 Java 를 설치하기. 


JAVA_and_JSP 설치 문서를 참고할 것!!!


==================================================================


#########

## rpm ##

#########


o rpm 이란 ? 

rpm (redhat package manager) 약자로 미국의 RedHat 사가 개발한 패키징 방식이다.


장점 : 소스로 설치하는 어려운 부분을 간단히 해결할 수 있다.

단점 : 의존성 에러로 인해 설치가 어렵다.


rpm 파일을 설치하는 형식 : 

mc-4.6.1a-35.el5.i386.rpm


패키지명-버전-배포판-아키텍처-rpm


버전 : 주번호, 부번호, 패치레벨


fc19 : 페도라 V 19

el5  : Enterprise Linux V 5


noarch  : 모든 아키텍처에 설치가 가능한 패키지들(font ...)

s390, s390x  <-- IBM S390 메인프레임에서 실행

src     <--- 컴파일이 안된 소스형태로 배포

arm     <--- 임베디드 분야

sparc   <--- 자기 아키텍처만 설치/실행

ppc     <--- 애플 MAC

ppc64   <--- 애플 MAC 64bit

x86_64  <--- 64bit intel

i386 -> i486 -> i586 -> i686  <--   32bit intel 

   <-----------------------  X

 O ------------------------>


o 아키텍처 종류를 확인해보자.

http://rpmfind.net


o rpm 옵션 


Usage: rpm [OPTION...]


-i 설치

-U 업그레이드 / 설치 

-v 설치할때 파일명을 출력

-h # 으로 설치진행을 출력

-e 삭제

--force 강제설치

--nodeps  의존성을 무시하고 설치 

- --nodeps 를 이용해서 설치하면 프로그램이 정상동작을 하지 않을 수 있다.



-Uvh  설치할 때 사용하는 옵션 


-e    삭제할 때 사용하는 옵션


ex)

rpm -Uvh 파일명

rpm -Uvh --nodeps 파일명

rpm -e 패키지명

rpm -e 패키지명-버전 


=====================================================================

rpm-LAB1> CentOS5.8 DVD의 rpm 을 확인해보자.


-- 순서 --

1. DVD 넣는다.

2. mount 명령어로 DVD를 /mnt 디렉토리에 연결한다.

3. rpm 파일이 있는 디렉토리에서 rpm 파일을 확인하고 설치해보자.

-- 순서 --


1. DVD 넣는다.

- VB 에서 DVD를 삽입한다.

저장소 -> CentOS 5.8 1번 DVD를 선택한다.


2. mount 명령어로 DVD를 /mnt 디렉토리에 연결한다.

- -t iso9660 : cdrom filesystem

- -o ro (read only)

# mount -t iso9660 -o ro /dev/cdrom /mnt

# df

  :

  :

/dev/hdc               3831642   3831642         0 100% /mnt


3. rpm 파일이 있는 디렉토리에서 rpm 파일을 확인하고 설치해보자.

# cd /mnt/CentOS

# ls 

  :

x3270-text-3.3.4p7-3.el5.4.i386.rpm

x3270-x11-3.3.4p7-3.el5.4.i386.rpm

  :

yum-utils-1.1.16-21.el5.centos.noarch.rpm

  :

zisofs-tools-1.0.6-3.2.2.i386.rpm

  :


# ls mc*

mc-4.6.1a-35.el5.i386.rpm

# rpm -Uvh mc-4.6.1a-35.el5.i386.rpm 

# mc       <-- 실행이 된다.


- mc 패키지를 삭제한다.

# rpm -e mc

# mc       <-- 실행이 안된다.


- 의존성 에러가 발생한다.

# rpm -Uvh firefox-3.6.26-1.el5.centos.i386.rpm 


- 의존성을 무시(--nodeps)하고 설치한다.

- --nodeps 옵션은 아무데나 사용해도 상관없다.

# rpm -Uvh --nodeps firefox-3.6.26-1.el5.centos.i386.rpm 

# rpm -Uvh firefox-3.6.26-1.el5.centos.i386.rpm  --nodeps 

# rpm --nodeps -Uvh firefox-3.6.26-1.el5.centos.i386.rpm  

# firefox  <-- 설치는 했지만 실행은 안된다. (의존성 때문에)


=====================================================================



===================================================================

rpm-LAB2> --force 옵션을 이용해서 패키지를 다시 설치해보자.


! 강제로 재설치하는 경우

! 1. 실제로 파일이 사용중에 실수로 삭제가 되었을 때

! 2. 외부의 불법침입자에 의해서 파일이 변조가 되었을 때


- --force 옵션을 이용해서 다시 설치한다.

- --force 옵션은 앞이나 뒤나 위치는 상관없다.


# rm -fv /bin/ls

# ls

-bash: /bin/ls: No such file or directory


# mount -t iso9660 -o ro /dev/cdrom /mnt

# rpm -Uvh /mnt/CentOS/coreutils-5.97-34.el5.i386.rpm           <-- 설치 X

# rpm -Uvh --force /mnt/CentOS/coreutils-5.97-34.el5.i386.rpm   <-- 설치 O

# ls

  :

  :

===================================================================


===================================================================

LAB> 버전이 높은 패키지를 받아서 설치해보자.


- 시스템에 설치된 httpd 패키지를 확인한다.

# rpm -q httpd

httpd-2.2.3-63.el5.centos


- 인터넷에서 더 높은 버전을 다운로드 받는다.

# wget http://vault.centos.org/5.8/updates/i386/RPMS/httpd-2.2.3-65.el5.centos.i386.rpm


- 시스템에 httpd 패키지를 업데이트한다.

# rpm -Uvh httpd-2.2.3-65.el5.centos.i386.rpm 

Preparing...                ########################################### [100%]

   1:httpd                  ########################################### [100%]


- 업데이트를 확인한다.

# rpm -q httpd

httpd-2.2.3-65.el5.centos


- yum 을 이용해서 더 최신 버전으로 업데이트한다.

# yum -y update httpd

# rpm -q httpd

httpd-2.2.3-91.el5.centos


===================================================================


===================================================================

LAB> rpm 으로 설치하면 설치된 내용이 저장되는 디렉토리에 대한 실습

!!! /var/lib/rpm 디렉토리를 참고 !!!

-q rpm DB에서 정보에서 찾는다.

- 실행파일 (/bin,/usr/bin,/sbin,/usr/sbin,/usr/X11R6/bin)

- 설정파일 (/etc)

- 문서파일 (/usr/share/doc)

- 도움말파일 (/usr/share/man)



# cat /etc/redhat-release 

CentOS release 5.8 (Final)

# rpm -q kernel

kernel-2.6.18-308.el5


# yum update kernel 

kernel-2.6.18-402.el5

kernel-2.6.18-308.el5



1. 어떤 패키지가 이 시스템에 설치되었는지 ?

- 모든 패키지를 화면에 출력한다.

# rpm -qa  


- 모든 패키지의 개수를 화면에 출력한다.

# rpm -qa | wc -l


- 모든 패키지명을 rpmlist.txt 파일로 저장한다.

# rpm -qa  > rpmlist.txt


- tee 명령어는 화면도 출력하고 rpmlist.txt 파일로 저장도 한다.

# rpm -qa  | tee rpmlist.txt

  :


2. 어떤 패키지가 어떤 파일들을 설치했는지 ?

- 패키지에 속한 전체 파일들을 출력한다.

- Shift + Page UP, Page DOWN

# rpm -ql coreutils

  :


- 패키지에 속한 문서파일(document) 들을 출력한다.

# rpm -qd coreutils

  :


- 패키지에 속한 설정파일(configuration) 들을 출력한다.

# rpm -qc coreutils

  :


3. 어떤 파일이 어떤 패키지에서 나왔는지 ?

# rpm -qf /bin/ls

  :

===================================================================


===================================================================

LAB> rpm 패키지를 검증하기 실습 


패키지를 검증할때는 -qV 옵션을 사용한다.


# rpm -qVa 


S file Size differs

M Mode differs (includes permissions and file type)

5 MD5 sum differs

D Device major/minor number mismatch

L readLink(2) path mismatch

U User ownership differs

G Group ownership differs

T mTime differs


# rpm -qf /bin/ls

coreutils-5.97-34.el5_8.1

# rpm -qV coreutils

   <-- 아무 메세지가 나오지 않으면 패키지가 무결성하다는 뜻이다.


- 파일의 권한을 변경하고 검증해보자.

# ls -l /bin/ls

-rwxr-xr-x 1 root root 95116 Mar 21  2012 /bin/ls

 ~~~~~~~~~

# ls -l /bin/ls

-rwx--x--x 1 root root 95116 Mar 21  2012 /bin/ls

# rpm -qV coreutils

.M......    /bin/ls


- 파일의 크기/내용 수정을 변경하고 검증해보자.

# cp /bin/ls .

# echo "=========" >> /bin/ls

# rpm -qV coreutils

SM5....T    /bin/ls


# ls -l ls

-rwx--x--x 1 root root 93560 Sep  6 01:26 ls

# ls -l /bin/ls

-rwx--x--x 1 root root 93564 Sep  6 01:26 /bin/ls



===================================================================



rpm - 패키지 파일을 설치 (인터넷 필요 x , 파일이 존재  O)

yum - 인터넷을 통해서 패키지를 설치 (파일이 존재 X , 인터넷 연결 O)



~~.i386.rpm <-- 바이너리 386 ~ 686 모두 설치가능 

~~.i586.rpm <-- 386 x 486 x 586 ~ 686 ... 786 ... 



LAB> http://ftp.daum.net/ 에서 ntsysv 패키지를 가져와서 시스템에 설치하기


http://ftp.daum.net/centos/5.8/os/i386/CentOS/ntsysv-1.3.30.2-2.el5.i386.rpm



# cat /etc/redhat-release   

CentOS release 5.8 (Final)

# wget

-bash: wget: command not found

# yum install wget

...

Is this ok [y/N]: y   <-- y를 입력(설치) n(취소)

# chmod -c 700  `which wget`   <-- 보안상 wget은  root 사용자만 사용!!!

# wget http://ftp.daum.net/centos/5.8/os/i386/CentOS/ntsysv-1.3.30.2-2.el5.i386.rpm

# rpm -Uvh ntysv<tab 키>  <-- ntsysv 설치 

# LANG=C

# ntsysv  

network, sshd, syslog <-- 이거빼고 모두 제거 



x86_64





# rpm -qf /usr/sbin/useradd

# rpm -ql coreutils <-- 

# rpm -ql coreutils > coureutils.txt

# cat -n coureutils.txt



!!! 전체 설치된 패키지를 알아야 하고, 패키지에서 각각의 설치된 정보를 뽑아낼 수 있어야 한다. !!!


LAB> coreutils 패키지에서 나온 여러가지 정보를 확인해보기


o 패키지 설치시 설치되는 파일들

 도움말, 문서파일, 실행파일, 설정파일 


# rpm -q coreutils  <-- 패키지명을 완벽하게 알때 사용 

# rpm -qa | grep core  <-- 패키지명을 모를때 ( core 만 알때 )

# rpm -qi coreutils <-- coreutils 패키지의 정보를 출력 

# rpm -qc coreutils <-- coreutils 패키지의 설정파일들을 출력

# rpm -qd coreutils <-- coreutils 패키지의 문서(도움말)파일들을 출력

# rpm -ql coreutils | grep bin  <-- coreutils 실행파일을 출력

# rpm -ql coreutils <-- 전체 설치된 파일들을 출력 


LAB> 리눅스 패키지를 소스로 받아 컴파일해보자.

*** 리눅스 소스는 모두 공개되어 있으므로 C 언어로 개발할 수 있는 능력만 있으면 얼마든지 수정할 수 있다. ***


1. 개발툴 패키지 확인

2. 인터넷에 연결되어 있는지 확인

  - 네임서버설정

  - IP주소 세팅

  - Gateway 주소 세팅 


[root@www ~]# yum grouplist        <-- 개발툴이 설치되었는지 확인한다.

Installed Groups:

   Administration Tools

   Development Libraries

   Development Tools

   :

   :

Available Groups:

   Authoring and Publishing

   Base

   :

   :


[root@www ~]# yum -y groupinstall "Development Tools"   <-- 개발툴이 없다면 설치하고 있다면 생략한다.

[root@www ~]# cat /etc/resolv.conf    <-- 네임서버 확인

-- /etc/resolv.conf --

nameserver 168.126.63.1

nameserver 168.126.63.2

-- /etc/resolv.conf --


===================================================================

LAB> rpm DB 에서 검색하기


/var/lib/rpm/


- 시스템에 설치된 전체 패키지 목록을 확인한다.

# rpm -qa


- coreutils 패키지를 확인한다.

# rpm -q coreutils

coreutils-5.97-34.el5_8.1


# rpm -q mcmong

package mcmong is not installed


# rpm -q coreutil

package coreutil is not installed


- 패키명을 정확히 모를 경우에는 grep 명령어를 이용한다.

# rpm -qa | grep coreutil

policycoreutils-1.33.12-14.8.el5

coreutils-5.97-34.el5_8.1


# rpm -qf /bin/ls

# rpm -ql coreutils

# rpm -qc coreutils

# rpm -qd coreutils

# rpm -ql coreutils | grep bin


- verify의 약자로 패키지를 검증할때 사용되는 옵션이다.

# rpm -qV coreutils

# echo test >> /bin/ls

# rpm -qV coreutils

S.5....T    /bin/ls


# ls -l /bin/ls

-rwxr-xr-x 1 root root 93565 Nov  4 16:10 /bin/ls


# chmod 711  /bin/ls

# ls -l /bin/ls

-rwx--x--x 1 root root 93565 Nov  4 16:10 /bin/ls

# rpm -qV coreutils

SM5....T    /bin/ls


# chown nobody /bin/ls

# ls -l /bin/ls

-rwx--x--x 1 nobody root 93565 Nov  4 16:10 /bin/ls

# rpm -qV coreutils

SM5..U.T    /bin/ls


# chgrp users /bin/ls

# ls -l /bin/ls

-rwx--x--x 1 nobody users 93565 Nov  4 16:10 /bin/ls

# rpm -qV coreutils

SM5..UGT    /bin/ls


# md5sum /bin/ls

4736357f77b3fa17a0005418f169574f  /bin/ls


# echo test2 >> /bin/ls

# md5sum /bin/ls

8a49ead65efb6dc3d50ae48025913b76  /bin/ls


# md5sum /bin/ls

8a49ead65efb6dc3d50ae48025913b76  /bin/ls


# md5sum /bin/ls

8a49ead65efb6dc3d50ae48025913b76  /bin/ls


# echo test3 >> /bin/ls

# md5sum /bin/ls

a291df3929e4f07d86975311fa5e9295  /bin/ls


# yum -y reinstall coreutils >/dev/null 2>&1

# md5sum /bin/ls

a55a0733413620f0b3aa401541a00d83  /bin/ls


- 재설치를 했으므로 어떤 메세지도 출력이 안된다.

# rpm -qV coreutils


===================================================================


===================================================================

LAB> yum 사용하기


# yum 

  :

  :

# yum list

# yum install mc

# yum remove mc


# yum grouplist

Installed Groups: 설치된 그룹들

  :

  :  

Available Groups: 미설치된 그룹들

  :

  :

# yum groupinstall "MySQL Database"



# /etc/init.d/mysqld start

# mysql

mysql> show databases;

mysql> exit

# /etc/init.d/mysqld stop


# yum -y groupremove "MySQL Database"


# yum search httpd


# rpm -qa | grep ^coreutils

# rpm -q coreutils

# yum -y update coreutils

# yum -y reinstall coreutils


# rm -f /bin/ls

# ls

-bash: ls: command not found

# yum -y reinstall coreutils

# ls

  ...


===================================================================


===================================================================

LAB> 소스 파일을 가져와서 컴파일해보자.


*** 참고 :

*** 소스 rpm 을 설치시 어느 디렉토리에 설치가 되는지 알 수 있다.

*** rpm 을 설치할 수 있는 능력

*** 소스파일을 수정할 수 있는 능력

*** 컴파일할 수 있는 능력

*** src.rpm 파일은 rpmbuild 명령어로 컴파일할 수 있다.


# rpm -qf /bin/ls

coreutils-5.97-34.el5

# wget http://vault.centos.org/5.8/os/SRPMS/coreutils-5.97-34.el5.src.rpm 

# ls -l coreutils-5.97-34.el5.src.rpm 

-rw-r--r-- 1 root root 5256520 Jul 22  2011 coreutils-5.97-34.el5.src.rpm


- 디렉토리가 없으면 생성한다.

# mkdir -p /usr/src/redhat/SOURCES          


- coreutils 소스 패키지를 설치한다.

# rpm -Uvh coreutils-5.97-34.el5.src.rpm    

# cd /usr/src/redhat/SOURCES          

# tar xjf coreutils-5.97.tar.bz2            

# cd  coreutils-5.97


- 환경설정을 한다.

# ./configure


- 컴파일 한다.

# make



- 컴파일된 파일들을 확인한다.

# cd src

# ls

:    <-- 소스와 컴파일된 실행파일들이 존재한다.


- ls 소스를 수정한다.

# vi ls.c      

-- ls.c --

:set nu        <-- vi 명령 : 번호 세팅

/main          <-- vi 명령 : 검색


  :

  :

puts("KSW ls");   <-- 1129번 라인에 출력 함수를 추가한다.

  :

  :

-- ls.c --


# make ls


- 수정된 내용이 출력된다.

# ./ls

KSW ls 

 :

 :

===================================================================




#########

## yum ##

#########


yum은 Yellowdog Updater Modified 의 약자로 rpm 기반의 시스템(redhat계열) 을 위한 

자동 업데이터이자 패키지를 설치/삭제도구이다. 

yum 은 자동적으로 의존성을 처리해주며 rpm 패키지들을 안전하게 설치, 삭제 및 

업데이트하기 위해 반드시 해야할 이들을 스스로 해결한다. 


또한 yum 은 이미 설치되어 있거나 혹은 저장소에 설치가능한 패키지에 관한 정보를 

효율적이고 쉽게 검색해 온다. 

yum 은 rpm 이나 다른 도구들처럼 일일이 수동으로 업데이트할 필요가 없으므로 수 많은 

시스템들을 더욱 관리하기 쉽게 해준다. 


yum 으로 update 할 경우 커널을 제외한 나머지 패키지들은 모두 삭제 및 업데이트를 할수 있다. 

커널의 경우는 업데이트를 하더라도 계속 쌓이게 된다. 

yum 을 사용하여 install 하거나 update 할 경우 저장소라는 곳에서 해당 rpm파일을 다운 받은 후 설치하게 된다. 

패키지 파일을 다운받아 임시로저장하는 위치는 /var/cache/yum 하위 디렉토리이다. 


o 사용법 : 

yum [options] COMMAND


o yum의 명령어들

install : 단일 패키지 설치

remove  : 단일 패키지 삭제

groupinstall : 그룹으로 설치

groupremove  : 그룹으로 삭제

update  : 업데이트

check-update : 업데이트가 있는지 체크한다.

list    : ...

grouplist : 

  :

  :


# LANG=C

- 인터넷을 통해서 단일 패키지를 검색한다.

# yum list


- 인터넷을 통해서 그룹으로 검색한다.

# yum grouplist


- 인터넷을 통해서 단일 패키지 mc를 설치한다.

# yum install mc


- 인터넷을 통해서 단일 패키지 mc를 삭제한다.

# yum remove mc


- 인터넷을 통해서 웹서버 그룹을 설치한다. 

# yum groupinstall "Web Server"


=========================================================================

LAB> 아파치 웹서버를 시스템에 설치하고 외부에 웹문서를 만들어보자.



-- 작업 순서 --

1. 방화벽 중지

2. 웹 문서 생성

3. 웹서버 시작

4. IP주소 확인

5. 서버로 접속

-- 작업 순서 --


1. 방화벽 중지

- 방화벽을 중지한다.

# iptables -F


2. 웹 문서 생성

- 웹 문서 디렉토리로 이동해서 외부에 제공할 웹문서를 생성한다.

- 이때 확장자는 html로 생성한다.

# cd /var/www/html

# vi index.html

-- index.html --

Hello K.S.W Server

-- index.html --


3. 웹서버 시작

- 웹서버를 재시작한다.

# /etc/init.d/httpd start

Starting httpd:                                            [  OK  ]


4. IP주소 확인

- 자신의 IP주소를 확인한다.

# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 08:00:27:01:97:CC  

          inet addr:192.168.20.165  Bcast:192.168.20.255  Mask:255.255.255.0

            :

            :

5. 서버로 접속

- 서버로 접속한다.

웹브라우저에서 eth0의 IP주소로 접속해서 위에서 만든 문서가 나오면

정상적으로 웹서버가 설치된 것이다.

http://192.168.20.165/


=========================================================================


===============================================================================

LAB> yum 사용법

- yum 의 실행부분에서 출력되는 메세지를 다음 프로세스인 head 로

  넘겨준다. 이때 head 넘겨준 메세지를 30줄만 보여주게 설정한다.

# yum | head -30

===============================================================================

===============================================================================

LAB> yum 전체 패키지 리스트(단일패키지)


# yum list

===============================================================================

===============================================================================

LAB> yum 전체 패키지 그룹 리스트(그룹단위)


# yum grouplist

===============================================================================

===============================================================================

LAB> yum 을 이용한 패키지 설치 (단일패키지)



- mc 패키지가 설치가 되었는지 확인한다.

- 파일이 없다면 설치된 것이고 있다면 패키지명과 버전이 나올 것이다.

# rpm -qf /usr/bin/mc

mc-4.6.1a-35.el5

# rpm -q mc


- mc 패키지를 삭제한다.

# rpm -e mc


- mc 패키지를 yum으로 설치한다.

# yum -y install mc


- mc 명령어를 확인한다.

# which mc



- mc 패키지를 확인한다.

# rpm -q mc

===============================================================================


===============================================================================

LAB> yum 을 이용한 패키지 삭제 (단일패키지)


- mc 패키지를 yum을 이용해서 삭제한다.

# yum remove mc


- mc 패키지를 확인한다.

- mc 패키지가 삭제가 되었다면 해당 정보가 출력이 안된다.

# rpm -q mc

package mc is not installed

# which mc

===============================================================================


===============================================================================

LAB> yum 을 이용한 패키지그룹 설치 (그룹단위)

- DB 종류

! Oracle  : 1521 

! MS-SQL  : 1433

! MySQL   : 3306

! Sybase 

! DB2

! MariaDB

! PostgreSQL

! MongoDB


# which mysql

# which mysqld

# LANG=C yum grouplist

# yum -y groupinstall "MySQL Database"

# rpm -q mysql

# rpm -q mysql-server


- mysql 데몬(서비스)을 시작하는 명령어

# /etc/init.d/mysqld start


- 네트워크 상태를 보는 명령어 (mysql 이 사용하는 포트 : 3306)

# netstat -nltp   

# mysql

mysql> show databases;

mysql> quit


- mysql 데몬(서비스)을 종료하는 명령어

# /etc/init.d/mysqld stop

# yum -y groupremove "MySQL Database"

===============================================================================


===============================================================================

LAB> yum 을 이용한 업데이트 테스트

!!! 커널은 업데이트를 하면 이전 커널은 삭제하지 않는다.

!!! 커널이 아닌 일반 애플리케이션들은 업데이트를 하면 자동으로 이전 파일들은 

!!! 없어지고 새로 설치한 패키지의 파일이 대체가 된다. 


# rpm -q coreutils

coreutils-5.97-34.el5


# yum -y update kernel

# rpm -q kernel

kernel-2.6.18-308.el5

kernel-2.6.18-402.el5


- coreutils 패키지를 업데이트하되 정상출력과 비정상출력의 메세지를

  /dev/null(블랙홀:쓰레기소각장)으로 보내서 메세지를 감춘다.

  다시 얘기해서 정상/비정상 출력을 감추고 싶다면 아래 명령어를 사용한다.

  > /dev/null 2>&1  or  2> /dev/null 1>&2

  정상 출력을 감추고 싶으면 ?  ls > /dev/null

  비정상 출력을 감추고 싶으면 ?  ls 2> /dev/null

  동시에 감추고 싶으면 ?  ls > /dev/null 2>&1



# yum -y update coreutils > /dev/null 2>&1

# rpm -q coreutils

coreutils-5.97-34.el5_8.1


# uname -a

Linux localhost.localdomain 2.6.18-308.el5 #1 SMP ...

# reboot


- 새로운 커널로 부팅을 했다면 이전 커널은 확인해서 필요없다면 삭제하는 것이 좋다.

# uname -a

Linux localhost.localdomain 2.6.18-402.el5 #1 SMP ...

# rpm -e kernel-2.6.18-308.el5

# rpm -q kernel

kernel-2.6.18-402.el5


===============================================================================


===============================================================================

LAB> yum 을 이용한 단일 패키지 설치하기 

!!!

!!! - 패키지명을 정확하게 알지 못하면 아래 -q 옵션을 사용하면 안된다.

!!! # rpm -q core

!!! package core is not installed

!!! 

!!! - -qa 옵션을 사용해서 전체 패키지를 검사한 후 파이프로 grep 이 

!!! - 잡을 수 있도록 넘겨야 한다.

!!! # rpm -qa | grep core

!!! svrcore-4.0.4-3.el5

!!! policycoreutils-1.33.12-14.8.el5

!!! coreutils-5.97-34.el5_8.1


# ifconfig 

# route -n

# cat /etc/resolv.conf

VBox 이더넷연결 확인


# ping -c 2 kr.yahoo.com    <-- 인터넷 연결 확인

# yum -y install vim-enhanced  <-- vim-enhanced 패키지 설치

# rpm -qa | grep cvs  <-- 전체 설치된 패키지에서 cvs 만 검색

cvs-1.11.22-11.el5

# yum -y remove cvs   <-- 설치된 cvs 패키지 삭제 

# yum -y install cvs  <-- 삭제된 cvs 패키지 설치


===============================================================================


===============================================================================

LAB> yum 을 이용한 그룹 패키지 설치하기 


# yum -y grouplist

# yum -y groupinstall "패키지 그룹명"


ex) yum -y groupinstall "Development tools"


===============================================================================


===============================================================================

LAB> yum 을 이용한 그룹 패키지 삭제하기 

# yum -y groupremove "패키지 그룹명"


ex) yum -y groupremove "Development tools"

===============================================================================


===============================================================================

LAB> yum 을 이용한 패키지 검색하기 

# yum search httpd

===============================================================================


===============================================================================

LAB> yum 을 이용한 업데이트 확인하기


# yum check-update

===============================================================================


===============================================================================

LAB> yum 설정파일과 저장소 설정파일 확인하기

!!! 사용자가 내용을 수정할 수 있다. !!!


# ls -l /etc/yum.conf 

-rw-r--r-- 1 root root 379 Jul 26  2012 /etc/yum.conf

# ls -l /etc/yum.repos.d/

total 36

-rw-r--r-- 1 root root 1926 Jan 12  2013 CentOS-Base.repo

-rw-r--r-- 1 root root  636 Jan 12  2013 CentOS-Debuginfo.repo

-rw-r--r-- 1 root root  626 Jan 12  2013 CentOS-Media.repo

-rw-r--r-- 1 root root 6846 Jan 12  2013 CentOS-Vault.repo

===============================================================================

===============================================================================

LAB> yum 을 이용한 패키지 검색하기 

!!! 실무에 적용을 잘하기 위해서는 패키지명을 잘 알고 있으면 도움이 된다.


# which useradd

# rpm -qf /usr/sbin/useradd


# rpm -qf `which useradd`

# rpm -qi shadow-utils

# rpm -ql shadow-utils | grep bin

===============================================================================

===============================================================================

LAB> 소스 rpm 파일 설치하기

!!! rpmbuild 명령어를 이용해서 ~.src.rpm -> ~.i386.rpm !!!


!!! 아래 디렉토리가 없다면 생성한다.

# cd /usr/src/redhat


- BUILD  RPMS  SOURCES  SPECS  SRPMS 디렉토리가 없다면 생성

# mkdir BUILD  RPMS  SOURCES  SPECS  SRPMS

# cd RPMS

# mkdir athlon  geode  i386  i486  i586  i686  noarch

/usr/src/redhat

           |-- BUILD

           |-- RPMS

           |   |-- athlon

           |   |-- geode

           |   |-- i386

           |   |-- i486

           |   |-- i586

           |   |-- i686

           |   `-- noarch

           |-- SOURCES

           |-- SPECS

           `-- SRPMS



- rpm-build 패키지가 없다면 yum 을 이용해서 설치한다.

# rpm -qf `which rpmbuild`

rpm-build-4.4.2.3-36.el5_11



o src.rpm 파일을 i386.rpm 으로 컴파일/build 하기 위한 순서


-- 순서 --

1. rpm 소스 파일 다운로드

2. 소스 파일 설치

3. rpm 디렉토리로 이동

4. rpmbuild로 컴파일

-- 순서 --


1. rpm 소스 파일 다운로드

# cd

# wget http://vault.centos.org/5.8/os/SRPMS/mc-4.6.1a-35.el5.src.rpm


2. 소스 파일 설치

# rpm -Uvh mc-4.6.1a-35.el5.src.rpm


3. rpm 디렉토리로 이동

# cd /usr/src/redhat

# tree -L 3 *


4. rpmbuild로 컴파일

- rpmbuild 로 컴파일시 의존성 에러가 발생하면 의존성에 관련된 

  패키지들을 먼저 설치하고 rpmbuild를 다시 실행한다.

  # yum -y install glib2-devel e2fsprogs-devel slang-devel


# cd SPECS

# rpmbuild -ba mc.spec

# ls ../RPMS/i386/

mc-4.6.1a-35.i386.rpm  mc-debuginfo-4.6.1a-35.i386.rpm


===============================================================================


===============================================================================

LAB> 소스 rpm 파일 설치하기

coreutils source rpm 패키지를 가져와서 rpmbuild 명령어를 이용해서 

rpm 파일을 생성해본다.


# wget http://vault.centos.org/5.8/os/SRPMS/coreutils-5.97-34.el5.src.rpm

# rpm -Uvh coreutils-5.97-34.el5.src.rpm

# cd /usr/src/redhat/SPECS

# rpmbuild -ba coreutils.spec 


- coreutils-5.97-34.el5.src.rpm 파일을 가지고 나온 컴파일된 파일이다.

# ls ../RPMS/i386

coreutils-5.97-34.i386.rpm  

===============================================================================

===============================================================================

LAB> 자신의 소스를 생성해서 rpm 파일로 만들어보자.

*** SPEC 파일을 만드는 것이 중요하다. ***

*** 구글에서 찾으면 많이 나옴. ***

===============================================================================


===============================================================================

LAB> 명령어에 대한 패키지를 구해서 하나의 파일로 저장해보자.

!!! 나중에 프린터로 뽑아서 분석하면 도움이 된다.

!!! /bin /usr/bin /sbin /usr/sbin


- 자신의 홈디렉토리에 bin 디렉토리를 만들고 이동한다.

# mkdir ~/bin ; cd ~/bin


- 실행권한의 package_list.sh 파일을 생성한다.

# install /dev/null package_list.sh


- 자동화 파일(쉘스크립트)를 작성한다.

# vi package_list.sh

-- package_list.sh --

#!/bin/sh


dirlist="/bin/* /usr/bin/* /sbin/* /usr/sbin/*"

savefile=/root/package_list.txt


cp /dev/null $savefile


for file in $dirlist

do

  echo "-- $file --" >> $savefile

  package_name=$(rpm -qf $file)

  echo "package name : $package_name" >> $savefile 

  printf "\n" >> $savefile

  rpm -qi $package_name >> $savefile

  echo "" >> $savefile

done

-- package_list.sh --


# ./package_list.sh


- 저장된 정보를 이용해서 각 명령어가 속한 패키지명과 

  패키지에 대한 정보를 확인하고 종료한다.

# vi ../package_list.txt

  :

  :


===============================================================================





===================================================================

LAB> gzip 과 bzip2 관련 명령어 살펴보기


# ls -li `which gzip`

191851 -rwxr-xr-x 3 root root 63316 Jul 22  2011 /bin/gzip

# ls -li `which gunzip`

191851 -rwxr-xr-x 3 root root 63316 Jul 22  2011 /bin/gunzip

# ls -li `which zcat`

191851 -rwxr-xr-x 3 root root 63316 Jul 22  2011 /bin/zcat


# ls -li `which bzip2`

32947 -rwxr-xr-x 1 root root 36180 Sep 21  2010 /usr/bin/bzip2

# ls -li `which bunzip2`

32776 lrwxrwxrwx 1 root root 5 Oct 17 10:50 /usr/bin/bunzip2 -> bzip2

# ls -li `which bzcat`

32777 lrwxrwxrwx 1 root root 5 Oct 17 10:50 /usr/bin/bzcat -> bzip2



# find /usr/local/java/ -name "*jar"

# find /usr/lib -name "*.a"

===================================================================



아래 사용자를 생성하시오.


 userid  passwd

user1  / khuser1

user2  / khuser2

user3  / khuser3


# useradd user1

# passwd user1


# useradd user2

# passwd user2


# useradd user3

# passwd user3


# ls /home

# tail /etc/passwd

# tail /etc/shadow


'OS > [Linux] CentOS' 카테고리의 다른 글

[CentOS] 14-1 패키지 관리 - tomcat 환경설정  (0) 2016.07.10
[CentOS] 14. 패키지 관리  (0) 2016.07.10
[CentOS] 13-1. 사용자관리체크  (0) 2016.07.10
[CentOS] 13. 사용자관리  (0) 2016.07.10
[CentOS] 12. HDD 추가하기  (0) 2016.07.10

UID, uid (유저아이디) : OS가 각 사용자에게 부여한 번호

GID, gid (그룹아이디) : OS가 각 그룹에게 부여한 번호

슈퍼유저(관리자) : root

시스템유저 : 서비스나 기타 OS에 운영에 필요한 사용자

일반유저   : 로그인하는 사용자  UID >= 500 /etc/login.defs


사용자를 생성할 때 저장되는 파일 : 

/etc/{passwd,shadow,group}


사용자를 생성할 때 변화되는 내용 : 

1. /etc/{passwd,shadow,group} 한 줄 추가

2. /home/사용자명 디렉토리가 생성

3. /var/spool/mail/사용자명  메일 스풀파일이 생성


/etc/defaults/useradd, /etc/login.defs 정의 


/etc/shells 


bin:x:1:root,bin,daemon


사용자명은 OS 전혀 상관없다. 오로지 UID 사용자를 판단한다.

/etc/passwd 비밀번호 필드의 x 를 지우면 비밀번호가 있어도 자동로그인 확인


UID : 0 

username : abc

passwd : 1234 


# useradd -o -u 0 abc

# echo 1234 | passwd --stdin abc

# ssh abc@localhost

# vipw

ksw:x:0:0:root:/root:/bin/bash


ksw:$6$YMrkwzHL$L ...



'OS > [Linux] CentOS' 카테고리의 다른 글

[CentOS] 14. 패키지 관리  (0) 2016.07.10
[CentOS] 13-2. 사용자 생성  (0) 2016.07.10
[CentOS] 13. 사용자관리  (0) 2016.07.10
[CentOS] 12. HDD 추가하기  (0) 2016.07.10
[CentOS] 11. vi 편집  (0) 2016.07.10

+ Recent posts