본문 바로가기

ETC

리눅스마스터 1급 필기 정리

 

<다중 사용자 기능을 제공하는 운영체제>

Linux, Unix, Windows XP

<GNU/FSF에서 자유 소프트웨어를 판단하는 기준 4가지>

1. 프로그램을 어떠한 목적을 위해서도 실행할 수 있는 자유

2. 프로그램의 작동 원리를 연구하고 이를 자신의 필요에 맞게 변경시킬 수 있는 자유

3. 이웃을 돕기 위해서 프로그램을 복제하고 배포할 수 있는 자유

4. 프로그램을 향상시키고 이를 공동체 전체의 이익을 위해서 다시 환원시킬 수 있는 자유

자유 소프트웨어 범주에 공용 소프트웨어가 포함된다.

<리눅스 배포판>

페도라(Fedora), 센트os, 데비안, 우분투(ubuntu), 민트(Mint), 안드로이드, Slackware, OpenSUSE, 레드햇(Rad Hat)

<부트 매니저>

여러 운영체제를 사용할 때 운영체제를 선택하여 부팅할 수 있도록 도와주는 기능.

리눅스 >> LILO, GRUB

OS/2 >> 부트 관리 프로그램

Windows >> msdos.sys

유닉스 >> LILO, GRUB

** MBR(Memory Boot Record) : 파티션 된 기억장치의 첫 섹터인 512바이트 크기의 영역으로 분할 된 파티션에서 각 파티션의 BR(Boot Record)영역을 관리하는 영역.

<분산 파일 시스템>

LAN 등 네트워크상의 여러 컴퓨터 간에 파일을 상호 공유하는 파일 시스템으로서 이를 사용하여 원격지의 컴퓨터에 있는 파일을 직접 판독 기록할 수 있다.

ex) ext3(third Extended File System), NFS(Network File System), RFS(Remote File System), DFS(Distributed File System)

<FHS(Filesystem Hierarchy Standard) 표준 파일 시스템 계층>

 

/var/log : 프로그램들의 로그 파일 저장.

/var/spool : 메일이나 뉴스, 프린터 큐 등과 같이 시스템 상에서 캐시 상태에 있는 작업들을 위한 디렉터리.

/var/tmp : /tmp 디렉터리에 저장된 임시파일들 보다 오래 보관되어야 할 임시파일 저장. 재수 부팅 시 삭제가 되지 않는다.

/var/cache : 포맷된 매뉴얼 페이지들의 캐시를 위함. 어플리케이션 캐시 데이터 저장.

< X윈도우 시스템 >

- 분산 형 개방 시스템을 개발하기 위한 목적으로 수행된 아데나 프로젝트의 일환으로 MIT에서 1984년 최초로 개발되었다.

- GUI로써 기존 GUI와 다른 점은 네트워크 프로토콜(X프로토콜)을 기반으로 한 클라이언트와 서버 모델의 네트워크 지향 그래픽 시스템이라는 것

- X 응용프로그램은 자신이 클라이언트로서 네트워크로 X서버에 접속하여 X서버에게 명령 서비스를 요청하면 X서버는 이러한 명령 요청을 받아 해당 요청을 실행한다. (돋움 글꼴을 출력한다던지 마우스 포인터를 옮긴다던지)

- X클라이언트는 X서버에서 동작하면서 서버에게 명령을 전달하고, X서버는 클라이언트에게 명령 요청의 결과를 화면에 출력해주거나 입력을 클라이언트에게 제공하는 역할을 한다.

(1) X윈도우 시스템을 이루는 3가지 요소

 

 

A) 서버, 클라이언트

- 두 개의 개별 소프트웨어 부분에 의해 제어되는 서버/클라이언트 시스템.

- 한 부분은 클라이언트에서 실행, 다른 부분은 서버에서 실행

- 클라이언트와 서버는 다른 시스템에 있거나 개인용 컴퓨터의 경우처럼 두 부분이 동일한 기계에 상주하여 실행될 수 있다.

- 일반적으로 서버/클라이언트와 다르게 X윈도우에서 서버/클라이언트 관계는 일반 사용자가 알고 있는 것도 반대다.

- X클라이언트 : 응용 프로그램을 실행하기 위해 필요한 프로그램과 자원을 제공

- X서버 : 응용 프로그램에서 수행된 결과를 출력 장치에 표시하는 역할

B) X프로토콜

- 윈도우에서 각종 처리는 클라이언트/서버 둘이 나눠서 함.

- 클라이언트는 IPC(Inter-Process Communication:프로세스 간 통신)를 이용하여 서버의 장치 입출력을 제어

- X서버와 X클라이언트의 상호작용은 메시지 교환을 통해 이루어짐. 그 메시지 형태와 사용법을 바로 X프로토콜이라고 함.

- X윈도우의 중요한 특징 중 하나가 이러한 메시지 교환이 같은 컴퓨터뿐만 아니라 네트워크를 통해서도 이루어 질 수 있다는 것. 그래서 시스템 사양이 낮은 컴퓨터 사용자도 네트워크 컴퓨터에 존재하는 X클라이언트 프로그램을 자신의 화면에 표시하여 실행시키는 것이 가능

- 프로토콜은 서버와 클라이언트 사이에서 통신되는 request, reply, event, error의 기본 메시지.

- 클라이언트가 윈도우를 생성해 달라거나 도형을 출력하라는 요구를 request queue에 넣어 서버에 보내면 서버는 하드웨어를 제어, 화면에 디스플레이한 후 답신을 보냄.

- 서버는 하드웨어로부터 들어오는 입력을 받아 event queue에 넣어 클라이언트에 보내면 클라이언트가 그에 따른 처리를 함.

C) xlib, xtoolkit

- X에서의 프로그램 개발은 시스템의 OS나 하드웨어의 의존적인 조작을 처리해주는 서버와 대화할 수 있도록 X프로토콜을 이해해야함.

- 이 X프로토콜은 xlib라는 라이브러리 루틴으로부터 발생시킴. 그러나 xlib의 기능은 많지 않고 화면에 그림 그리고 마우스에 반응하는 등 기능만 가짐. 즉, 저수준 인터페이스

- 그래서 상위 라이브러리인 xtoolkit을 사용. 향상된 쓰레딩 기능, 뛰어난 확장성, 라이브러리 크기가 작고 단순해 직접 프로토콜 접근이 가능함.

- xt intrinsics, xaw, xview, motif, Qt, GTK, XView, XCB

< 셸(SHELL) >

1) Boarne Shell - 스티븐 본 개발, 유닉스9 기본 쉘 (sh)

2) C Shell - 1978 빌 조이 C언어기반, 강력한 프로그램작성 기능, 히스토리 기능, 별명기능, 작업제어 (csh)

3) tcsh - csh의 기능을 강화시킨 셸, 명령어 완성 기능, 명령 행 편집 기능

4) ksh - Boarne shell 확장 + C shell 기능, 작업제어, 별명기능, 히스토리 기능, 명령어 완성 기능, 명령행 편집 기능

5) bash - 1989년 브라이언 폭스 개발, Boarne shell 기반, 현재 리눅스 표준 셸, sh와 호환, ksh와 csh 유용한 기능 참고

< 쉘 특수문자 >

입출력 리다이렉션 - 쉘에서 명령의 결과를 모니터로 출력하지 않고 파일로 저장 하는 것.

1) > : 표준 출력 - 명령 > 파일 : 명령의 결과를 파일로 저장

2) >> : 표준 출력(추가) - 명령 >> 파일 : 명령의 결과를 기존 파일 데이터에 추가

3) < : 표준 입력 - 명령 < 파일 : 파일의 데이터를 명령에 입력

4) 명령 >& 파일명 : 명령이 실행된 표준 출력의 결과와 에러를 파일로 출력

5) 명령 >>& 파일명 : 명령이 실행된 표준 출력의 결과와 에러를 파일로 덧붙여 출력

6) 명령 >! 파일명 : 파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과를 파일로 출력

7) 명령 >&! 파일명 : 파일의 존재 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과와 에러를 파일로 출력

8) 명령 >>!파일명 : 파일의 존재 유무와 상관없이 생성하고 파일에 덧붙여 출력

9) 명령 >>&! 파일명 : 파일의 유무와 상관없이 생성하고 명령이 실행된 표준 출력의 결과와 에러를 파일에 덧붙여 출력

10) 명령A | 명령B : 명령A의 출력을 명령B 입력으로 사용하여 실행

11) 명령A |& 명령B : 명령A의 출력과 에러를 명령B의 입력으로 사용하여 실행

< 리눅스 명령어 >

nice : 프로세스의 우선순위를 변경

nohup : 리눅스/유닉스에서 쉘 스크립트 파일(*.sh)을 데몬 형태로 실행시키는 프로그램, nohup 으로 실행하면 hang-up signal 이 와도 동작하기 때문에 터미널 연결이 끊어져도 실행을 멈추지 않습니다.

cron : 타이머 데몬으로 시간을 미리 설정해주어 그 시간에 명령을 실행하게 하는 명령어

top : 시스템 사용량 확인(Windows에서 작업 관리자에서 보는 화면과 비슷)

<OSI 7계층>

7- Application : 네트워크에서 사용할 수 있는 응용서비스를 제공

6- Presentation : 교환될 데이터의 형식을 설정하고 암호화하여 데이터 보호

5- Session : 세션을 구성하고 유지하고 파괴하는 역할

4- Transport : 사용자들이 신뢰성 있는 데이터를 주고받을 수 있도록 함

3- Network : 데이터 링크 계층에서의 물리주소와 다르게 논리 주소를 사용

2- Data Link : 데이터를 네트워크 전송방식에 맞게 프레임으로 패킷화 해서 그것을 네트워크에 전송한다. 이 때, 에러검출/정정과 흐름제어를 한다.

1- Physical

- 캡슐화 : 데이터를 전송할 때 각각의 층마다 인식할 수 있어야 하는 헤더를 붙이는 과정

- 디 캡슐화 : 데이터를 전송하고 전송매체를 통해 전송된 후 다시 1계층부터 7계층으로 올라가게 되면서 헤더가 벗겨지는 과정

 

- 출발지에서 데이터가 전송될 때 헤더가 씌어져 캡슐화가 되고, 2계층에서는 특히 오류제어를 위한 꼬리 부분이 씌워지는 것에 유의한다.

- 물리계층에서 1과0의 신호가 되어, 전송매체(꼬임쌍선, 동축 케이블, 광섬유 케이블 등)을 통해 전송된다.

- 다시 도착지로 갈 때 헤더가 벗겨지는 디캡슐레이션 과정이 이루어지고 사용자에게 데이터가 전달되는 것.

레벨

계층

기능

7

응용 계층

서비스 제공

사용자가 네트워크에 접근 할 수 있도록 해주는 계층

사용자 인터페이스, 전자우편, 데이터베이스 관리 등 서비스를 제공한다.

6

표현 계층

이해할 수 있는 포맷 변환

운영체계의 한 부분으로 입력 또는 출력되는 데이터를 하나의 표현 형태로 변환한다.

필요한 번역을 수행하여 두 장치가 일관되게 전송 데이터를 서로 이해 할 수 있도록 한다.

제어코드나 문자 및 그래픽 등의 확장자(jpg.gif,mpg)를 생각하면 쉽다.

5

세션 계층

응용간의 질서 제어

통신 세션을 구성하는 계층으로, 포트(Port)연결이라고도 할 수 있다.

통신 장치 간의 상호 작용을 설정하고 유지하며 동기화한다.

사용자 간의 포트연결(세션)이 유효한지 확인하고 설정한다.

4

전송 계층

장비 : 게이트웨이

전체 메시지를 발신지 대 목적지(종단 대 종단)간 제어와 에러를 관리한다.

패킷들의 전송이 유효한지 확인하고 실패한 패킷은 다시 보내는 등 신뢰성 있는 통신을 보장하며, 머리말에는 세그먼트(Segment)가 포함된다.

3

네트워크 계층

장비 : 라우터

다중 네트워크 링크에서 패킷(Packet)을 발신지로부터 목적지로 전달할 책임을 갖는다.

2계층은 노드 대 노드 전달을 감독하는 것이고, 3계층은 각 패킷이 시작 시점에서 최종 목적지까지 성공적이고 효과적으로 전달되도록 한다.

2

데이터링크 계층

장비 : 브리지, 스위치

오류 없이 한 장치에서 다른 장치로 프레임(Frame, 비트의 모음)을 전달하는 역할

스위치 같은 장비의 경우 MAC주소를 이용하여 정확한 장치로 정보 전달

3계층에서 정보를 받아 주소와 제어 정보를 시작(헤더)와 끝(테일)에 추가

1

물리 계층

장비 : 허브, 리피터, 케이블

물리적 매체를 통해 비트(Bit)흐름을 전송하기 위해 요구되는 기능들을 조정

케이블, 연결 장치 등과 같은 기본적인 물리적 연결기의 전기적 명세를 정하고 네트워크의 두 노드를 물리적으로 연결시켜 주는 신호방식.

3계층 4계층 차이: 쉽게 말해 3계층은 내 집을 찾아가는 것이다. 집에 5채가 있는데 우리집이 어디지? 우편번호 같은게 IP이다. 그렇게 집을 찾아갔는데 내 방이 어디지? 이것이 4계층. 4계층이 왜 필요한가? 쉽게 생각해서 내가 친구네 컴퓨터에 접속해서 스타를 하려고 한다. 친구네 컴퓨터에 접속하려면 ip를 알아야할 것이다. 그렇게 친구네 컴퓨터에 접속을 했는데, 어떤 걸 하고 싶은가? 스타? 그럼 ‘스타크래프트가 어디에 있니?’ ‘여기에 있단다~’ 라고 알려 주는 게 4계층의 역할

Application

HTTP, SSH & Scp, SMTP, FTP, Telnet, NFS, RTSP

Presentation

JPEG, MPEG, XDR, ASN.1, SMB, AFP

Sesseion

TLS, SSH, ISO 8327 / CCITT X.225, RPC, NetBIOS, AppleTalk

Transport

TCP, UDP, RTP, SCTP, SPX, AppleTalk

Network

IP, ICMP, IGMP, X.25, CLNP, ARP, RARP, BGP, OSPF, RIP, IPX, DDP

Data link

Ethernet, Token Ring, PPP, HDLC, Frame relay, ISDN, ATM, 무선랜, FDDI, MAC

Physical

전선, 전파, 광섬유, 동축케이블, 도파관, PSTN, Repeater, DSU, CSU, Modem

 

 

< 허브 종류 >

- 더비 허브 : 가장 일반적인 허브, LAN이 보유한 대역폭을 PC의 대수만큼 나누어서 제공한다는 약점이 있음. 허브에 전달되는 데이터를 연결된 모든 컴퓨터로 전달하는데 이 때, 허브에 연결된 다른 컴퓨터들은 통신을 할 수 없고 데이터 전송이 끝날 때까지 기다려야한다.

- 스위칭 허브 : 더미 허브와 비교하여 스위칭 허브는 전용 매체 교환 기술을 이용하여 트래픽 병목 현상을 제거해 각 포트 당 속도가 일정하게 보장된다.

- 스태커블 허브 : 허브 여러 대를 묶어서 마치 하나의 허브처럼 확장시킬 수 있는 허브.

- 매니지먼트 허브 : 네트워크 관리자가 SNMP(Simple Network Management Protocol)를 사용해서 원격지에서 허브를 관리할 수 있는 기능이 추가된 허브. 네트워크 관리 시스템에서 허브의 패킷 정보와 사용 률을 쉽게 파악할 수 있고, 허브의 작동과 중지 등의 원격제어가 가능.

</etc/ 파일>

- /etc/motd : 사용자가 로그인을 성공했을 때 보여줄 메시지를 저장하고 있는 파일 (로컬/원격)

- /etc/profile.d : 자동실행 할 스크립트 파일

- /etc/login.defs : 사용자 계정의 설정과 관련된 기본 값을 정의한 파일이다.

<who 명령어>

옵션

-b : 마지막으로 부트 한 시간 출력

-r : 현재 runlevel의 값을 출력

-m : 호스트 이름과 사용자 목록을 출력

-u : 로그인 중인 사용자 목록 출력

-q : 사용자 수 출력

<runlevel>

시스템 관리의 용이함을 위하여 서비스의 실행을 단계별로 구분하여 적용하는 것. 런 레벨은 0부터 6번까지 있다.

# 0 - halt (DO NOT set initdefault to this)

시스템 종료를 의미합니다. 즉, 런 레벨 0으로 변경하라는 명령을 내리면 시스템을 종료하는 것이죠.

# 1 - Single user mode

시스템 복원모드라고도 하며, 기본적으로 관리자 권한 쉘을 얻게 됩니다.

주로, 파일시스템을 점검하거나 관리자 암호를 변경할 때 사용합니다.

# 2 - Multiuser mode, without NFS (The same as 3, if you do ot have networking)

NFS(Network File System)을 지원하지 않는 다중 사용자 모드입니다.

네트워크를 사용하지 않는 텍스트 유저모드라고 할 수 있죠.

# 3 - Full multiuser mode

일반적인 쉘 기반의 인터페이스를 가진 다중 사용자 모드입니다.

쉽게 말하면 그래픽 유저 모드가 아닌 '텍스트 유저 모드'입니다.

# 4 - unused

4번은 쓰이지 않습니다. 기본적으로는 사용되지 않지만, 임의로 정의해서 사용할 수 있는 레벨입니다.

# 5 - X11

기본적으로는 level 3과 같습니다. 다른 점은 '그래픽 유저 모드' 라는 것!!!

# 6 - reboot (DO NOT set initdefault to this)

시스템 재부팅을 의미합니다. 런 레벨 6으로 변경하라는 명령을 내리면 시스템을 재부팅 하죠.

</etc/default/useradd>

useradd의 기본파일로서, useradd로 계정 생성 시에 어떤 환경과 어떤 파일들을 참조하여 새로운 계정을 생성할 것인가에 대하여 정의

- GROUP : 기본 소속 그룹

- HOME : 홈 디렉터리 경로

- INACTIVE : 패스워드 종료일 이후의 유효기간 여부 설정(0,-1,1이상의 숫자)

- EXPIRE : 계정 만료기간

- SHELL : 기본 셸

- SKEL : 홈 디렉터리 생성 시 함께 생성되는 skel 디렉터리 경로, 홈 디렉터리에 복사될 초기화 파일이 있는 디렉터리 이름

- CREATE_MAIL_SPOOL : 계정 생성 시 메일함 생성 여부

INACTIVE 의 값

1 이상의 숫자 : 10을 지정하면 패스워드 만료기간이 된 이후에 10일 동안은 패스워드가 유효

0 : 패스워드 만료기간이 되자마자 바로 패스워드를 잠궈 버림

-1 : 이 기능자체를 비활성화 함

<usermod 명령어>

옵션

-s : 셸 변경

-u : uid 변경

-d : 로그인 디렉터리 변경

-g : 그룹을 변경

-e : 계정이 종료될 날짜 변경

<finger 명령어>

사용자의 계정정보를 확인하는 명령어이다.

지정된 계정사용자 정보를 /etc/passwd 파일에서 읽어서 보여주는 것이다.

- 사용자 로그인 이름

- 사용자 홈 디렉터리

- 기본 사용 셸

- 최근 로그인 시간

<ls -l 명령어로 출력되는 정보에서 파일 유형>

- : 일반 정규 파일

d : 디렉터리

b : 블록 장치 파일(디스크 드라이버)

l : 링크 파일 (하드링크x)

<fsck 명령어>

파일 시스템을 점검하고 수리한다.

* 종료 값 *

0 - 에러 없음

1 - 파일 시스템 에러 고쳐짐

2 - 재부팅 필요

4 - 파일 시스템 에러 고치지 않고 그대로 둠(고쳐지지 않은 에러가 남아 있음)

8 - 실행 에러(코드 에러)

16 - 사용법 또는 문법에러

128 - 공유 라이브러리 에러

< cp명령어 >

파일이나 디렉터리 복사

옵션

-a : 원본 파일의 속성과 링크 정보를 그대로 유지하면서 복사

-b : 동일한 파일이 존재하는 경우 원본 파일의 복사 본을 만든다. (백업 본 파일)

-f : 같은 파일의 이름이 있을 때 강제로 덮어쓴다. (-force)

-u : 동일한 파일이 존재하는 경우 원본 파일과 비교하여 최신 날짜일 경우에 복사하지 않는다. (-update)

< mount 명령어 >

device를 특정 디렉터리로 연결시킨다.

* -o 플래그에 사용되는 옵션

ro : 읽기 전용으로 마운트

user : 일반 사용자가 사용이 가능함

exec : 실행 파일의 실행이 가능함

suid : Set-UID와 Set-GID의 사용을 허용함

<ps 명령어>

시스템에서 현재 수행되고 있는 프로세스를 확인하는 기초 명령어.

필드

- VSZ : 가상 메모리 크기

- TIME : CPU 사용시간

- RSS : 실제 사용한 메모리 크기

- PPID : 부모 프로세스 PID

< fork 명령문 >

자식 프로세스를 만들기 위한 시스템 호출

< kill 명령문 >

현재 실행중인 프로세스에 시그널을 보내는 명령어

* 시그널 *

1) SIGHUP : 재 시작. 프로세스의 설정 파일을 다시 읽는데 사용됨.

2) SIGINT : 인터럽트

5) SIGTRAP : 트랩 추적

9) SIGKILL : 강제 종료. 이 시그널은 잡히지 않는다.

15) SIGTERM : 소프트웨어 종료 시그널, 일반적으로 kill 시그널이 전송되기 전에 전송된다. 잡히는 시그널이기 때문에 종료되는 것을 트랙할 수 있다.

20) SIGTSTP : 키보드에 발생하는 시그널로 ctrl+Z 로 생성된다.

<rpm 명령어>

옵션

--nodeps : 의존성 검사를 하지 않는다.

--aid : 의존성 검사 후 의존성 패키지 설치

--test : 실제 설치를 하지 않고 설치가 성공 할 지를 검사한다.

--percent : 설치 상황의 진행률을 보여준다.(%)

-h : 패키지를 설치할 때 해시마크(#) 출력

-v : 패키지 메시지 출력

-vv : 디버깅 정보 출력

--replacepkgs : 패키지 교체, 패키지가 이미 설치된 경우라도 무시하고 다시 설치가 됩니다.

--replacefiles : 동일한 파일명이 있는 경우 교체

--oldpackage : 예전 패키지로 교체

--excludedocs : 패키지 설치 시 문서 파일은 설치하지 않음

--includedocs : 패키지 파일 설치지 문서 파일 포함

< tar 명령어 >

파일로 압축하거나 압출을 풀 때 사용하는 명령어

옵션

-x : tar 압축 풀기

-c : 새로운 묶음 파일 만듬. 파일을 tar로 묶음 (create)

-t : 묶음 파일의 내용을 보여줌

-z : 묶음 실행과 동시에 gzip으로 압축 or 해제

-v : 묶거나 파일을 풀 때 과정을 출력

-f : 파일이름을 지정

< gcc 명령어 >

GNU Compiler Collection 줄여서 GCC로 컴파일러의 모음.

-c : object 파일을 생성한다.

-L : 라이브러리 탐색 디렉터리를 지정

-D : 매크로를 지정 / 외부에서 #define 지정

-l : 헤더 파일 위치를 지정한다.

< 커널 컴파일시 사용되는 명령어 >

- make clean : 이전에 수행했던 커널 컴파일 과정에서 생성된 오브젝트 파일, 커널, 임시파일, 설정 값등을 삭제한다.

- make bzlmage : 새로운 커널 생성 (1MB를 넘을 경우 사용)

- make modules_install : 만들어진 모듈 설치

- depmod : 의존성 검사 후 modules.dep 파일 갱신

< 모듈 관련 명령어 >

- rmmod : 모듈을 커널에서 제거

- insmod : 동작중인 커널에 모듈 적재

- lsmod : 현재 커널 상에 로드 된 모듈 목록을 출력

- modinfo : 모듈 정보 확인

< 프린터 관련 명령어 >

#lpc ( /usr/sbin/lpc ) : 프린터 관리자. 프린터를 제어한다. 프린터의 상태를 확인, 큐를 활성화 또는 비활성화, 큐의 작업순서를 변경 할 수 있다.

한대의 리눅스 박스에 여러 대의 프린터가 연결 되어 있는 경우 lpc를 자주 이용한다.

#lpq ( /usr/bin/lpq ) : 기본 프린터 큐의 내용 보여줌. 현재 프린트 대기 중인 내용을 보는 명령어

#lpr ( /usr/bin/lpr ) : 파일 내용 출력

-p : 기본 설정 프린터가 아닌 다른 프린터 지정

#lprm ( /usr/bin/lprm ) : 프린터 큐의 작업을 삭제한다.

#lpstat : LP프린터의 정보 보여줌

< printenv >

print environment VARIABLE의 약자로써, 환경 변수의 값을 출력하는 명령어. 명령어 실행 시 특정 환경 변수 명을 지정하면 해당 환경 변수 값만 출력하고 환경 변수 명 없이 명령어만 실행할 경우 시스템에 있는 모든 환경 변수의 값을 출력한다.

< logrotate >

- 로그파일(시스템로그)을 rotates, compresses, mails 할 수 있다.

- 설정 파일을 변경해도 관련 프로세스를 새로 시작할 필요 없이 cron 데몬이 주기적으로 실행시켜준다.

- 로테이트 대상이 되는 로그 파일을 찾은 다음 설정에 맞게 날짜를 붙이는 방식으로 rename한다. 여기서, 기존 파일의 이름만 바꾸기 때문에 그 외의 I-node 번호와 같은 정보는 그대로이다.

- rotate 작업을 하면서 로그 파일을 압축 할 수 있다.

- rotate 후에 생성되는 파일의 소유자와 허가권을 설정 할 수 있다.

- 특정 날짜 또는 특정 용량 이상이 되었을 때 로그 파일을 rotate한다.

 

 

< 로그 파일 >

로그이름

로그 파일 명

관련 데몬

설명

시스템로그

/var/log/messages

syslogd

리눅스 커널 로그 및 주된 로그

기타 로그

/var/log/wtmp

last(명령어)

시스템 전체 사용자 로그인의 로그

메일 로그

/var/log/maillog

sendmail

popper

메일로그 (sendmail에 의한 로그)

부팅 로그

/var/log/boot.log

시스템부팅시의 로그

ftp 로그

/var/log/xferlog

ftpd

ftp로그

웹 로그

/usr/local/apache/logs/access_log

httpd

아파치(웹서버)로그

네임서버로그

/var/log/named.log

named

네임서버(DNS)로그

기타 로그

/var/log/btmp

lastb(명령어)

접속 실패 기록

 

 

 

 

 

 

 

 

- /var/log/dmesg : 시스템이 부팅할 때 출력되었던 메시지가 로그에 남겨짐.

- 시스템 로그

이 로그에 기록되는 내용은 주로 접속 시의 인증에 관한 것과 메일에 관한 내용, 그리고 시스템에 관한 변경사항 등 시스템에 관한 전반적인 로그를 기록하는 파일이다. 시스템의 표준 에러관련 메시지가 기록되는 파일로syslogd라는 데몬에 의해 설정된 사항들이 기록된다.

- 부팅 로그

시스템의 데몬들이 실행되거나 재 시작 되었을 때 기록되는 로그파일로서 위의 예는 sendmail을 재 시작했을 때 boot.log파일에 기록된 예를 보인 것이다

- btmp 로그

로그인에 실패한 기록 에 대한 정보 BTMP 파일을 볼 수 있는 명령어는 last -f /var/log/btmp 이며 많은 내용이 있을 경우 last -f /var/log/btmp | more

- wtmp 로그

처음부터 접속했던 모든 사용자의 로그인정보와 로그아웃정보

.

< syslogd 와 관련있는 파일 >

syslogd : 커널과 여러 가지 시스템 프로그램들은 각종 에러와 경고 메시지, 기타 일반적인 메시지들을 출력한다. 이런 메시지들을 파일로 기록하는 데몬.

- /sbin/syslogd : 로그 데몬의 위치 및 데몬 프로그램

- /etc/syslog.conf : 로그 데몬(syslog)의 환경설정파일, 각종 로그 파일들의 설정 및 저장 위치 지정

- /etc/rc.d/init.d/syslog : 실행과 관련된 스크립트파일로 실질적인 실행파일이다. syslogd를 실행시켜준다.

< PAM >

- Pluggable Authentication Modules의 줄임말.

- 현대 리눅스 배포 판 사용자 인증의 핵심

리눅스-PAM은 인증 작업을 4가지 독립적인 관리 그룹으로 분리한다.

*type*

1. 계정 모듈(account module) - 계정은 사용자가 해당 서비스에 접근이 허용되었는지, 패스워드가 기간이 만료가 되었는지를 결정

2. 인증 모듈(authentication module) - 비밀번호를 요청하고 검사하는 것 같이 사용자의 신원을 확인한다. 또한 인증 정보를 keyring 같은 다른 시스템들에 전달한다.

3. 비밀번호 모듈(password module) - 비밀번호 갱신을 책임진다. 또한 강력한 비밀번호 강화에도 사용된다.

4. 세션 모듈(session module) - 세션 시작과 끝에 수행되는 행동을 정의한다. 그 후 사용자는 성공적으로 인증된다. 사용자가 인증받기 전후에 해야 할 것을 나타낸다.

*control:통제*

- requisite : 이 모듈을 이용하는 인증이 실패할 경우, 즉시 인증을 거부하도록 한다.

- required : 인증이 거부되기 전에 pam에 등록된 서비스에 다른 모든 모듈을 요구함 불구하고 실패할 경우 인증을 거부하도록 한다.

- sufficient : 비록 이전에 요청되어진 모듈이 실패하더라도 이 모듈에 의해서 인증이 성공할 경우, pam 은 인증을 승인한다.

- optional : 이 모듈이 서비스에 대한 응용프로그램의 성공/실패에 중요하지 않다는 것을 의미

< tripwire >

파일의 무결성을 검사하기 위해 사용하는 프로그램

파일 변조여부를 모니터링 한다.

MD5, SHA, CRC-32등의 다양한 암호화 함수를 제공. 먼저 시스템에 존재하는 파일에 대해 데이터베이스를 구축한 후 생성된 데이터베이스와 비교하여 추가, 삭제, 변경된 파일이 있는지 점검하고 문서화 해준다.

<COPS>

- Computer Oracle and Password System의 줄임말

- 시스템 보안 감시활동을 자동화 해주는 프로그램의 집합이다.

1) 파일/디렉터리 및 장치 파일에 대한 퍼미션 점검

2) /etc/passwd, /etc/group 파일 내용 점검

3) /etc/host.equiv, [사용자 디렉토리]/.rhosts 파일내용 점검

4) suid 파일 내용 점검

5) anonymous ftp 점검

6) /etc/rc* , /etc/rc*d/* , cron 파일 점검

7) 시스템 파일, 디렉터리 소유권과 퍼미션 변화점검 등

* 실행파일 : root.chk, home.chk, pswwd.chk, dev.chk, group.chk

< 백업 정책 >

- 자료의 중요도에 따라 다른 백업 전략을 취한다.

- 백업을 한 후에 백업 테이프에 쓰기 방지를 해둔다.

- 중요한 백업 자료에는 암호화를 해둔다.

< 백업 계획을 세우기 위해 고려해야할 요소 >

- 시스템의 전체 용량

- 백업하기 위해 필요한 예산

- 백업 기기의 종류

<백업의 종류>

- A Day-zero : 시스템 사용 전 모든 파일 백업

- A Full : 주기적으로 모든 파일 백업

- A Incremental - 특정한 이벤트 후나 변경된 파일만 백업

- 단순 백업 : Full -> incremental

- 다단계 백업 : 레벨 사용

 

< cpio >

copy input or ouput의 줄임말로 백업할 때 사용하는 명령어.

파일을 아카이브 형태로 복사한다. 아카이브란 기록 보관소라고 한다.

- copy-out mode (cpio -o) : 디스크로부터 보관(archive)파일로 파일을 복사한다.

- copy-in mode (cpio -i) : 보관 파일에서 파일을 디스크로 추출한다.

- copy-pass mode (cpio -p)

- (-d) : 디렉터리를 지정하며 -o 옵션과 함께 사용할 수 없다.

- (-u) : 동일한 이름을 가진 파일에 겹쳐 쓰도록 복사한다.

< CGI >

- CGI (Common Gateway Interface)는 웹 사이트와 웹 사이트를 방문한 사람의 중간에 위치하며 사이트를 보다 유연하고 융통성 있게 만들어 주기위한 규약

- 일반적으로 HTML문서는 TV처럼 무조건 방문자에게 보여주기만 할 뿐 방문자가 원하는 것만 모아서 본다던지, 검색을 하거나 혹은 글을 남길 수가 없습니다. 이럴 때 CGI 프로그램이 홈페이지와 사용자 중간에서 여러 가지 기능을 대신 해주는 것입니다

- 본래 웹이란 것은, 일방적인 정보의 전송만이 가능했었습니다. 사용자가 요청, 서버는 보내주고, 사용자는 받는다. 이것이 전부였죠. 하지만 CGI는 그 이상의 것을 가능하게 했습니다. 사용자는 보내고, 서버가 받아서 처리한 후 사용자에게 보내주면 사용자는 처리된 결과를 받는 겁니다.

- 원래는 서버 -> 클라이언트의 일방적 모델인 웹(HTTP)이 서버 <->클라이언트의 양방향성을 지니게 된 것입니다.

< 가상 호스트 >

1) IP-based Virtual Hosting : 한 개 또는 그 이상의 서버에 여러 개의 ip지정

2) Name-based Virtual Hosting : 하나의 ip서버에 여러 개의 도메인 지정

3) Port-based Virtual Hosting : 하나의 도메인에 여러 포트 설정

< 아파치 설치 디렉터리 >

1) /conf : 아파치 서버의 여러 가지 설정 파일들이 들어있다.

2) /icon : 아파치 서버에서 사용되는 아이콘들이 들어 있다.

3) /cgi-bin : 아파치 서버에서 구동 되는 CGI 스크립트 또는 바이너리가 들어 있다.

< 아파치 설정 파일 >

DocumentRoot "/usr/local/apache/htdocs" : 웹 문서의 기본 경로를 설정해주는 지시자

< SSL >

- Secure Sockets Layer의 줄임말

- SSLCertificateKeyFile은 보안 가상 호스트 설정 시 비밀 키 이름과 그 위치를 아파치에게 알려주는 역할

- SSL은 TCP와 응용계층 사이에 존재하는 표현계층 서비스로 플랫폼과 어플리케이션에 독립적이다. -> 5계층 (세션계층)

- SSL은 기본적으로 443번 포트를 사용한다.

- 클라이언트가 최초 서버 접속 시 서버의 공개키를 받아서 인증한 후 최종적으로 메시지는 RPC를 통해 세션키(대칭키)를 이용하여 암호화한 후 주고 받는다.

< PostgreSQL >

- 객체-관계 형 DBMS 이다.

- 고수준의 확장 가능한 관계 형 DBMS가 가지고 있는 거의 모든 기능을 지원한다.

- 사용자 정의 오퍼레이터와 타입, 함수, 엑세스 메서드를 지원한다.

- 상속, 객체와 같은 객체 지향에서 볼 수 있는 특징을 구현하고 있다.

- Ingres에서 파생되었다.

< 삼바서버 >

- 삼바 서버 설정 파일 ( /etc/samba/smb.conf )

- 윈도우와 리눅스 pc간에 프린터, 데이터교환을 위해 리눅스에 pc에 설치

--> 윈도우 pc의 파일탐색기로 리눅스 pc에 접근하여 파일을 읽고 쓸 수 있다.

* 4가지 모드 *

1) user : 삼바서버에 접속하는 클라이언트는 먼저 반드시 윈도우 시작 시 사용자명과 패스워드로 로그인한 후에 삼바 서버에 접속할 때 같은 사용자명으로 패스워드를 확인한 후에 접속

2) share : 유효한 사용자 명과 패스워드로 삼바서버에 로그인하지 않아도 서버에 접속 할 수 있게 한다.

3) server : 윈도우 NT와 같은 다른 삼바 서버가 존재해야하며, 다른 삼바서버에 사용자명과 패스워드를 전달하여 올바른지 확인한다.

4) domain : 윈도우NT 서버가 있어야 가능하며, 삼바서버가 사용자명과 패스워드를 윈도우NT 도메인 컨트롤러에 전달하여 유효한지 확인한다.

* 실행파일 *

1) testparm : smb.conf 파일의 구문이 정확한가를 검증한다. 삼바 데몬을 실행하기에 앞서 이 유틸리티로 문법 적합성 검사를 해야 한다.

2) smbstatus : 현재의 삼바 연결 상태를 보여준다.

3) smbclient : 유닉스를 위한 삼바클라이언트 명령어로 윈도우의 서버로 접근하기 위해 사용한다.

4) smbmount : 공유된 윈도우폴더를 유닉스에서 마운트할 때 사용하는 명령이다.

5) smbprint: 삼바 호스트의 프린터에 프린트를 하기 위한 스크립트

6) smbprint.sysv: smbprint와 같지만 System V계열 유닉스에서 사용한다.

7) smbrun: 삼바 호스트의 응용프로그램 실행을 용이하게 하는 스크립트이다.

8) nmblookup : WINS 서버에 질의할 때 사용하는 명령이다. DNS서버에 질의하는 nslookup명령과 유사 하다.

< WINS >

- 네트워크에 있는 컴퓨터와 그룹에 대한 NetBIOS 이름에 대응되는 ip주소를 찾아주는 서버

- WINS 서버에 A컴퓨터와 B컴퓨터가 등록이 되어 있다면 A컴퓨터가 B컴퓨터를 찾으려 할 때, WINS서버를 통해 빠르게 찾을 수 있다.(어떤 컴퓨터가 ON/OFF 되어 있는지 확인 가능)

- WINS 서버 구성 : 서버에서 WINS 서버 설치 -> 클라이언트 컴퓨터에서 WINS서버를 하나씩 수동으로 등록

 

<NFS>

- 리눅스 시스템 간 파일의 공유를 목적으로 개발한 프로토콜

- TCP/IP 네트워크 속해 있는 리눅스 시스템의 파일 시스템 일부를 마운트하여 마치 자신의 디렉터리처럼 사용 할 수 있도록 해준다.

- Network File System의 약어로 다른 호스트에 있는 파일시스템의 일부를 자신의 디렉터리처럼 사용할 수 있도록 해주는 것.

- 하나의 서버에 디스크를 집중 관리하고 그것을 공유하여 나머지 시스템들이 사용할 수 있게 해주는 것이다.

- 서버는 클라이언트에 의해 공유될 파일을 유지하기 위한 디렉터리(/share)를 생성하며, 이를 공유 디렉터리라 한다.

- 클라이언트는 서버의 /share 디렉터리를 자신의 /mnt/myshare 디렉터리에 마운트 한다.

- 마운트 된 디렉터리에 접근함으로써 /share를 사용할 수 있게 된다. 예를 들어 서버 관리자가 /share 디렉터리에 생성된 파일을 사용할 수 있다.

- 서버는 먼저 공유 디렉터리 (/share)를 띄어 놓고 클라이언트의 마운트 요청을 기다린다. 이를 익스포팅(exporting) 이라 한다.

- 클라이언트가 RPC를 통해 공유 디렉터리의 마운트를 요청하면 서버는 클라이언트의 마운트 요청을 허가함으로써 NFS 서비스가 이루어진다.

- NFS 클라이언트는 /etc/fstab 파일에 서버로부터 마운트할 디렉터리에 대한 정보를 가지고 있다

- . rpc.mountd는 클라이언트에서 작동하는 데몬이며, 마운트 요청을 서버에 보내는 데몬이다.

- . rpc.nfsd 는 서버에서 작동하는 데몬이며, 파일시스템 요청을 처리한다.

* /etc/exports *

- NFS 서버의 공유 목록을 관리하는 파일

- 설정형식 : 공유 디렉터리 접근할 호스트 (옵션)

ex) /backup 121.156.48 (rw, all_squash)

- 설정옵션

rw - 읽기/쓰기 기능

ro - 읽기만 가능

secure - 클라이언트 마운트 요청 시 포트를 1024이하로 한다.

no_root_squash - 클라이언트의 root와 root를 동일하게 한다.

< NFS 유틸리티 >

- nfsstat : NFS 서버와 클라이언트의 상태를 보여줌

- nhfsstone : NFS를 벤치마킹하기 위한 프로그램으로 시간당 부하 수, 전송율, 실패율 등의 NFS와 관련된 데이터를 제공한다.

- showmount : NFS 마운트 정보를 보여준다. mount 데몬에 NFS 서버에 대해 질의하여 사용 중인 상태를 표시하는 명령어로 옵션 없이 사용하면, 해당 호스트에 접속한 사용자를 볼 수 있다

1. 사용법 : showmount [옵션] [호스트]

2. -a, --all : 호스트명:디렉토리 형식으로 모든 원격 마운트 정보를 보여준다. 호스트명은 클라이언트의 이름이고 디렉토리는 마운트 된 파일시스템의 디렉토리의 정보이다.

3. -d, --directories : 클라이언트에서 원격으로 마운트한 디렉터리 목록을 보여준다.

4. -e, --exports : export된 디렉터리의 목록을 보여준다.

5. -h, --help : 도움말을 보여준다.

6. -v, --version : 버전 정보를 보여준다.

< Proftpd >

- 파일전송 프로토콜인 FTP의 일종으로 보안 적이고 신뢰적인 FTP 서버가 되기를 희망하고 발전 하며 아파치 설정파일과 접근 설정 방식을 따른다.

* 명령어

- CWD : 디렉터리를 변경하는 경우 (change work directory)

- RETR : 서버에서 클라이언트로 파일을 전송하는 경우 (RETRieve)

- RNTO : 디렉터리 이름 바꾸는 명령어 (ReNameTO)

- RNFR : 디렉터리 이름 바꾸는 명령어 (ReNameFoRM)

< proftpd.conf의 익명 사용자에 대한 설정 >

- <Anonymous ~ftp> : ftp user의 홈 디렉터리에 대하여 anonymous로 ftp에 접속할 때 어떠한 제한을 할지 설정

- <Directory [디렉터리 이름] > : 지정 디렉터리

- <Limit STOR> : 디렉터리에 저장 기능/ 디렉터리 만들 수 있는 기능

- <Limit READ> : 디렉터리 읽기 기능

< sendmail 환경설정 파일 >

- /etc/mail/access 및 access.db : Relay 제한 및 설정 파일, 각종 접근 설정이 저장되는 파일이다.

- /etc/aliases 및 aliases.db : 엘리어스 설정파일, 메일링 리스트를 운영 할 때 또는 특정 ID로 들어오는 메일을 여러 사람들에게 전달할 때 사용된다.

- local-host-names : 최종수신지 설정파일

- sendmail.cf : 설정파일, sendmail의 환경 설정 중 가장 중요한 파일로, sendmail은 메일을 보내고 받을 때 마다 sendmail.cf 파일을 해석하여 실행한다.

- SMTP (Simple Mail Transfer Protocol) : 클라이언트가 메일을 보내거나, 메일 서버끼리 메일을 주고받을 때 적용되는 프로토콜

- POP3(Post Office Protocol) : 메일 서버에 도착되어 있는 메일을 클라이언트로 가져올 때 적용되는 프로토콜

- IMAP(Internet Mail Access Protocol) : POP3와 동일

 

 

 

 

 

 

 

 

 

 

 

 

- MTA : MUA로 의해서 전달 받은 메시지를 다른 메일 서버로 전달해 주는 프로그램(Qmail, Sendmail)

- MUA : 사용자가 메일을 보내기 위해 사용하는 프로그램 (Outlook, Mozilla Thunderbird 등등)‘

- MDA : MTA가 수신한 메시지를 사용자의 우편함(계정에 맞는 폴더로 메일을 저장)에 쓰기 위한 프로그램

** 동일한 로컬 호스트 일 때 MTA가 작동하지 않고 MDA가 실행된다.

- MRA : 리모트 서버에 있는 우편함으로부터 사용자의 MUA로 메시지를 가져오는 프로그램

< SMTP >

- Simple Mail Transfer Protocol

- TCP/IP의 상 /위층 응용 프로토콜의 하나

- 인터넷에서 전자 우편 기능을 사용하는 프로토콜로 사용

- 최근에는 그림과 소리를 메일 메시지에 포함 시킬 수 있다.

- RFC 2821에 규정되어 있다.

< Relay에 대한 설정 >

- OK : 지정된 호스트나 사용자에게는 무조건 메일 수신

- REJECT : 지정된 도메인의 모든 메일을 송수신 거부

- DISCARD : 지정된 도메인에게서 메일을 받아 모두 폐기

- 501 : 지정된 메일 주소와 일치하는 메일 수신 거부

< 데몬 >

- 시스템 관련된 작업을 하는 후위프로세스 (background process)

- 대부분 데몬들은 시스템이 부팅되면서 시작

- 서비스 요청이 없을 때는 후위 프로세스로써 유휴상태(Idle)에 들어가 있게 되어 시스템의 cpu를 차지하지 않지만 메모리와 기타 자원을 상당 수 차지하게 된다. 그래서 많은 데몬을 띄우려면 그만큼 시스템에 자원을 많이 가지고 있어야한다.

 

<슈퍼데몬(xinetd)>

- inetd의 문제점을 보완하고 기능이 추가된 확장 판

- 리눅스 서버에서 서비스되는 다른 여러 가지 데몬들을 제어하면서 각각의 서비스들의 연결을 담당

- 인터넷 서비스에서 여러 개의 데몬을 함께 관리한다.

- /etc/xinetd.conf 에 포함된 여러 개의 데몬은 독자적으로 실행되지 않고 슈퍼 데몬에 의해서 실행된다.

- 슈퍼 데몬은 /etc/xinetd.conf 설정 파일을 읽고 /etc/services 파일에 설정된 포트 번호에 대해서 클라이언트의 요청이 있을 때 각 데몬을 실행 한다.

ex) xinetd 슈퍼 데몬에 의해 제어되는 telnet 데몬 서비스이다.

누군가 telnet 서비스에 접속을 시도하면 바로 telnet에 연결 하지 않고 슈퍼데몬인 xinetd에 의해 허가된 사용인가를 검사 받은 후에 xinetd의 telnet설정파일(/etc/xinetd.d/telnet)에 정의 되어있는 telnet서비스 데몬과 연결되어 사용자는 telnet을 이용한다.

- telnet, finger, ftp, shell, login 등이 있다.

< DNS >

- IP 주소를 인간이 기억하기 편한 언어체계로 변환하는 역할

 

 

 

 

 

 

 

 

 

 

 

< DNS 레코드 >

- 호스트(A) 리소스 레코드: DNS(Domain Name System) 도메인에 ip를 부여하는 레코드

- 별칭(CNAME) 리소스 레코드: 별칭 DNS 도메인 이름을 다른 주 이름이나 정식 이름에 매핑 합니다. 도메인 명을 다른 다른 도메인과 맵핑할 때 사용.

- MX(메일 교환기) 리소스 레코드: 해당 호스트의 메일 라우팅 경로를 조절하는 레코더이며 메일을 사용하기 위해서는 필수로 설정 해주어야한다.

- PTR(포인터) 리소스 레코드: 컴퓨터의 정 방향 DNS 도메인 이름을 가리키는 해당 컴퓨터의 IP 주소에 기반한 역방향 DNS 도메인 이름을 매핑 합니다.

즉, ip주소에 대해 도메인 명을 매핑하여 주는 역할

- 서비스 위치(SRV) 리소스 레코드: DNS 도메인 이름을 Active Directory 도메인 컨트롤러와 같은 특정 유형의 서비스를 제공하는 지정된 DNS 호스트 컴퓨터의 목록에 매핑합니다.

- SOA : Start Of Authority 권한 시작 레코드로, 해당 DNS 서버 자체의 설정 정보를 정의 한다.

 

 

 

 

< DNA zone 파일 >

Zone 파일 내용은 보통 아래와 같이 사용한다.

$TTL 86400

@ IN SOA dns.yongbok.net. ruo91.yongbok.net. (

2009111614 ; Serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

86400 ) ; Minimum

@ IN NS dns.yongbok.net.

@ IN NS dns2.yongbok.net.

;

MX 10 mail.yongbok.net.

MX 20 mail2.yongbok.net.

MX 30 mail3.yongbok.net.

MX 40 mail4.yongbok.net.

MX 50 mail5.yongbok.net.

;

A 124.51.213.64

www A 124.51.213.64

ftp A 124.51.213.64

ruo91 A 124.51.213.64

;

; CNAME

www2 IN CNAME www

nate.yongbok.net. IN CNAME www.nate.com.

1. SOA 레코드 (Start Of Authority)

- 해당 도메인에 대해서 네임서버가 인증된 데이터를 가지고 있음을 의미하며 해당도메인에 대해 네임서버가 최적의 상태를 유지할 수 있도록 해주고 SOA 레코드의 앞에는 @ 를 보통 많이 쓰게 한다.

- SOA레코드 뒤에 괄호로 묶인 부분에는 Serial, Refresh, Retry, Expire, Minimum 5개의 시간 필드가 놓인다.

Minimum을 제외한 나머지 필드는 Secondary를 제어하기 위한 필드이며 초 단위가 기본.

- Serial

2차 네임서버가 Zone 파일의 수정여부를 알 수 있도록 하기 위한 옵션입니다.

1차 네임서버와 2차 네임서버를 운영중 일때 1차 네임서버의 Zone 파일의 내용이 변경 되면 반드시 Serial 를 증가 시켜줘야 2차 네임서버가 자신의 현재 Serial 를 비교하여 값이 작다면 Zone 파일의 정보를 갱신을 하게 됩니다. 2차 네임서버를 사용하지 않는다면 Serial 은 의미가 없습니다.

- Refresh

1차 네임서버의 Zone 파일 수정 여부를 2차 네임서버가 검사를 하기위한 옵션입니다.

Zone 파일의 정보 변경이 잦을 경우 이 주기를 10800(3H)이하로 맞추어주는 것이 효과적이며 일반적으로는 43200(12H)정도가 적당합니다.

- Retry

2차 네임서버에서 1차 네임서버로 연결이 되지 않을 경우 재접속을 요구하는 옵션입니다.

Refresh 보다 적어야만 의미가 있기 때문에 주의를 요합니다.

- Expire

Secondary가 Expire에서 지정한 시간동안 primay에 연결하지 못 할 경우, 해당 도메인이 유효하지 않다고 보고, 해당 도메인에 대한 정보를 전송하지 않는 것 입니다.

이 값은 너무 낮게 설정하지 않는 것이 좋습니다.

- Minimum

제 3의 네임서버.. 즉, 다른 네임서버가 본 서버의 Zone 파일의 정보를 가지고 갔을 경우 그 정보에 대해 캐쉬에 살아있는 시간을 설정하는 것입니다. TTL(Time To Live )값이 명시되지 않은 레코드는 본 값을 기본으로 갖게되며 특정 레코드가 변경이 되었을 때, 이것이 다른 네임서버로 정보가 전달되어 업데이트가 되는 주기는 Minimum의 값을 기본으로 합니다. 일반적으로 10800(3H)가 적당합니다.

2. NS 레코드(Name Server)

DNS 서버로 사용할 도메인을 설정을 하게 해줍니다.

@ IN NS dns.yongbok.net.

@ IN NS dns2.yongbok.net.

위는 NS레코드의 기본적인 설정 내용이며 2개 이상의 네임서버를 사용하고자 할 때에는 아래와 같이 계속 늘려주기만 하면 된다.

@ IN NS dns.yongbok.net.

@ IN NS dns2.yongbok.net.

@ IN NS dns3.yongbok.net.

@ IN NS dns4.yongbok.net.

@ IN NS dns5.yongbok.net.

DNS 서버를 여러 개 사용할 경우 A 레코드를 사용하여 RR(Round Robin) 방식을 사용해야 한다.

3. A 레코드(Address)

A 레코드는 해당 도메인에 IP를 부여할수 있다.

A 124.51.213.64

www A 124.51.213.64

ftp A 124.51.213.64

ruo91 A 124.51.213.64

NS에서 설정한 도메인은 모두 A레코드로 설정해야 제대로 작동이 가능합니다.

위의 NS 레코드에서 여러 개의 도메인 서버를 사용하고자 할 때에는 A 레코드로 RR(Round Robin)을 설정 합니다.

@ IN NS dns.yongbok.net.

@ IN NS dns2.yongbok.net.

@ IN NS dns3.yongbok.net.

@ IN NS dns4.yongbok.net.

@ IN NS dns5.yongbok.net.

즉, 위와 같은 DNS 서버를 5개 사용할 경우 A 레코드에는 해당 서버의 아이피를 부여 해주셔야 합니다.

dns A 124.51.213.64

dns2 A 124.51.213.65

dns3 A 124.51.213.66

dns4 A 124.51.213.67

dns5 A 124.51.213.68

4. CNAME 레코드(Canonical Name)

다른 도메인으로 알리아스(Alias)를 시킬 때 사용하는 레코더.

www2 IN CNAME www

nate.yongbok.net. IN CNAME www.nate.com.

www2 로 접속을 하면 www.yongbok.net 으로 맵핑.

또 nate.yongbok.net 로 접속을 하면 www.nate.com 으로 맵핑.

5. MX 레코드(Mail eXchanger)

해당 호스트의 메일 라우팅 경로를 조절하는 레코더이며 메일을 사용하기 위해서는 필수로 설정을 해야함.

MX 10 mail.yongbok.net.

MX 20 mail2.yongbok.net.

MX 30 mail3.yongbok.net.

MX 40 mail4.yongbok.net.

MX 50 mail5.yongbok.net.

위와 같이 메일서버의 순서를 정하며 각각의 메일 서버는 A 레코드로 메일 서버의 아이피를 부여 해줘야함.

여기서 주의할 점은 CNAME로 설정한 정보는 아래와 같이 MX레코드에 사용해서는 안 된다.

mail.yongbok.net. IN CNAME dns.yongbok.net.

@ IN MX 10 mail.yongbok.net.

이렇게 사용하게 되면 메일이 도착하지 않을 가능성이 큼.

6. PTR 레코드(Pointer)

- A 레코드와 상반된 개념.

- 즉, A 레코드는 도메인에 대하여 아이피를 부여 해줬지만 PTR 레코드는 IP주소에 대해 도메인 명을 매핑하여 주는 역할.

- 보통 Reverse Zone 파일에서 사용.

5 PTR yongbok.net

5 PTR www.yongbok.net

5 PTR ftp.yongbok.net

5 PTR ruo91.yongbok.net

<DNS 서버의 종류>

- 자신의 도메인을 가지기 위해서는 가장 기본이 되는 것이 주네임 서버이고, 보조 네임 서버 및 캐싱 서버는 보조 및 백업 서버 혹은 속도를 빠르게 하기 위해서 필요한 서버이다.

- 보조 네임 서버는 주네임 서버가 다운되었을 경우를 대비해 백업할 경우에 사용하고, 캐싱 서버는 한 번 요청한 정보를 서버에 기록해 두었다가 다시 동일한 요청이 왔을 때 직접 조회하지 않고 바로 응답해주는 서버.

- 주네임 서버

- 보조 네임 서버

- 캐싱 서버

< named 데몬 >

- /etc/named.conf : named 데몬의 설정파일

- DNS 서버를 구축하고자 할 때 가장 많이 접근해야 하는 파일

- 개별도메인 설정을 위한 zone파일의 위치, named.ca파일, named.local파일 등에 대한 정보

< /etc/named.conf >

1. directory "/var/named"

DNS서버에 있는 zone파일들의 위치. 즉, 네임서버 DB파일들이 존재하는 위치를 지정해주는 부분. /var/named 디렉토리에 가보면 zone파일들이 있을 것이다.

2. allow-query {any;}

네임 서버는 하나의 네임서버만 있는 것이 아니고 하나의 DNS 서버에는 여러 개의 네임서버를 가져올 수 있다. 이 항목을 허용하겠냐는 것이다. 즉, 추가 되는 네임서버를 허용하겠느냐 라는 것!

3. recursion no;

재 시도를 말한다. 예를 들어 1차 네임서버에 대해 요청을 했을 때 2차 그다음 3차로 계속 간 후 마지막을 4차로 하자. 그렇게 되면 4차 네임서버 까지 요청을 했을 때 다시 1차 네임서버로 질의를 할 것인지를 yes no하는 항목이다.

4. zone "." IN {

type hint;

file "named.ca";

};

이 부분은 DNS의 루트도메인에 대한 설정을 named.ca 파일에 하고 있다라는 설정. hint는 루트도메인 지정, master는 1차 네임서버, slave는 2차 네임서버이다.

5. include "/etc/rndc.key";

이 부분은 named와 rndc가 사용할 인증키 값을 저장하고 있는 파일의 이름으로 /etc/rndc.key파일을 지정한 것이다. (원격접속)

 

6. zone "naver.com" IN {

type master;

file "naver.com.db";

};

이 부분은 개별도메인에 대한 설정이다. naver.com이라는 도메인에 대해서 설정한다. 라는 의미이며 naver.com.db파일을 zone파일로 하여 네임 서비스를 하겠다. 라는 설정이다. file에 명시되어 있는 파일은 /var/named/chroot/var/named/디렉토리 내에 존재하게 된다. type은 master이기 때문에 지금 설정하고 있는 서버가 naver.com의 도메인에 대한 1차 네임서버라는 의미이다. (naver.com은 사설네트워크에서 조작하고 있기 때문에 실제 우리가 사용하는 naver.com과는 완전 다르다.)

< proxy 서버 >

일종의 대리인 이다. 클라이언트가 서버로부터 웹 페이지를 요청할 때, 그 요청을 Proxy 서버가 받고 다시 서버에게 전달한다. 서버는 클라이언트에게 응답을 Proxy 서버가 받은 후 클라이언트에게 전달한다.

▶ Proxy Server를 사용 하는 이유?

▷ 서버 대역폭의 절감

▷ 보안강화

▷ 웹 서버 속도 증가

▷ 인터넷의 접속제한 여부 설정으로 인한 유해사이트 접근제어

▶ Squid 란?

▷ 리눅스에서 사용하는 프록시 서버 프로그램.

▷ HTTP, FTP 캐싱, DNS 검색 지원

 http://www.squid-cache.org 에서 Squid 버젼 등을 확인 및 다운 받을수 있다.

▶ Squid 를 사용 하는 이유?

▷ 웹 서버 성능을 극대화하고 httpd 가속서버로 구성

▷ 일반적인 프록시 캐싱서버로 구성하여 조직 내의 모든 사용자들로 하여금 Squid를 통해서만 인터넷에 접근 통제

▷ 보안효과, 시스템 자체의 속도 향상

▷ 다른 응용프로그램의 불필요

▶ squid.conf

▷ squid 프로그램의 설정파일

▷ 웹 가속모드 설정, 프록시 캐싱모드 설정 등등 성능향상을 위한 설정들이 많다

- 방화벽을 넘어서 인터넷으로의 직접 접속을 허용하는 구조물.

- IP를 바꾸기 위한 용도로 많이 사용되고 있다.

- PC와 외부인터넷 사이의 징검다리 역할

- 캐시기능, 외부 인터넷의 침입을 막는 방화벽과 관련

- 사용자가 웹브라우저를 이용하여 인터넷 이용 시 느린 속도록 보완해준다.

- 사용자가 이전에 방문하지 않은 사이트 방문 시 자신의 IP를 이용해 외부 인터넷 접속을 대행한다.

- 이미 방문한 웹 사이트는 캐시에 미리 저장한 후 재접속 시 캐시 서버에 저장된 내용을 보여준다.

< NIS >

- Network Information System

- 그룹의 컴퓨터들에 정보를 배포하는 방식

- 패스워드, 그룹, 호스트, 통신망, 프로토콜 등의 데이터베이스 파일이 있으며 다른 머신에 접근 가능

- 여러 대 컴퓨터에 있는, 여러 사람들의 data와 계정을 한 곳에서 관리할 때 NIS를 구축!

- ypbind : 모든 NIS시스템에서 동작하며 NIS서버 위의 클라이언트에서 ypserv로 nis 요청 시도.

- NIS 클라이언트들은 항상 서버로부터 서버의 DBM 데이터베이스에 저장된 정보를 읽는다.

- 슬레이브 서버는 단지 NIS 데이터베이스의 복사본을 가지고 있다.

- NIS 데이터베이스들은 ASCII 데이터베이스로부터 상속된 DBM 포맷 안에 있다.

< DHCP 서버 >

- Dynamic Host Configuration Protocol

- 네트웍 관리자들이 조직 내의 네트웍 상에서 IP주소를 중앙에서 관리하고 할당해줄 수 있도록 해주는 프로토콜

- 각 호스트의 중요한 네트워크 설정 사항을 서버에서의 설정을 이용하여 원격으로 설정해 준다.

- Bootp와 호환을 유지한다.

< CVS >

- Concurrent Versions System의 약자로 프로젝트 개발 시 여러 사용자가 함께 작업을 할 때 상호간 버전 관리를 해주는 프로그램

- 프로젝트 수행 절차 : 저장소 초기화 -> 프로젝트 초기화 -> 작업 공간 마련 -> 프로젝트 작업

** Repository(저장소): CVS가 버전 관리를 하기위해 소스 코드를 저장해 놓는 공간이다. 사용자가 작업하는 공간이 아님.

** Work directory(작업 공간): 사용자가 작업하는 공간이다.

- 프로젝트 추가 : cvs import -m "log" project_name vender_tag release_tag

** -m : log message 내용을 같이 저장한다. 생략해도 되지만 해당 버전을 기억하기 위해 남기는 것이 좋다.

- 프로젝트 갱신(저장소와 작업 공간 동기화) : cvs checkout project_name

- 변경내용의 저장 : cvs commit -m "log"

** commit 또는 ci 라고 사용해도 된다.

- 폴더 추가 : cvs add folder_name

<CVS 사용하기 전>

1. CVS를 사용하기 위해서는 먼저 repository를 설정해 주어야 한다.

그럼 먼저 사용자가 원하는 곳에 저장소 디렉토리(A)를 만들어준다.

예) ~/CVS/

그 다음 그 하위 디렉토리로 반드시 CVSROOT라는 디렉토리를 만들어 주어야 한다.

예) ~/CVS/CVSROOT/

2. 그리고 나서 이를 환경 변수 CVSROOT로 설정해 주면 되는데

csh이나 tcsh같은 경우에는

setenv CVSROOT repository_dir

sh이나 bash같은 경우에는

CVSROOT = repository_dir

이를 환경변수로 설정해 주면 된다. (repository_dir = 저장소 디렉토리(A))

이렇게 하면 앞으로 진행하는 프로젝트는 저장소 디렉토리(A)에 저장되게 된다.

(c.f. 만약 이미 다른 사용자가 지정해 놓은 저장소 디렉토리가 있다면, 저장소를 만들어줄 필요없이 2. 환경 변수 설정만 해 주면 된다.)

3. 이후 CVS를 사용하기 위해서는 로그인을 해야하는데, 한번 로그인을 하면 그 내용이 계속 저장되므로 딱 한번만 해 주면 된다.

로그인 하는 방법은 다음과 같다.

cvs -d :pserver:user_id@cvs.hostname.com:repository_dir login

여기서

user_id: 사용자 계정

cvs.hostname.com: 서버 IP

repository_dir: 저장소 디렉토리(A)

이렇게 하면 CVS를 사용할 준비가 다 끝난 것이다.

 

<CVS에 프로젝트 등록>

CVS를 사용하는 방법은 예제로 알아보도록 한다.

먼저 예제를 위해 작업공간(B)을 만들어 보도록 하자.

~/test

라는 디렉토리를 만들고

~/test/a.txt

라는 파일을 만들어 적당한 내용을 넣어준다.

1. CVS에 프로젝트 등록

cvs import -m "Log message" project_name(C) vendor_tag release_tag

와 같이 해 주면 새로운 프로젝트가 저장소 디렉토리(A)에 등록되게 된다.

예제를 통해 직접 해 보면,

중요한 것은 프로젝트로 올릴 디렉토리의 내에서 이 작업을 해야한다는 것이다.

즉 ~/test/에서

cvs import -m "Imported source" test vt start

같이 해 주면 저장소 디렉토리(A)에 test라는 디렉토리가 생기면서 저장공간이 생긴 것을 확인할 수 있다.

2. 저장소(A)와 작업공간(B)의 동기화

여기까지 진행했다면 CVS에 프로젝트를 등록한 상태이지만

아직 저장소(A)와 작업공간(B)가 동기화되어 있는 상태는 아니다.

이는 작업공간(B) (예: ~/test/) 밑에 CVS라는 디렉토리가 생성되지 않은 것을 통해 확인할 수 있다. 동기화되어 있는 작업공간의 경우 그 밑에 CVS라는 디렉토리가 있다.

동기화 작업은 다음과 같다.

일단 처음에 프로젝트로 등록해 주었던 작업공간을 지워야 한다.

~ (home)에서

rm -rf test

해 주어서 기존의 작업공간을 지우고

~ 에서

cvs checkout project_name(C)

이라고 해주면

~/project_name

이라는 디렉토리가 생기면서

동기화된 작업공간이 생긴 것을 확인할 수 있다.

여기에서는 1에서 project_name을 기존의 작업공간과 같은 test라고 사용했으므로,

~/test에 들어가서 그 내용을 확인해보면 기존의 test에 있던 a.txt가 존재하는 것을 확인할 수 있고 추가로 ~/test/CVS 디렉토리가 생긴것을 확인할 수 있을 것이다.

여기까지 진행했다면 이제 CVS에 프로젝트를 등록하는 작업을 마친것이다.

 

<CVS 사용방법>

이제 등록된 프로젝트 내 작업공간(B)에서 작업을 하는 과정에서 해주어야 하는 것에 대해서 알아보도록 하자.

1. 작업공간(B)의 수정된 소스를 저장소(A)에 등록

cvs commit [-m "log message"] [filename]

또는

cvs ci [-m "log message"] [filename]

-m을 사용하였을 경우 log message의 내용을 같이 저장한다.

이는 생략해도 되지만 해당 버전의 내용을 기억하기 위해서 log message를 꼭 남기는 습관을 들이자.

filename을 명시해줄 경우 해당 파일을 저장소에 저장하고,

명시하지 않을 경우 해당 디렉토리와 그 하위 디렉토리의 수정된 파일의 내용을 저장소에 모두 저장하게 된다.

 

2. 저장소(A)에 있는 최신버전을 작업공간(B)으로 가져오기

cvs update

저장소에 있는 해당 디렉토리와 그 하위 디렉토리에 있는 최신 내용을 모두 가져온다.

여기에 옵션을 붙여

cvs update -dP

를 실행시키면 저장소(A)를 체크하여 비어있는 디렉토리는 작업공간(B)에서 지우고,

저장소(A)에 비어있지 않은 디렉토리는 작업공간(B)에 모두 복사해온다.

 

3. 파일의 로그 보기

cvs log filename

filename의 버전 로그를 본다.

 

4. 새로운 파일이나 디렉토리 추가하기

CVS는 오로지 저장소(A)에 있는 파일과 디렉토리의 버전만을 관리해 준다.

그러므로 프로젝트 중 새로 생성된 파일은

저장소에 버전관리할 새로운 파일과 디렉토리가 생겼다는 사실을 알려주어야 한다.

이는

cvs add new_filename

cvs add new_dirname

을 통해서 할 수 있다.

이렇게 해주면 저장소(A)에 버전관리할 새로운 파일이나 디렉토리가 있다는 사실만을 알려준 것이지 그 내용을 저장한 것은 아니다.

그래서 이후

cvs ci new_filaname

cvs ci new_dirname

을 통해 그 내용을 반드시 저장소에 저장해 주어야 한다.

한 디렉토리 내에서 여러 파일이 추가되어야 한다 하는 경우에는

cvs add *

cvs ci

이렇게 해주면 그 디렉토리에 있는 새로 생성된 파일은 저장소(A)에 저장되게 된다.

여기에서 약간 불편한 점이 생기는데,

만약 추가되어야 할 디렉토리가 hierarchy를 이루고 있다면, 즉 해당 디렉토리와 그 하위 디렉토리도 새롭게 추가되어야 한다면 다른 명령어와 혼합해서 이를 등록해주어야만한다. (-r (recursive) 옵션이 있을 듯 하지만 없다.)

현재 디렉토리와 그 하위 디렉토리에 있는 새로 생성된 디렉토리와 파일을 모두 CVS 저장소에 포함시키기 위해서는

find . -type d -print | grep -v CVS | xargs cvs add

find . -type f -print | grep -v CVS | xargs cvs add

cvs ci

와 같이 linux command와 혼합해서 사용하여야 한다.

 

5. 파일 제거하기

이미 저장소(A)에 포함된 파일을 제거하기 위해서는

해당파일을 먼저 작업공간(B)에서 제거한 다음

cvs remove [filename]

명령어를 사용한다.

그러면 CVS는 저장소에 해당파일을 버전관리 대상에서 제외할 것이라는 것을 통보하게 되고

실제로 이 파일을 지우는 것은 cvs add에서와 같이

cvs ci

를 통해 이루어지게 된다.

filename이 명시되어 있다면 해당 파일을 제거하고,

명시되어 있지 않다면 CVS는 작업공간(B)의 현재 디렉토리와 그 하위 디렉토리에는 없지만 저장소(A)에는 있는 파일을 모두 찾아 저장소(A)에서 제거하게 된다.

cvs add명령와는 달리 cvs remove는 recursive하게 현재 디렉토리와 그 하위 디렉토리를 모두 찾아 이를 처리해주게 된다.

해당 파일을 저장소에서 제거하였다 하더라도

이후 특정 버전으로 파일을 복구 시키는 것이 가능하다. 이 명령어는 아래에서 설명하도록 한다.

가끔 cvs remove를 하는 도중

cvs server: cannot remove file `filename' which has a numeric sticky tag of `1.3'.

이와 같은 에러 메세지가 뜨곤 하는데 이는 해당 파일에 sticky tag가 붙어 있어서 그렇다.

이러한 경우 해당 파일을

cvs update -A filename

해주어서 sticky tag를 제거하고 cvs remove를 하면 문제가 해결된다.

 

6. 디렉토리 제거하기

디렉토리를 제거하기 위해서는 일단 내부에 아무것도 없는 빈 디렉토리이어야 한다.

내부 파일 제거는 위의 5. 파일 제거하기의 방법을 사용하면 된다.

이후 제거할 디렉토리의 상위 디렉토리에서

cvs update -P

를 해주면 비어 있는 디렉토리를 CVS가 자동적으로 제거해 준다.

 

7. 특정 버전으로 파일 되돌리기

cvs up -r version -p old_filename > new_filename

version: 여기에서 명시해야할 버전은 cvs log 명령어를 통해 확인할 수 있다.

old_filename: 복구할 파일 이름

new_filename: 복구해서 저장할 파일 이름

 

8. 파일의 특정 부분을 어느 사용자가 수정했는지 확인

cvs annotate filename

cvs ann filename

 

9. 작업공간(B)의 파일과 저장소(A)의 최신버전의 차이 확인

cvs diff filename

 

10. 버전별로 파일의 차이 확인

cvs diff -r version1 -r version2 filename

version1, 2: 여기에서 명시해야할 버전은 cvs log 명령어를 통해 확인할 수 있다.

 

11. 특정 시점으로 파일 되돌리기

cvs up -D YYYY-MM-DD HH-MM [filename]

YYYY-MM-DD: 날짜 (예: 2005-02-22)

HH-MM: 시간 (예: 05:00)

filename을 명시해 주었을 경우 해당 파일을 되돌리고

명시하지 않았을 경우 해당 디렉토리와 그 하위 디렉토리의 내용을 모두 명시한 시점으로 되돌린다.

 

12. 태그 생성

cvs tag tag_name

해당 디렉토리와 그 하위 디렉토리의 내용에 tag_name의 tag를 붙인다.

 

13. 태그를 건 시점으로 되돌리기

태그를 생성하였다면 그 태그가 생성된 시점으로 내용을 복구할 수 있다.

cvs up -R tag_name

과 같이 하면

해당 디렉토리와 그 하위 디렉토리의 내용을 tag_name이 지정된 시점으로 복구한다.

14. Revision Number 바꾸기

큰 변화에 따른 revision number를 바꾸기가 가능하다

cvs ci -m "updating major revision number" -r new_version

 

<TIP>

1. 소스 코드에 log message 남기기

작업을 하다보면 일일히 cvs log를 해가며 로그를 보는 것이 불편할 때가 있다.

이럴 때 소스 코드에 log message를 남기는 기능이 CVS에 있다.

이 방법을 쓰면

cvs ci -m "log message"

와 같은 명령어를 사용하였을 때 log message와 작성자 사용자 계정, 시점 등을 소스코드에 저장할 수 있다.

C코드를 예를 들어 이를 설명하도록 하겠다.

원래의 소스 helloworld.c는 다음과 같다.

helloworld.c

------------------------------------------------------

#include <stdio.c>

int main() {

printf ("Hello, World!\n");

return 1;

}

------------------------------------------------------

소스 코드에 로그를 남기는 방법은 다음과 같다.

먼저 작업공간(B)의 소스코드(helloworld.c)의 상단에

helloworld.c

------------------------------------------------------

/*

* $Log$

*/

#include <stdio.c>

int main() {

printf ("Hello, World!\n");

return 1;

}

------------------------------------------------------

와 같이 Bold로 표현된 부분을 써 주고

cvs ci -m "Add the superfrobnicate option"를 해 주면

작업공간(B)의 소스 코드가 다음과 같이 변경된 것을 확인할 수 있다.

helloworld.c

------------------------------------------------------

/*

* $Log: helloworld.c,v $

* Revision 1.1 1997/01/03 14:23:51 joe

* Add the superfrobnicate option

*/

#include <stdio.c>

int main() {

printf ("Hello, World!\n");

return 1;

}

------------------------------------------------------

이렇게 작업공간의 소스 코드에 CVS가 추가할 수 있는 log message의 유형은 다음과 같이 있다.

$Author$

$CVSHeader$

$Date$

$Header$

$Id$

$Name$

$Locker$

$Log$

등을 적어 넣어주면

CVS가 이들을 자동으로 갱신하여 파일에 버전에 대한 내용을 각각 넣어준다.

2. Sticky Tag Error 해결

Commit을 하다 보면 가끔 다음과 같은 sticky tag error가 발생하는 경우가 있다.

cvs commit: sticky tag `2.0' for file `filename' is not a branch

이런 경우 해당 파일을

cvs update -A filename

과 같이 update를 한 후에 commit하면 문제가 해결된다.

(-A option은 해당 파일의 sticky tag 정보를 제거해준다)

< iptable >

- 리눅스 상에서 방화벽을 설정하는 도구로서 커널 2.4 이전 버전에서 사용되던 ipchains를 대신하는 방화벽 도구이다.

- 커널 상에서의 netfilter 패킷필터링 기능을 사용자 공간에서 제어하는 수준으로 사용할 수 있다.

- iptables의 구조

iptables -A INPUT -s [발신지] --sport [발신지 포트] -d [목적지] --dport [목적지 포트] -j [정책]

iptables 명령

-A : 새로운 규칙을 추가한다.

-D : 규칙을 삭제한다.

-C : 패킷을 테스트한다.

-I : 새로운 규칙을 삽입한다.

-R : 새로운 규칙으로 교체한다.

-L : 새로운 규칙을 출력한다.

-F : 체인의 모든 규칙을 삭제한다.

-Z : 모든 체인의 패킷과 바이트 카운터 값을 0으로 만든다.

-N : 새로운 체인을 만든다.

-X : 체인을 삭제한다.

-P : 기본 정책을 변경한다.

iptables 옵션

-p : 패킷의 프로토콜의 포트번호 또는 이름을 명시한다. (ex : tcp, udp, 21, 22)

-s : 패킷의 발신지를 명시한다. (ex : address[/mask])

-d : 패킷의 도착지를 명시한다.

-i : 규칙을 적용할 인터페이스 이름을 명시한다. (ex : eth0, eth1)

-j : 규칙에 맞는 패킷을 어떻게 처리할 것인가를 명시한다.

-y : 접속 요청 패킷인 SYN 패킷을 허용하지 않는다.

-f : 두 번째 이후의 조각에 대해 규칙을 명시한다.

 

 

 

 

 

squid : Optimising Web Delivery

Squid: Optimising Web Delivery Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more. It reduces bandwidth and improves response times by caching and reusing frequently-requested web pages. Squid has extensive access controls and makes a great server accelerator. It runs

www.squid-cache.org

 

 

'ETC' 카테고리의 다른 글

정보보안기사 실기-1 (로그 관리, 시스템보안)  (0) 2021.05.10
정보보안기사 실기 키워드  (0) 2021.05.09
[Python] Database 조작 간략히  (0) 2020.06.03