마커스 2016 지금 이 자리에서

Posted by 바울 trinitykjs
2017.04.19 15:28 기독교 관련 자료/찬양영상 링크


'기독교 관련 자료 > 찬양영상 링크' 카테고리의 다른 글

마커스 2016 지금 이 자리에서  (0) 2017.04.19
이 댓글을 비밀 댓글로

리눅스 마스터 1급 - 실기 요약

Posted by 바울 trinitykjs
2017.04.19 00:30 IT 관련정보/리눅스

출처: 북스 홀릭 

내용만 참조하시고, 기출 문제와 교재에 예상 문제를 꼭 풀어보세여



명령어

man, which

 

파일

find / -name 파일명

 

useradd --help

 

리눅스 실기 정리

사용자 생성 명령어

(1)사용자 계정 생성:useradd

옵션

의미

-p

사용자의 암호를 추가 시에 지정할 수 있다.

-d

홈 디렉터리를 지정할 때 쓰인다. 최종 디렉터리만 생성하므로 중간 경로가 있는 경우에는 미리 생성해야 한다.

-g

그룹을 지정할 때 사용하는데, 지정할 그룹이 미리 생성되어 있어야 한다. 이 옵션을 지정하지 않으면 레드헷 계열에서는 아이디와 동일한 그룹에 포함시키고, 다른 배포판에서는 users에 포함시킨다.

-G

기본 그룹이외에 추가로 그룹에 속하게 할 경우에 쓴다. 2차 그룹

-c

사용자 생성 시 사용자에 대한 설명을 설정한다.

-s

사용자 생성 시 사용할 셸을 지정한다.

-D

/etc/default/useradd에 설정된 유저추가와 관련된

기본 사항들을 보여준다.

-m

사용자를 생성할 때 홈 디렉터리를 생성해 주는 옵션. 보통 k 옵션과 같이 사용하여 사용자 생성 시 기본적으로 부여되는 목록이 들어있는 skeldir을 지정할 때 사용한다.

-k

사용자 생성 시에 제공되는 환경 파일들은 기본적으로 /etc/skel로 지정되어 있는데, 이외의 디렉터리를 지정할 때 쓰인다.

-f

사용자의 패스워드가 만기일을 날짜수로 지정한다.

-e

계정의 만기일을 YYYY-MM-DD 형식으로 지정한다.

-u

사용자 추가 시에 UID 값을 지정한다.

-L

lock 계정잠금

-U

unlock 계정잠금 해제


 

=>사용자 생성 시 기본적으로 적용되는 정보를 확인한다.

해당 정보 파일은 /etc/default/userradd이다

 

(2)사용자 암호 부여: passwd

등록된 사용자의 암호를 지정하거나 변경하는 명령어. passwd만 입력하면 현재 로그인 사용자의 암호가 변경되고, root만 다른 사용자의 암호를 변경할 수 있다.

 

[사용법]

$ passwd [사용자명]

 

[사용 예]

[posein@www ~]$ passwd

=>현재 로그인한 posein 사용자 본인의 암호를 변경한다.

 

[root@www ~]$ passwd yuloje

=>yuloje라는 사용자의 암호를 변경한다.

 

(3)사용자 전환: su(substitute user)

대리 유저라는 뜻의 약어로 시스템에 로그인되어 있는 상태에서 다른 사용자의 권한으로 셸(shell)을 실행할 수 있도록 전환하는 명령이다.

 

[사용 예]

[posein@www ~]$ su

=>root 사용자로 사용자를 전환한다. root로 권한자만 바꾸지만 환경 변수 등은 기존 사용자인 posein의 환경으로 적용되어 실제 root 권한을 수행하기에는 제약이 따른다.

 

[posein@www ~]$ su -

=>root 사용자로 사용자를 전환한다. 실제 root로 로그인한 것처럼 권한, 환경 변수 등 모든 환경이 root의 상태가 된다.

 

[posein@www ~]$ su root c “tail /etc/shadow”

=>사용자를 전환하지 않고 일회적으로 명령을 내릴 때 c 옵션을 사용한다.

 

사용자 관련 파일

 

useradd 명령을 실행하면 기본 설정은 /etc/defualt/useradd에서 정보를 가져오고, /etc/skel에 들어있는 파일 및 디렉터리를 사용자에게 제공한다. 생성된 사용자의 정보는 /etc/passwd/etc/shadow에 기록된다. /var/spool/mail/사용자아이디에 파일을 생성해 준다.

 

(1) /etc/passwd

=>사용자가 로그인하고, 로그아웃할 때까지 항상 시스템이 사용자를 감시하기 위한 근거가 되는 파일. /etc/passwd에는 콜론(:)을 구분자로 7개의 필드로 구성되dj 있음, /etc/passwd의 패스워드를 다시 암호화하여 /etc/shadow에서 추가로 관리한다.

 


 

[사용 예]

필드

설명

posein

사용자명으로 일명 ID라고 부른다.

x

사용자의 패스워드가 기록되는 부분, 이 필드에 기록되는 패스워드를 암호화하여 /etc/shadow에서 별도로 관리한다.

500

UserID로 리눅스에서는 사용자를 숫자값으로 관리한다.

500

GroupID로 리눅스에서는 사용자를 숫자값으로 관리한다.

System

Engineer

사용자에 대한 추가적인 정보가 기록되는 부분이다.

/home/posein

사용자에 대한 추가적인 정보가 기록되는 부분이다

/bin/bash

로그인 시 사용하는 셸을 나타낸다.

 

(2) /etc/shadow

=>/etc/passwd의 두 번째 필드인 패스워드 부분을 암호화하여 관리하며, 9개의 필드로 구성되어 있음. 이 파일은 오직 root만 접근할 수 있다.

 

 

[해당 필드 설명]

필드

설명

posein

사용자 이름, 즉 아이디를 나타낸다.

$6S...

암호화된 사용자의 패스워드가 기록되어 있는 곳

15917

가장 최근에 패스워드를 바꾼 날로 197011일부터 계산한 날수이다.

159172013731일에 해당한다.

0

패스워드를 바꾼 후 최소로 사용해야 되는 날짜수로 다른 패스워드로 변경하기까지의 유예기간이다. 0이면 언제라도 패스워드를 변경할 수 있다.

99999

현재 사용중인 패스워드의 최대 사용 가능한 기간, 즉 현재 패스워드 유효기간이다. 99999이면 패스워드를 변경하지 않고

계속 사용 가능하다는 것을 의미한다.

7

패스워드 사용기한이 만료되기 전에 사용자에게 바꿀 것을

경고하는 기간이다.

3

패스워드 사용기한이 만료된 뒤에 실제 계정 사용이 불가능하기까지 기간으로 일종의 유예기간이다.

16070

계정 만기일로 계정 사용 불가능하게 된 날 또는 불가능하게 되는 날

공백(9번째 필드)

다른 기능을 사용하기 위해 예약된 공간으로 아직 사용하지 않고 있다.

 

관련 명령어: pwconv, pwunconv

/etc/passwd에서 관리하려면 pwconv라고 입력하면 되고, 다시 /etc/shadow에서 관리하려면 pwconv라고 입력하면 된다.

 

(3) /etc/default/useradd

=>별도의 옵션없이 ‘useradd 사용자명으로 계정 생성 시에 기본적으로 적용되는 설정이 들어있는 파일이다.

 

 

필드

설명

GROUP=100

사용자 생성 시에 기본적으로 속하게 되는 그룹을 지정한 부분으로 GID100user라는 그룹에 속하게 된다.

HOME=/home

홈 디렉터리의 위치로 사용자를 생성하면 ‘/home/사용자명이 된다.

INACTIVE=-1

패스워드의 사용 기한이 지난 뒤 실제로 계정의 로그인을 막는 유예기간을 설정하는 것이다.

EXPIRE=

계정 유효기간을 지정하는 부분으로 ‘2013-12-31’와 같은 날짜로 지정한다.

SHELL=/bin/bash

사용자 생성 시에 할당되는 셸을 의미한다.

SKEL=/etc/skel

사용자 생성 시에 할당되는 셸을 의미한다.

CREATE_MAIL_

SPOOL=yes

사용자 생성 시에 메일 파일을 생성할 것인지를 지정하는 항목이다. yes로 설정하면 ‘/var/spool/mail/사용자명으로

메일 관련 파일이 생성된다.

 

(4) /etc/login.defs

메일 디렉터리, 패스워드 관련 설정(최대 사용기한, 최소 사용기한, 최소 길이, 만기 이전 경고 주는 날짜), UID의 최솟값 및 최댓값, GID의 최솟값 및 최댓값, 홈 디렉터리 생성 여부, 기본 UMASK , 패스워드에 적용하는 암호화 알고리즘 등이 정의되어 있다.

 

MAIL_DIR /var/spool/mail

=>사용자의 mail 디렉터리를 지정한다.

PASS_MAX_DAYS 99999

=>패스워드 최대 사용 기간을 지정한다.

PASS_MIN_DAYS 0

=>패스워드 변경 후에 사용하는 최소 기간을 지정한다. 0이면 패스워드 변경의 제한이 없다.

PASS_MIN_LEN 5

=>패스워드 최소 길이를 지정한다.

PASS_WARN_AGE 7

=>패스워드 만기일 도래 전에 경고를 보여주는 날짜를 지정한다.

UID_MIN 500

=>UID의 최솟값을 지정한다. 사용자를 추가하면 해당 UID 값부터 할당된다.

UID_MAX 60000

=>UID의 최댓값을 지정한다. 사용자를 추가하면 해당 UID 값까지만 할당된다.

GID_MIN 500

=>GID의 최댓값을 지정한다. 사용자를 추가하면 해당 GID 값부터 할당된다.

GID_MAX 60000

=>GID의 최댓값을 지정한다. 사용자를 추가하면 해당 GID 값까지만 할당된다.

CREATE_HOME yes

=>사용자 추가 시에 홈 디렉터리 생성 여부를 지정한다.

 

UMASK 077

=>사용자의 umask 값을 설정할 때 사용하는데, 077이면 사용자의 생성 값은 022가 된다.

USERGROUPS_ENAB yes

=>레드햇 계열 리눅스에서 옵션 없이 사용자를 추가하면 본인아이디와 동일한 그룹을 생성하여 포함시킨다.

MD5_CRYPT_ENAB yes

=>사용자 패스워드에 사용할 암호화 알고리즘을 지정하는 설정이다.

 

사용자 계정 관리 및 삭제

 

(1)사용자 계정 관리:usermod

사용자의 셸, 홈 디렉터리, 그룹, UID, GID 등을 변경하는 명령어로 사용자 관련하여 대부분의 정보를 변경할 수 있다.

 

[사용법]

#usermod [option] 사용자 계정

 

 

옵션

의미

-d

사용자의 홈 디렉터리를 변경한다. -m과 같이 사용하면 사용하던 홈 디렉터리의 파일과 디렉터리도 같이 옮겨준다

-m

사용자의 홈 디렉터리 변경 시 기존에 사용하던 파일 및 디렉터리를 옮겨주는 옵션으로 d와 함께 쓰인다.

-g

사용자의 그룹을 변경한다

-s

사용자의 셸을 변경한다.

-u

사용자의 UID 값을 변경한다.

-e

계정만기일을 변경한다.

-f

패스워드 만기일이 지난 후 패스워드에 Lock을 설정할 유예기간을 지정

-l

사용자아이디를 변경한다(--login)

-L

사용자의 패스워드에 LOCK을 걸어 로그인을 막는다.

-U

사용자의 패스워드에 걸린 LOCK을 푼다(--unlock)

 

(2)사용자 계정 삭제:userdel

 

[사용법]

#userdel [option] 사용자 계정

 

옵션

의미

-r

사용자의 홈 디렉터리 및 메일관련 파일까지 제거한다.

 


 

사용자 패스워드 관리

(1)사용자 패스워드 관리(1):passwd

passwd은 기본적으로 패스워드를 부여하거나 패스워드를 변경하는 명령이지만, 계정을 사용하지 못하게 하거나, 패스워드 만기일 및 유효기간 등을 설정할 수 있다.

옵션

의미

-S

사용자에 대한 패스워드 정보를 알 수 있다.

-l

사용자의 패스워드에 잠금을 걸어 로그인을 막는다.

-u

사용자에게 설정되어 있는 패스워드 잠금을 푼다.(--unlock)

-d

사용자의 패스워드를 제거한다.

-n

패스워드 변경까지의 최소 날짜의 설정한다.

즉 패스워드 변경 후 최소로 사용해야 되는 날짜수이다.

-x

현재 패스워드의 유효기간을 지정한다.

-w

패스워드 만료 전 경고 날짜를 지정한다.

-i

패스워드 만료된 뒤에 사용자 계정 사용이 실제 로그인이 불가능하게

하기까지의 유예기간을 설정한다.

-e

다음 로그인 시에 반드시 패스워드를 변경하도록 할 때 사용한다.

 

 

(2)사용자 패스워드 관리(2):chage

chage는 사용자의 패스워드에 대한 정보를 출력하고 설정하는 명령이다. /etc/shadow의 날짜 관련 필드 설정을 모두 할 수 있는 명령이다. 암호관련


 

옵션

의미

-l

사용자의 패스워드에 대한 정보를 보여준다.

-d

/etc/shadow3번째 필드에 해당하는 값인 최근 패스워드를

바꾼 날(197011일부터 계산한 날짜 수)을 수정한다.

-m

패스워드 변경의 최소 날짜를 지정한다. 즉 패스워드 변경 후 일정기간 사용해야될 최소 날짜수를 지정한다.

-M

패스워드를 변경 없이 사용 가능한 최대 날짜를 지정한다.

-l

패스워드 최대 사용기간 만료 후에 실제 패스워드에 잠금(LOCK)을 설정하기까지의 유예기간을 지정한다.

-E

계정이 만기되는 날을 지정한다. MM/DD/YY 또는 YYYY-MM-DD 형태로 지정한다.

-W

패스워드 만료 전 경고 날짜를 지정한다.

gpasswd

그룹의 패스워드를 설정하거나 그룹 관리자를 지정하는 명령어이다. 그룹관리자는 해당 그룹에 속하지 않아도 지정할 수 있고, 지정된 그룹관리자는 다른 사용자들을 해당 그룹에 2차 그룹으로 속하게 하거나 그룹 패스워드를 설정할 수 있다.

 

[사용법]

$ gpasswd [options] group

 

[사용 예]

[root@www~]# gpasswd A posein terran

=>terran 그룹의 관리자로 posein을 지정한다. posein이라는 사용자는 실제적으로 terran 그룹의 일원이 아니어도 가능하다. 참고로 관리자등록은 /etc/gshadow3번째 필드에 기록된다.

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

사용자 패스워드 관리

 

소유권과 허가권

-소유권:어떠한 파일이나 디렉터리를 소유하여 지매하는 권리를 말함

-허가권:파일이나 디렉터리에 접근 권한을 설정하는 권리

 

소유권:사용자 소유권과 그룹 소유권

허가권:사용자(user), 그룹(group), 다른 사용자(other)로 나누어 설정할 수 있음

 

*권한부여방법

+ 기존 권한에 새로운 권한을 추가

- 기존 권한에 지정된 권한을 제거

= 기존 권한을 무시하고 지정된 권한만 사용

 

u+, u-, u=

d+, g-, g=

o+, o-, o=

a+, a-, a=

 

세 가지 대상을 모두 지정하려면

a+, a-, a=

형식으로 권한을 부여할 수 있다.

 

숫자로 지정한다.(퍼미션)

 

특수권한:일반 사용자가 작업을 하는 중 root 권한이 필요한 경우

Set-UID:해당 파일을 실행하는 동안에는 실행시킨 사용자의 권한이 아닌 해당 파일의 소유자 권한으로 인식한다.

Set-GID:해당 파일을 소유한 그룹 권한으로 인식한다. 이 권한이 설정된 디렉터리에 사용자들이 팔이나 디렉터리를 생성하면 사용자가 속한 구릅에 상관없이 디렉터리 소유 그룹권한으로 만들어진다. 이 권한의 그룹 표시는 그룹 소유권 부분에서 x자리에 s로 나타나며,

만약 실행 권한이 없을 경우에는 대문자 S 표시된다.

Sticky-Bit:디렉터리 설정되는 특수 권한으로 일종의 공유 디렉터리로 사용된다. 기본적으로 /tmp 디렉터리에 기본적으로 설정됨 이 권한은 무조건 other 계층에 설정하도록

설정을 하게 되면, other 계층 권한 부분의 x자리에 t로 표기된다.

other 계층에 실행 권한이 없는 경우, 즉 그룹의 공유 모드로 사용한 경우에는

대문자 T로 표기된다.

Sticky-Bit/tmp 디렉터리에서 확인할 수 있다. /tmp는 임시 저장 디렉터리로 X 윈도 실행시 필요한 소켓 등 일시적으로 시스템이나 응용 프로그램에 필요한 파일들이 저장되는 디렉터리이다.

 

주로 특별히 사용자 권한을 지정하기 어려운 응용 프로그램들이 일시적으로 파일을 생성하고

 

sticky bit가 설정된 디렉토리 내에서는 

 

1. 퍼미션이 777인 파일에 대해서 파일의 소유자만이 삭제를 할 수 있다.

(수정이나 실행, 읽기는 모두 허용된다.)

2. sticky bit가 설정된 디렉토리 자체도 소유자만이 삭제할 수 있다.

3. root는 다할 수 있다.

 

관련 명령어

(1)chmod

=>파일이나 디렉터리에 접근할 수 있는 허가권을 설정하는 명령어

 

[사용법]

$ chmod [option] mode file(s)

 

-R옵션, --recursive

=>하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 접근 권한을 변경한다.

 

$ chmod ugo+rwx aa.txt

=>모든 사용자에게 모든 권한을 준다.

 

$ chmod 755 aa.txt

=>aa.txt라는 파일에 대해 소유자는 읽기, 쓰기, 실행이 가능하고 그룹 및 다른 사용자는 읽기와 실행만 가능하게 설정한다.

 

$ chmod u+s a.out

=>a.out라는 파일에 Set-UID를 설정한다.

 

$ chmod 3070 /project

=>/project라는 디렉터리를 해당 그룹에 속한 사용자들만 접근하고, 파일을 생성/삭제할 수 있도록 하고, 그룹 소유권을 자동지정(Set-GID)하고 공유(Sticky Bit)하여 사용하도록한다.

 

 (2)chown

=>파일이나 디렉터리의 소유권 및 그룹 소유권을 변경하는 명령이다.

 

[사용법]

$ chown [option] owner[:group] file(s)

-R옵션, --recursive

=>하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 접근 권한을 변경한다.

 

[사용 예]

#chown R posein *

=>하위 디렉터리를 포함하여 현재 디렉터리의 모든 파일의 소유자를 posein으로 변경한다.

 

#chown posein:yuloje jalin.txt

=>jailin.txt 파일의 소유자는 posein, 소유 그룹은 yuloje로 설정한다. 콜론대신에 점(.)을 사용하여 ‘chown posein.yuloje jalin.txt’로 설정해도 된다.

 

#chown :yuloje 1.txt

=>1.txt 파일의 그룹 소유권을 yuloje로 설정한다.

 

(3)chgrp

=>파일이나 디렉터리의 소유 그룹을 바꾸는 명령으로 root가 아니면 사용하는 경우가 드물지만, 특정한 사용자가 여러 그룹에 속한 경우에 본인 소유의 파일을 본인이 속한 그룹 내에서 소유권을 변경시킬 수 있다.

 

[사용법]

chgrp 그룹명 파일 또는 chgrp GID

 

[옵션]

 

-c, --changes: 작업 상태를 자세히 보여주나, 실제로 변경되는 것만 보여준다.

-h, --no-dereference: 심볼릭 링크가 지정하는 것 대신에 심볼릭 링크 자체의 그룹을 변경한다.

-v, --verbose: 작업 진행 상태를 자세하게 보여준다.

-R, --recursive: 지정한 디렉터리 아래에 있는 모든 파일도 함께 지정한 그룹으로 변경한다.

 

 

[사용 예]

#chgrp admin alin.jpg

=>alin.jpg 파일의 그룹 소유권을 admin으로 변경한다. 그룹명 대신에 GID로 설정해도 된다.

 

(4)umask

파일이나 디렉터리 생성 시 부여되는 기본 허가권 값을 지정하는 명령이다. 파일 생성 시에 666, 디렉터리인 경우에는 777에서 설정한 umask 값을 뺀 값을 기본 허가권으로 지정한다.

 

[사용법]

$ umask [option] []

 

옵션

의미

-S

umask 값을 표기한다.

 

  

파일 링크 관련 명령어 : ln

하드 링크 또는 심볼릭 링크를 생성하는 명령이다. 명령 실행 시 옵션 없이 사용하면 하드 링크가 생성되고, -s 옵션을 사용하면 심볼릭 링크를 생성한다.

 

[사용법]

$ ls [option] 원본 대상 파일명

 

옵션

의미

-s

심볼릭 링크를 생성 시에 사용하는 옵션이다.(--symbolic)

-f

링크 파일 존재 시에 삭제하고 생성한다.(--force)

 

-하드 링크:하나의 동일한 파일을 디스크의 다른 곳에 배체하여 여러 이름으로 사용되는 형식

-심볼릭 링크:하나의 파일을 여러 이름으로 가리키게 하는 것, 윈도우의 바로 가기 개념

 

파일 시스템 생성

관련 명령어

 

fdisk

디스크 파티션을 확인하고 추가/삭제하는 명령으로 설정 후에는 반드시 재부팅 해야 한다.

 

옵션

의미

-l

현대 디스크의 파티션 테이블 정보를 출력한다.

-s partion

특정 파티션의 크기를 출력한다. 단위는 block이다.

-v

fdisk의 버전을 출력한다.

 

[fdisk 실행 시 주요 명령]

옵션

의미

p

현재 디스크의 정보를 출력한다.

d

파티션을 삭제한다.

n

파티션을 새롭게 생성한다.

t

파티션의 속성을 변경한다. 주요 코드는 82(Swap), 83(Linux),

8e(Linux LVM), fd(Raid)

w

변경된 파티션의 정보를 저장하고 종료한다.

q

변경된 파티션의 정보를 저장하지 않고 종료한다.

 

mkfs(make filesystem)

새로운 파일 시스템을 만드는 명령으로 root만 사용 가능하다.

 

[사용 예]

#mkfs t ext2 /dev/hdb1

=>/dev/hdb1을 리눅스 파일 시스템인 ext2로 만든다.

 

mke2fs

ext2, ext3, ext4 파일 시스템을 만드는 명령으로 최근 리눅스 배포판에서 mkfs 명령시 실제 사용되는 명령어이다. 파일 시스템의 유형을 지정하지 않으면 ext2로 생성된다.

 

[사용법]

#mkefs [option] 장치명

 

옵션

의미

-j

저널링 파일 시스템인 ext3로 만든다

-t fs_type

파일 시스템의 유형을 지정하는 옵션

-b block_size

블록 사이즈를 지정하는 옵션으로 1024, 2048, 4096으로 지정할 수 있다.

-R raid_options

RAID 관련 옵션으로 R 다음에 argument=값 형태로 지정한다.

 

#mke2fs j /dev/sdb1

=>/dev/sdb1 장치의 파일 시스템을 ext3로 생성한다.

 

/etc/fstab 파일

 


mount => 마운트를 통해 다른 파티션이나 저장 매체 등을 /의 하위에 둠으로써 통일적인 관리가 가능해진다.

 

옵션

의미

-V

버전 정보를 출력한다.

-h

도움말을 출력한다.

-v

진행 상황을 자세히 출력한다.

-a

/etc/fstab에 지정된 모든 파일 시슽ㅁ을 마운트 한다.

-f

실제 시스템 호출은 하지 않고 마운트할 수 있는지 점검한다.

-t

마운트 할 파티션의 파임 시스템 형식을 지정한다.

-r

파일 시스템을 읽기 전용으로 마운트 한다.

-w

파일 시스템을 읽기/쓰기 형식으로 마운트 한다.

-o

-a 옵션과 함께 사용되어 a가 적용된 파일시스템으로 마운트를 한정한다.

-o 뒤에 옵션이 붙으면 해당 옵션이 설정된 파일 시스템만 마운트한다.

 

 

파일 시스템 점검

fsck(filesystem check) => 사용법 # fsck [option] 장치명

파일 시스템을 검사하고 수리하는 명령이다. fsck 명령은 손상되 디렉터리나 파일을 수정할 때 임시로 /lost+found 디렉터리에서 작업을 수행하고 정상적인 복구가 되면 사라진다.

 

옵션

의미

-a

명령 수행에 대한 확인 질문 없이 무조건 수행한다.

-r

명령 수행에 대한 확인 질문을 한다.

여러 개의 fsck가 병렬 모드 형태로 작동하고 있을 때 유용하다.

-A

/etc/fstab에 정의되어 있는 모든 파일 시스템을 체크한다.

-N

실행을 하지 않고 단지 어떤 것이 실행되어지는지만 보여준다.

-V

실행되는 각 파일 시스템용 명령을 포함해 자세한 출력을 수행한다.

-v

버전 정보를 보여준다.

-T

검사를 시작할 때 제목을 보여주지 않는다.

-y

몇몇 파일 시스템에 특정된 것으로, 감지된 파일 시스템 오류를 자동적으로

수정하도록 한다.


스왑(Swap) 생성

하드 디스크의 일부를 마치 메모리처럼 사용하게 해주는 기술을 말함

 

[사용법]

# mkswap [option] 스왑 파일 [size]

# mkswap [option] 스왑 파티션

 

관련 명령어

mkswap => 스왑 파티션이나 스왑 파일을 생성하는 명령이다.

[사용 예]

#mkswap /swap-file 10240

=> 10240K 크기의 /swap-file을 생성한다.

 

swapon => 스왑 파티션이나 스왑 파일을 활성화시키는 명령으로 스왑의 상태 확인도 가능하다.

swapoff => 활성화된 스왑 파티션이나 스왑을 중지시킨다.

 

스왑 영역 만들기

스왑 파일 생성하기

 

. dd명령을 이용하여 원하는 파일의 크기만큼 스왑 파일을 생성한다.

# dd if=/dev/zero of=/swap-file bs=1k count=10240000

=> if에 사용한 /dev/zero는 초기화할 때 사용하는 장치 파일명이고,

of에는 생성할 파일명을 입력한다.

 

. 스왑 파일 생성

# mkswap /swap-file

 

. 스왑 파일 활성화

# swapon /swap-file

 

. 스왑 파일 생성

# 시스템 부팅 시마다 사용할 경우에는 /etc/fstab 파일에 등록

/swap-file swap swap defaults 0 0

 

스왑 파티션 생성하기

. fdisk 명령을 이용하여 스왑 파티션 생성

#fdisk /dev/sdb

=>파티션 분할 생성 후에 t 명령을 이용해서 파티션의 속성을 스왑 영역의 코드인 “82”를 입력해야 한다.


Disk Quota

(1) 디스크 쿼터(Quota)의 개요

사용자가 많은 서버의 경우에 사용자의 디스크 사용량 제한이 필요한데, 이러한 제한을 디스크 쿼터라고 부른다. 리눅스에서는 디스크 쿼터는 사용자 및 그룹의 디스크 사용량과 생성할 수 있는 파일의 개수(I-node의 수)를 제한 할 수 있다.

 

(2) 관련 명령어

quotacheck

디스크를 사용하고 있는 파일 시스템을 체크하여 quota 기록 파일을 가장 최근의 상태로 업데이트 시키는 명령이다.

 

[사용법]

# quotacheck [option] 디렉터리명

 

edquota

사용자나 그룹에 쿼터를 설정할 때 사용하는 명령으로 실행시키면 vi 편집기가 실행되고, 기본 단위가 KB이므로 10MB를 제한하려면 10000이라고 입력해야 한다.

 

[사용법]

# edquota [option]

옵션

의미

-u

사용자에 대한 쿼터를 설정할 때 사용하는 옵션이다.(기본 옵션)

-g

그룹에 대한 쿼터를 설정할 때 사용하는 옵션이다

-t

Soft limit를 초과한 후부터 적용되는 시간제한을 설정하는 옵션이다.

-p

특정 사용자의 쿼터를 다른 사용자에게 동일한 설정으로 적용할 때 사용

 

 

# edquota p posein yuloje

=> yuloje이라는 사용자의 Quota 설정을 posein의 설정과 동일하게 만든다.

quotaon/quotaoff

=>쿼터 설정을 활성화/비활성화하는 명령

-v 옵션: 메시지를 자세히 출력

 

repquota

=> 쿼터 설정 정보를 출력해 주는 명령이다.

# redquota [option] [디렉터리명]

 

옵션

의미

-a

쿼터가 설정되어 있는 모든 파티션 정보를 출력한다.

-u

사용자 쿼터 정보를 출력한다.(기본 옵션)

-g

그룹 쿼터 정보를 출력한다.

 

디렉터리 관련 명령어

mkdir => 디렉터리를 생성하는 명령이다.

 

옵션

의미

-p

경로로 지정된 서브 디렉터리가 존재하지 않은 경우에 함께 생성한다.

-m

디렉터리 생성과 동시에 퍼미션을 설정한다.

-v

생성된 디렉터리를 메시지로 출력한다.

 

 

파일 관련 명령어

 

ls => 디렉터리 안의 내용을 출력해 주는 명령어

 

옵션

의미

-a

숨겨진 파일이나 디렉터리도 출력해준다.

-F

파일의 형태에 따라 정보를 출력해준다.

-l

파일이나 디렉터리 정보를 한 줄씩 하나씩 길게 보여준다.

-d

대상이 디렉터리인 경우에 디렉터리 안의 내용 대신에 해당 디렉터리에 대한 정보를 출력한다.

 

$ ls alF

=> 현재 디렉터리의 내용을 숨겨진 파일을 포함해서 모두 출력해 주고, 관련 정보 및 파일의 형태도 표시해준다.

 

file => 파일의 종류를 출력해 주는 명령으로 관련 정보는 /usr/share/magic이라는 파일을 참조한다.

find => 현재 디렉터리부터 하위 디렉터리까지 주어진 여러 조건을 가지고 파일 및 디렉터리를 찾아서 그 경로를 출력해주는 명령이다.

 

[사용법]

$ find [path] options expression

=> path 이하의 모든 디렉터리에서 파일을 찾는다. path가 없으면 디렉터리가 기준이다.

 

[주요 옵션]

 

옵션

의미

--name

주어진 이름의 파일이나 디렉터리를 찾는다.

--perm

지정한 허가권(permission) 값을 갖는 파일이나 디렉터리를 찾는다.

--type

지정한 파일 유형을 찾는다.(d: 디렉터리, f: 일반파일, l: 링크 파일,

b: 블록 디바이스, c: 캐릭터 디바이스, P: 파이프 파일, s: 소켓 파일

-exec

찾아진 파일 등과 연계하여 어떠한 명령을 내릴 수 있는 옵션이다.

결과값은 { } 기호로 표시하고 ;로 끝내야 한다.

 

$ find name ‘-name’ -type f exec rm {} \;

=> 현재 디렉터리에서 *.txt로 된 파일들을 찾아서 삭제한다.

텍스트 파일 관련 명령어

 

tail

=> 텍스트 파일의 끝 부분을 보여주는 명령으로 옵션 없이 사용하면 기본 10줄을 출력한다.

 

[사용법]

$ tail [option] filename(s)

 

[주요 옵션]

 

옵션

의미

-n 행수

파일의 마지막 줄에서부터 지정된 수만큼 출력한다.

-c n

마지막 n바이트만 출력한다.

-f

특정 파일의 끝부분에 새로운 행이 추가될 경우 실시간으로 출력한다.

로그 파일을 모니터링 할 때 유용하게 쓴다. (--follow)

-q

여러 개의 파일이 처리될 때 파일 이름 헤더를 출력하지 않는다.

 

# tail f /var/log/messages

=> 마지막 10줄을 출력 후에도 계속적으로 해당 파일의 내용을 동적으로 확인할 수 있도록 한다.

 

grep

=> 텍스트 파일에서 특정 패턴(pattern, 문자열)을 갖는 줄을 찾아서 출력해 주는 명령이다.

 

[사용법]

$ grep [option] patter filename(s)

 

[주요 옵션]

옵션

의미

-c

패턴과 일치하는 줄의 개수를 출력한다.

-h

여러 개의 파일을 검색 시 출력하는 파일의 이름을 붙는 것을 방지한다.

-i

검색할 때 대소문자를 구분하지 않는다.

-v

패턴과 일치하지 않는 줄을 출력한다.

-E

파이프(|)와 연계하여 여러 패턴을 찾는다.

-F

지정한 문자들 특히 특수문자를 기호 그대로 인식하여 출력해준다.

 

# grep v ^# /etc/vsftpd/vsftpd.conf

=> /etc/vsftpd/vsftpd.conf 파일에서 #으로 시작하지 않는 줄만 출력해 준다.

cron

cron을 이용하여 주기적으로 실행하는 작업은 시스템 운영에 필요한 작업과 사용자의 필요에 의한 작업으로 나눌 수 있다. 시스템 운영에 필요한 작업은 root 권한으로 /etc/crontab에 등록해서 주기적으로 수행할 수 있고, 사용자는 crontab이라는 명령을 수행해서 등록할 수 있다.

 

minute

hour

day_of_month

month

day_of_week

user-name

command

 

 

필드

설정 값 및 내용

minute

(minute)을 나타내고, 0~59로 설정한다.

hour

(hour)을 나타내고, 0~23로 설정한다.

day_of_month

(day_of_month)을 나타내고, 0~31로 설정한다.

month

(month)을 나타내고, 1~12로 설정한다.

day_of_week

요일(day_of_week)을 나타내고, 0~7로 설정한다. 07은 일요일에 해당하고, 1은 월요일, 2는 화요일, 3은 수요일, 4는 목요일

user-name

사용자 이름을 명기한다. 일반적으로 생량한다.

command

실행할 명령어를 기입한다. 명령어 앞에 사용자 이름을 명기해도 된다.

 

=>각 필드는 위의 표에 명기된 설정 값 이외에 ‘*’는 모든 모든(all)’를 의미하고, ‘-’는 연결된 설정 값을 지정할 때 사용하고, ‘,’는 연결되지 않는 값을 나열할 때 사용하고, ‘/’는 연결된 설정 값 범위에서 특정 주기로 나눌 때 사용한다.

 

 

리눅스 마스터1급 서머리 정리 1일차

 

1.사용자 계정 (useradd, usermod, groupadd, groupmod,passwd, chage, su, userdel)

 

useradd 관련파일

1)/etc/default/useradd 간단 정보-> 연관설정

-/etc/passwd

-/etc/shadow

-/etc/group

-/home

-/var/spool/mail

-/etc/skel (사용자 환경설정파일)

 

2)/etc/login.defs 상세정보

패스워드 최소숫자, 최대 숫자, 복잡성 ....

 

*옵션

-c

도움말

-d

홈디렉터리

-s

로그인쉘

-g

GID(기본그룹)

하나의 그룹에만 소속된다

-G

2차 그룹

-e

--일 형식으로 숫자로 만료인 지정

-f

10, 20, 15, 30일 형식으로

숫자로 만료일 지정

-k -m

skel 디렉토리 지정

-L

lock 계정잠금

-U

unlock 계정잠금 해제

 

 

*사용자의 모든 정보와 계정을 삭제 r 옵션

 

*passwd 패스워드 변경

-l lock

-u unlock

 

*chage 암호관련 정보 변경 /etc/shadow를 수정할 수 있다.

옵션은 대문자로

 

파일 위치 찾기 명령

find / -name 파일명

 

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

 

리눅스 마스터1급 서머리 정리 2일차

 

FSCK 명령어(CHKDSK)

반드시 마운트가 해제되어야 한다.

가능하면 재부팅할 때 검사를 진행한다.

 

-t 파일시스템 타입지정

-A /etc/fstab참고

-N 내용만 출력. 실제 작업진행하지 않음

-P 루트파일시스템을 점검

-R 루트파일시스템을 제외

-T 제목 출력 제외

-f 에러가 없으면 진행 안 함

-a 에러를 자동으로 수정

 

 

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

 

시그널의 종류

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

프로세스 실행중에 사용자가 로그아웃할 경우 프로세스도 종료한다.

==> nohup

# nohup 명령어 & (사용자가 로그아웃하더라도 프로세스는 결과때까지 실행된다)

2) SIGINT(INT) : 인터럽트 (Ctrl+C)

3) SIGQUIT(QUIT) : 종료

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

15) SIGTERM(TERM) : 소프트웨어 종료, 일반적으로 kill 시그널이 전송되기 전에 전송된다.

잡히는 시그널이기 때문에 종료되는 것을 트랙할 수 있다.

19) SIGSTOP(STOP) : 정지. 이 시그널 역시 잡을 수 없다.

20) SIGTSTP(TSTP) : 키보드에 의해 발생하는 시그널로 Ctrl+Z로 생성된다.

 

 

*프로세스 작업

포그라운드 명령어만 실행 ps fg%작업번호 = fg 작업번호 CTRL+C백그라운드 명령어뒤에 & 기호 사용 jobs bg%작업번호 = bg 작업번호 포그라운드전환

pkill명령어

 

kill 9 PID, Kill s PID

Kill 9 PID, pkill 9 u jalin

 

프로세스 관련 추가

ps(process status)

=>동작 중인 프로세스의 상태를 출력해 주는 명령이다.

 

옵션

의미

a

터미널과 연관된 프로세스를 출력하는 옵션이다.

u

프로세스의 소유자를 기준으로 출력한다.

x

데몬 프로세스터럼 터미널에 종속되지 않는 프로세스를 출력한다.

e

해당 프로세스에 관련된 환경 변수 정보를 함께 출력한다.

f

프로세스간의 상속관계를 트리구조로 보여준다

-f

유닉스 스타일로 출력해 주는 옵션으로 UID, PID, PPID 등이 함께 표시된다.

 

 

 

 

top

=>동작중인 프로세스의 상태를 실시간으로 화면에 출력해 주는 명령으로 프로세스의 상태뿐만 아니라 CPU, 메모리, 부하 상태 등도 확인할 수 있다.

 


top 명령 실행 후 옵션

 

: cpu 갯수별 사용량 보기 ( multi core )

shift + m : 메모리 사용량이 큰 순서로 정렬

shift + p : CPU 사용량이 큰 순서로 정렬

shift + t : 실행시간이 큰 순서로 정렬

k : 프로세스 kill, k 입력후 종료할 pid 입력, kill signal9 를 입력.

c : 명령인자 표시/비표시

spacebar : refresh

: 입력한 유저의 프로세스만 표시 

q : top 종료

kill

=> 프로세스에 특정한 시그널을 보내는 명령으로 옵션 없이 실행하면 프로세스에 종료 신호(15, TERM, SIGTERM)를 보낸다. 보통 중지시킬 수 없는 프로세스를 종료시킬 때 많이 사용한다.(PID나 작업번호를 지정하여 종료시킴)

 

[사용법]

# kill [option] [signal] [PID 또는 % job_number]

 

killall

=> 같은 데몬의 여러 프로세스를 한 번에 종료시킬 때 사용하는 명령으로 프로세스명을 사용한다. 기본적인 사용법은 kill 명령과 유사하나 시그널을 지정하지 않으면 종료 시그널(15, TERM, SIGTERM)이 전송된다.

 

jobs

=> 백그라운드로 실행중인 프로세스나 현재 중지된 프로세스의 목록을 출력해 주는 명령이다.

nice

=> 프로세스의 우선순위를 변경하는 명령으로 NI 값을 설정할 때 사용한다. 프로세스에 설정되어 있는 NI의 기본값은 0이고, 지정 가능한 범위는 20 ~ 19까지인데 값이 작을수록 우선순위가 높다.


 

[사용법]

# nice [option] 프로세스명

 

renice

=> 실행중인 프로세스의 우선순위를 변경할 때 사용하는 명령으로 프로세스ID(PID), 사용자 이름, 프로세스의 그룹ID를 이용하한다.

 

 

nohup

=> 사용자가 로그아웃하거나 작업 중인 터미널 창이 닫혀도 실행중인 프로세스를 백그라운드 프로세스로 작업될 수 있도록 해 주는 명령이다. nohup는 실행한 명령을 자동으로 백그라운드로 보내지 않고, 사용자가 명령행 뒤에 ‘&’를 명시해야 한다.


S/W 설치

 

rpm

-레드햇사에서 만든 패키기 관리 기법으로 프로그램을 .rpm 형태의 파일로 배포하고, rpm 명령을 사용하여 손쉽게 설치 및 갱신, 제거, 검증, 질의 등의 관리를 할 수 있다. 배포되는 파일의 형식은 다음과 같다

 

패키지 이름-버전-릴리즈-아키텍처.rpm

 

[rpm 파일 구성 설명]

구성

설명

패키지 이름

어떤 패키지인지를 알려주는 패키지의 이름을 나타낸다.

버전

패키지의 버전을 의미한다.

릴리즈

한 버전의 패키지를 몇 번 빌드했는지를 알려준다.

아키텍처

패키지가 사용 가능한 시스템을 의미한다.

 

 

(1)rpm 사용법

rpm 명령의 사용법은 설치 및 갱신, 제거, 질의, 검증 모드와 소스 rpm(.src .rpm)의 리빌드(rebuild) 모드 등 총 5가지로 나눌 수 있다.

 

[사용법]

$ rpm [option] [패키지_파일명]

 

(2) 설치 및 갱신 (install & upgrade) 모드

=> 새로운 패키지를 설치하거나 갱신(upgrade)을 할 수 있다.

[주요 옵션]

옵션

설명

-i

새로운 패키지를 설치할 때 사용한다. 기본적으로 이전 버전의 같은 패키지가 있을 경우 설치가 되지 않는다. (--install)

-U

기존의 패키지를 새로운 버전의 패키지로 업그레이드할 때 사용한다.

만약 설치된 패키지가 없을 경우에도 새로운 버전을 설치할 수 있는데

이 경우에는 i 옵션과 같다고 볼 수 있다.(--upgrade)

-F

이전 버전이 설치되어 있는 경우에만 설치한다. (--freshen)

-v

메시지를 자세히 보여준다.

-h

설치 상황을 ‘#’ 기호로 표시해 준다.

--force

기존 버전이 설치되었을 경우처럼 강제로 설치할 때 사용한다.

--nodeps

의존성 관계를 무시하고 설치한다. rpm 설치 시에 의존성 관계에 있는 패키지가 존재하지 않을 경우에는 설치가 되지 않는데 그런 경우 강제로

설치할 때 사용한다.

--vv

메시지를 아주 자세히 보여준다.

--test

실제로 파일에 기록하는 작업을 제외한 대부분을 테스트할 때 사용한다.

--rebuilddb

특정한 패키지 설치 후에 rpm 패키지를 검색했으나 나타나지 않을 때

rpm 데이터 베이스를 업데이트할 때 사용한다.

 


[사용 예]

$ rpm Uvh 패키지명

=> 해당 패키지를 업그레이드 설치해 주고, 메시지와 진행상황을 ‘#’ 기호로 출력한다.

 

제거(erase) 모드

설치된 패키지를 제거한다. 패키지를 제거할 때는 e 옵션을 사용하는데, 다른 패키지에 대한 의존성이 발생한 경우에는 제거되지 않는다. 의존성이 발생한 패키지를 제거하기 위해서는 먼저 의존성 관련 패키지를 제거하거나, 추가로 nodeps 옵션을 지정해야 한다.

 

 

질의(query) 모드

-패키지 관련 정보를 알아내기 위해 q 옵션을 사용한다. -q 옵션만 사용하면 패키지 설치 유무나 간단한 정보만 출력한다.

 

[주요 옵션]

옵션

설명

-q

질의 시에 꼭 사용해야 하는 옵션이다. 패키지를 찾으면 패키지 이름과 버전만 표시한다.

-i

설치된 패키지의 정보를 출력한다.

-l

패키지에서 설치한 모든 파일 정보를 출력한다.

-f 파일명

지정한 파일을 설치한 패키지 이름을 출력한다.

-c

해당 패키지의 설정 파일이나 스크립트 파일을 출력한다.

-d

해당 패키지의 문서 파일을 출력한다.

-R

어떤 패키지에 의존하고 있는지를 보여준다. , 해당 패키지가 설치되거나 동작시에 필요한 패키지 목록을 보여준다.(--requires)

 

[사용 예]

 

$ rpm qa | grep mail

=> 시스템에 설치된 모든 패키지 중에 mail이라는 문자열이 들어있는 패키지를 출력한다.

 

$ rpm ql sendmail

=> sendmail 패키지가 설치한 파일 목록을 출력한다.

 

$ rpm qc sendmail

=> sendmail 패키지 관련 환경 설정 파일이나 실행 데몬 스크립트를 출력한다.

 

검증(Verify) 모드

검증 모드는 rpm 데이터베이스에 저장되어 있는 패키지의 메타데이터(metadata) 정보를 이용하여 변경된 정보를 찾아내는 모드이다. 검증 모드는 V(--verify) 옵션을 사용하고 파일의 크기, 허가권, 소유권, 파일 형식 등에 대한 변경 정보를 출력한다.

 

리빌드(rebuild) 모드: rpmbuild

=> rpm 소스 파일인 .src.rpm 파일을 패키지 파일로 만드는 모드로서 rpmbuild라는 명령어를 사용한다.

 

[사용 예]

# rpmbuild rebuild 패키지명

=> root가 실행했을 경우에 /root/rpmbuild 디렉터리 안에 생성한다.

 

데비안 패키지 관리

데비안 리눅스는 dpkg(Debian Package)라는 데비안 패키지 관리 도구를 사용하는데, 관련 프로그램을 .deb 형태의 파일로 배포하여 설치, 삭제 등의 관리를 한다.

[검증 코드]

옵션

설명

S

파일 크기(File Size) 변경

M

파일 모드(Permission & File Type) 변경

5

메시지 다이제스트(Message Digest) 변경(보통 MD5 값 변경)

D

장치 파일의 메이저 및 마이너 번호 불일치

L

링크 파일 경로 불일치

U

소유자 변경

G

그룹 소유권 변경

 

[주요 옵션]

옵션

설명

-V

검증 시 사용하는 기본 옵션이다.(--verify)

-a

모든 패키지를 검사할 때 사용한다.

 

[사용 예]

$ rpm Va

=> 시스템에 설치된 모든 패키지를 검증한다.

 

 

기출 문제

rpm rebuilddb

=> RPM 패키지 관리 데이터베이스 문제 발생시 데이터베이스 다시 작성

 

rpm ivh 패키지명, rpm Uvh

=> 설치중 메시지 출력, 진행과정으로 # 표시하며 설치

 

 

S/W 설치

 

yum(Yellowdog Updater, Modified)

-yumrpm 기반의 시스템에서 패키지를 손쉽게 설치해 주고 자동으로 업데이트를 수행하는 명령행 기반의 유틸리티이다. 특히, rpm 패키지 설치 시에 가장 많이 발생하는 의존성 문제를 자동으로 해결해 준다. yum은 소프트웨어 저장소에 관련 패키지들을 모아두고, 네트워크를 통해서 의존성을 검사하여 설치 및 업데이트 등을 수행한다.

 

[command]

명령

설명

info [항목]

전체 패키지에 대한 정보를 출력한다. 설치가 되어 있는 경우에는

installed, 업데이트가 가능한 항목은updates라고 나타난다.

info [패키지명]

패키지에 대한 정보를 출력하는 명령이다.

check-update

업데이트가 필요한 패키지를 출력해 준다.

update [패키지명]

패키지를 업데이트할 때 사용한다.

search [문자열..]

문자열이 포함된 패키지를 찾아준다.

remove 패키지명

패키지를 삭제할 때 사용한다.


소스 설치법의 개요

일반적인 순서 압축 풀기 -> 디렉터리 이동 -> configure -> make -> make install

따라서 tar를 비롯한 압축 도구, GNU C 컴파일러인 gcc, 의존성 검사 도구인 make 등의 응용 프로그램이 필요하다.

 

cmake는 소스 컴파일 시 사용되는 Make의 대체프로그램으로 멀티플랫폼을 지원하기 위한 목적으로 등장한 오픈소스 프로젝트이다.

 

tar(tape archive)

[사용법]

$ tar [option] [파일명]

=>옵션 사용 시 기호를 사용하지 않아도 되지만, 인자값이 있는 옵션을 여러 개 지정하는

경우에는 기호를 사용해야 한다.

 

옵션

의미

-c

지정한 파일이나 디렉터리를 하나로 묶어 새로운 tar 파일을 생성한다.

-x

생성된 tar 파일을 푼다

-v

어떤 명령을 실행할 때 대상이 되고 있는 파일들을 보여준다.

-f 파일명

작업 대상이 되는 tar 파일의 이름을 지정한다.

파일명 대신 ‘-’를 쓰면 표준 입출력이 된다.

-h

심볼릭 링크가 기리키고 있는 원본 파일을 저장한다.

-p

파일이 생성되었을 때의 권한을 그대로 유지하게 해준다.

-z

gzip 관련 옵션으로 압축 파일인 tar.gz.에 사용한다.

-j

bzip2 관련 옵션으로 압축 파일인 tar.bz2에 사용한다.

-J

xz 관련 옵션으로 압축 파일인 tar.xz에 사용한다.

 

[사용 예]

$ tar cvf posein.tar *.c

=>현재 디렉터리의 .c로 끝나는 모든 파일을 posein.tar 파일을 묶는데, 진행 결과를 출력한다.

 

$ tar cvf /Backup/home.tar.gz /home exclude=/home/ihd

 

리눅스 커널 모듈은 C 컴파일러로 만들어진 오브젝트 파일로서 ‘*.ko’형태로 생성되고, 각 시스템에서 가능한 모듈은 /lib/modules/커널버전/kernel’ 디렉터리 안에 생성되어 있다.

 

gzip, gunzip => gzip압축하면 .gz가 붙고, 압축 해제는 gunzip 명령을 사용한다.

zip, unzip => zip압축하면 .zip가 붙고, 압축 해제는 unzip 명령을 사용한다.

 bzip2, bunzip2 => bzip2압축하면 .bz2가 붙고, 압축 해제는 bunzip2 명령을 사용한다.


xz, unxz => xz압축하면 .xz가 붙고, 압축 해제는 unxz 명령을 사용한다.

=>gzip bzip2와 비교하여 매우 높은 압축률을 자랑한다.

 

gcc(GNU Compiler Collection)

gccGNU 프로젝트에 의해 만들어진 일종의 컴파일러 모음이다.

 

[사용법]

$ gcc [option] 파일명


 

문제유형

기출정보

해결방안

구분

유형상세

유형

설명

커널 컴파일

 

depmod

커널 컴파일 단계에서 설치된

모듈 사이의 의존성 검사

find

/-name dep

 

modules.dep

모듈이 생성된 디렉토리안에

모듈간 의존성 목록 파일명

 

 

make mrproper

모든 설정과 커널의 소스를 초기 상태 돌리기 위해 사용하는 명령

 

 

make config

옵션 설정 중 텍스트 문답 방법

명령어(확장된 메뉴형식 방법,

X윈도우 형식, 텍스트문답 방법

menuconfig,

xconfig

 

/etc/modprobe.conf

부팅 시에 자동으로 로드되게

설정하는 파일

 

 

modprobe

모듈의 로드를 위한 명령어

(or insmod)

 

커널 컴파일

설정 이후의

과정

make clean

이전 생성된 파일 삭제

 

make bzImage

커널 이미지 생성(bzip2 형식)

 

make modules

모듈 컴파일, 커널 환경 설정에서 모듈로 설정한 기능들을 컴파일

 

make modules_install

모듈 설치, 컴파일된 모듈을 설치

 

 

/lib/modules

모듈 설치 후 모듈 파일이 생성되는

디렉토리

 

 

insmod

리눅스 커널에 모듈을 탑재하기

위하여 사용하는 명령어

 

lsmod

리눅스 커널에 탑재된 모듈을

확인하는 명령어

 

 

 

리눅스 커널 모듈은 C 컴파일러로 만들어진 오브젝트 파일로서 ‘*.ko’형태로 생성되고, 각 시스템에서 가능한 모듈은 /lib/modules/커널버전/kernel’ 디렉터리 안에 생성되어 있다.

 

모듈 관련 명령어

1)lsmod : 리눅스 커널에 적재된 모듈 정보를 출력하는 명령으로 모듈명, 크기, 다른 모듈에서 사용 중인 수, 사용 중인 모듈 순으로 출력한다.

 

2)insmod : 커널에 모듈을 적재하는 명령으로 해당 모듈을 자동으로 검색하고 삽입된다. 이 명령을 사용하기 위해서는 해당 모듈 파일이 존재하는 디렉터리까지 이동해야만 하고, 의존성이 있는 모듈인 경우에는 적재를 할 수 없다.

[사용법]

#insmod 모듈 파일명

 

3)rmmod : 커널에서 모듈을 제거하는 명령으로 다른 모듈에 의해 사용 중인 모듈은 제거할 수 없다

 

4)modprobe: 리눅스 커널에 모듈을 적재하거나 제가하는 명령이다. insmodrmmod 명령은

다른 모듈 에 의존되어 있는 경우에는 사용 불가하나 modprobe는 단일 모듈, 의존성이 있는

여러 모듈을 적재할 수 있다. 만일 모듈이 다른 모듈에 의존하고 있을 경우 필요한 모듈을 먼저 적재한다

 

-l 사용 사능한 모듈 정보를 출력한다.

-r 모듈을 제거할 때 사용하는 옵션으로 의존성이 있는 모듈들을 찾아서 사용되지 않는다면 자동으로 제거한다.

-c 모듈 관련 환경 설정 파일의 내용을 전부한다.

 

모듈 의존성 파일:modules.dep

모듈 간의 의존성을 기록한 파일로 /lib/modules/커널버전디렉터리 안에 위치한다. 이 파일에는 모듈 파일명이 기록되고, 콜론(:) 이후에 의존성이 있는 모듈 파일명이 차례로 나열된다. 모듈간의 의존성이 변경되면 modules.dep 파일의 내용이 변경되어야 modprobe 명령이 정상적으로 동작한다.

 

커널(kernel)

리눅스에서 커널은 시스템 자원을 소유하고 관리하는 역할을 담당한다.

 

커널 컴파일(compile): 커널 소스를 다운로드하여 사용하는 시스템에 최적화된 커널을 만드는 과정이다.

커널 컴파일을 하기 위해서는 C 컴파일러인 gcc, 어셀블러, 링커, make 유틸리티 등의 개발도구가 설치되어야 한다. 관련 도구가 설치가 되어 있다면, 설치하려는 리눅스 커널 버전의 소스를 /usr/src/kernels 디렉터리에 다운로드한다.

 

커널 소스 파일 압축해제 -> 커널 소스의 설정 값 초기화(make mrproper) -> 커널 컴파일 옵션 설정 작업(make menuconfig) -> 커널 이미지 파일 생성 작업(make bzImage) -> 커널 모듈 생성을 위한 컴파일 작업(make modules) -> 컨널 모듈 설치 작업(make modules_install) -> 커널 모듈 파일 복사, grub.conf 파일 수정(make install) -> 새로운 커널 사용을 위한 시스템 재부팅

 

커널 소스 파일은 tar 명령의 압축 해제 옵션을 이용한 후에 관련 디렉토리로 이동

make mrproper 명령은 기존에 설정된 값을 초기화하는 명령으로 오브젝트 파일 뿐만 아니라 설정된 환경 파일인 .config 파일까지 지운다. 커널 컴파일 옵션 설정 작업은 다양한 도구들을 이용할 수 있고, 설정 규칙은 y, m, n으로 나눈다. y(yes)는 선택서 커널에 포함시킨다는 의미이고, m(module)은 모듈로 생성한다는 의미를 나타내고, n(no)를 선택하지 않는다는 의미이다.

 

make bzImage 명령은 커널 이미지를 생성할 때 bzip2로 압축해서 생성한다.

make modules 명령은 커널 옵션 설정 시 ‘m’으로 선택한 항목들을 모듈 만드는 과정

make modules_install은 모듈 관련 디렉터리인 /lib/modules/커널버전 디렉터리 안에 복사하는 과정이다.

make install은 커널 모듈 파일 복사 및 grub.conf 파일 자동 수정 작업

 

 

 

주요 도구

설명

menu config

텍스트 기반의 설정 도구로 터미널 환경에 y,m,n으로 설정한다.

make menuconfig

텍스트 기반의 컬러 메뉴를 제공하고, 커서를 이용해서 이동이 가능하다. 가장 보편적으로 사용하는 도구이다.

make clean

생성된 오브젝트 파일을 제거하고 다시 configure할 때 쓰이는 명령이다. 커널 컴파일할 때도 설정된 작업을 초기화하기 위해 make clean 명령을 사용할 수 있으나, 오브젝트 파일만을 지울 뿐 환경 설정한 내용이 저장되는 .config 등은

지우지 못하므로 make mrproper를 것이 좋다.

 

주변 장치 설정

디스크 확장 절차

 

디스크 인식 여부 확인: fdisk l 명령을 이용해서 확인할 수 있다

파티션 작업: ‘fdisk 장치명명령을 실행한 후에 원하는 용량만큼 할당한다.

시스템 재부팅: fdisk 명령을 실행한 후에는 반드시 재부팅해야 한다.

파일 시스템 생성: ext4 파일 시스템으로 생성한다.

=> mkfs.ext4 /dev/sdb1

디렉터리 생성: 마운트 포인트에 해당하는 /backup 디렉터리를 생성한다.

마운트 작업

# mount t ext4 /dev/sdb1 /backup

마운트 및 용량 확인

# mount

# df -h

/etc/fstab 파일 등록: vi 편집기를 이용하여 아래의 내용을 추가한다.


프린트 관련 명령어

 

BSD 계열 명령어 lpr, lpq, lprm, lpc

System V 계열 명령어 lp, lpstat, cancel

 

프린트 관련 명령어

lpr 프린터 작업을 요청하는 명령

lpq 프린터 큐에 있는 작업의 목록을 출력하는 명령

lprm 프린터 큐에 대기 중인 작업을 삭제하는 명령

lpstat 프린터 큐의 상태를 출력해 주는 명령이다.

리눅스의 프린터 설정에 관련된 파일이 저장된 곳=> /etc/printcap

 

스캐너 관련 명령어

 

sane-find-scanner

USB SCSI 스캐너와 관련 장치 파일을 찾아주는 명령어이다.

 


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

 

커널모듈

 

환경설정 /etc/modprobe.conf

 

명령어 modprobe(-i, -l, -r 옵션 사용)

 

수동명령어 커널 적재(설치, 로드, 삽입) --- --> insmod

커널 확인(목록) -------> lsmod

커널 제거(삭제) ------------------> rmmod

 

모듈의존성 ---------------------------------------> depmod

 

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

 

FDISK 는 명령어로 확인

 

fdisk -l 명령으로 장치명을 알아낸다.

 

fdisk 장치명

 

헥사코드값을 표로 보여준다.

 

리눅스파티션 83

스왑파티션 82

LVM 8e

RAID fd

 

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

 로그 관련파일 /etc/syslog.conf

 

메시지타입/메시지우선순위 저장위치

kern* /dev/console

 

*.warn /var/log/messages

 

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

 

로그 순환 관리 logrotate

 

vi /etc/logrotate.conf

 

/var/log/messages { 순환관리할 로그파일명

( ) 순환주기 => (daily)/(weekly)//

create ( ) root root 로그파일권한

( ) 5 순환개수

}

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

시스템 로그 분석 및 관리

 

시스템에서 일어나는 모든 사건이나 이벤트 등은 각 서비스별로 기록되는데, 이러한 기록들을 로그(log)라 부른다.

 

로그 기록과 관련된 패키지로 리눅스 초기에는 syslog라는 패키지를 사용하였다. syslogd라는 데몬이 /etc/syslog.conf 설정 파일을 기반으로 서비스별 로그 파일을 /var/log 디렉터리에 생성하였다.

 

[주요파일]

파일명

설명

/etc/rc.d/init.d/rsyslog

rsyslogd 데몬을 동작 시키는 스크립트로 start, stop, restart

등의 인자값을 사용한다.

/etc/rsyslog.conf

rsyslogd 데몬의 환경 설정 파일이다.

/etc/sysconfig/rsyslog

rsyslogd 데몬이 실행과 관련된 옵션이 설정되는 파일이다.

/sbin/rsyslogd

실제 rsyslogd 데몬 실행 명령이다.


 

/etc/rsyslog.conf 파일

[기본 구성 형식]

facility.priority action

=>facility는 일종의 서비스를 의미하는데, 메시지를 발생시키는 프로그램의 유형이라고 볼 수 있다. priority는 위험의 정도를 나타내는데, 설정한 수준보다 높아야 메시지를 보낸다. 설정한 값 앞에 =을 사용할 경우에는 해당 레벨의 위험도와 같은 경우에만 메시지를 기록하고, !는 제외시킬 때 사용한다. action은 메시지를 보낼 때 목적지나 행동들에 관한 설정으로 보통 파일명을 적는다.

 

- facility: 메시지를 보내는 서브 시스템의 이름이다.

- priority: 메시지를 받는 파일, 장치, 컴퓨터나 사용자의 이름이다.

 

) *.emeg

=> 모든 서비스들에 대한 비상 수준의 메시지들을 모든 로그 파일에 기록하도록 한 것이다.

 

 [facility의 종류]

facility

설명

cron

cron, at과 같은 스케줄링 프로그램이 발생한 메시지

auth,security

login과 같이 인증프로그램 유형이 발생한 메시지

authpriv

ssh와 같이 인증을 필요로하는 프로그램 유형이 발생한 메시지로 사용자

추가 시에도 메시지가 발생함

daemon

telnet. ftp 등과 같이 여러 데몬이 발생한 메시지

kern

커널이 발생한 메시지

lpr

프린트 유형의 프로그램이 발생한 메시지

mail

mail 시스템이 발생한 메시지

mark

syslogd에 의해 만들어지는 날짜 유형

news

유즈넷 뉴스 프로그램 유형이 발생한 메시지

syslog

syslog 프로그램의 유형이 발생한 메시지

user

사용자 프로세스

uucp

UUCP(Unix to UNIX Copy Protocol)이 시스템이 발생한 메시지

local0~local7

여분으로 남겨둔 유형

*

모든 facility를 의미

 

[priority의 종류]

 

priority

설명

none

지정한 facility를 제외, 보통 앞에 다른 facility에 대한 설정을 하고

; 뒤에 특정한 facility를 제외할 때 사용

debug

프로그램을 디버깅할 때 발생하는 메시지

info

통계, 기본 정보 메시지

notice

특별한 주의를 필요로하나 에러는 아닌 메시지

warning, warn

주의가 필요한 경고 메시지

error, err

에러가 발생하는 경우의 메시지

crit

크게 급하지는 않지만 문제가 생기는 단계의 메시지

alert

즉각적인 조정을 해야 하는 상황

emerg, panic

모든 사용자들에게 전달해야 할 위험한 상황

 

 

로그 파일 관리: logrotate(로그파일의 크기를 제한하고 관리하기 위한 프로그램)

 

로그 파일은 계속적으로 덧붙여지면서 쌓이는 형태로 이를 방지하기 위해서 로그 파일을 여러 개로 분할해 주는 프로그램의 logrotate이다. logrotate는 로그파일의 자동 로테이션 기능, 압축 기능, 제거 등을 지원한다. 각각의 로그 파일은 하루, 일주일, 한달 단위로 로테이션을 할 수 있다. 시스템과 관련된 기본적인 설정은 /etc/logrotate.conf에서 제어하고, 응용 프로그램은 /etc/logrotate.d 디렉터리 내에 위치하여 로그 파일을 관리하고 있다.

 

/etc/logrotate.conf의 주요설정

weekly => 로그 파일을 일주일마다 로테이트 한다.

rotate 4 => 최대 4번까지 rotate를 하는 설정, 4주 동안 백업한 로그를 유지하도록 지정

create => 로테이트를 한 후에 비어 있는 로그 파일을 생성하도록 설정하는 항목이다.

오래된 백업 로그 파일들 이후에 새로운 로그 파일들을 생성할 것인지 설정

/var/log/wtmp ~ => 로그 파일명을 명기하면 별도로 지정이 가능하다. /var/log/wtmp는 한 달마다 로테이트하지만, 파일 크기가 1MB가 되면 그 이전이라도 로테이트를 실행한다.

 


로그 관련 주요 파일

1) /var/log/messages

시스템에서 발생하는 표준 메시지가 기록되는 파일로 대부분의 로그가 이 파일에 쌓이고, root만이 읽을 수 있도록 설정되어 있다.

 

2) /var/log/secure

인증에 기반한 접속과 관련된 로그가 기록되는 파일로 보통 login(telnet ssh), tcp_wrappers, xinetd 관련 로그가 쌓인다.

 

3) /var/log/dmesg

시스템이 부팅할 때 출력되었던 로그가 기록되는데, 보통 커널 부트 메시지 로그라고 한다.

/bin/dmesg =>dmesg(기출문제) 파일의 내용을 확인하는 명령어

 

4) /var/log/maillog

sendmail, dovecot 등 메일 관련 작업이 기록되는 로그 파일이다.

 

5) /var/log/xferlog

FTP 접속과 관련된 작업이 기록되는 파일

 

6) /var/log/boot.log

부팅시 발생되는 메시지가 기록되는 파일로 보통 부팅 시 동작하는 데몬 관련 정보가 기록된다.

 

7) /var/log/lastlog

telnet이나 ssh를 이용해서 접속한 각 사용자의 마지막 정보가 기록되는 파일이다. 바이너리 파일로 lastlog라는 명령으로 확인한다.

 

8) /var/log/wtmp

콘솔, telnet, ftp 등 이용하여 접속한 사용자 기록, 시스템을 재부팅한 기록 등의 로그가 쌓이는 파일이다. 바이너리 파일로 last라는 명령으로 확인한다.

 

9) /var/log/btmp

wtmp와 반대되는 로그로 접속이 실패한 경우를 기록한다. lastb라는 명령으로 확인한다.

 

[SSH 클라이언트 명령어] : ssh

리눅스에서는 openssh-clients 패키지를 설치하면 ssh 명령을 이용해서 접속할 수 있고, 윈도우에서는 Xshell 등과 같은 프로그램을 이용해야 한다.

 

[사용법]

$ ssh [option] 호스트명 or IP 주소

$ ssh 계정 이름@호스트네임

=> -l 옵션 대신에 사용하는 방법으로 클라이언트 계정과 서버의 계정이 다르면 계정 이름을 명기해야 한다.

$ ssh 호스트네임 명령

=> rsh와 같이 원결 셸을 사용할 수 있는데, 접속 없이 명령만 내릴 때 유용하다.

 

옵션

설명

-l

다른 계정으로 접속할 때 사용된다.

-p

ssh 서버의 포트 번호가 22번이 아닌 경우 p 옵션을 사용해서

바뀐 포트를 지정할 때 사용한다.

 

인증키를 이용한 SSH 서버 접속: ssh-keygen

SSH 서버를 접속할 때 패스워드를 입력하여 접속하지만 인증키를 이용하여 접속할 수 있다. SSH 클라이언트에서 ssh-keygen 명령을 이용해서 비밀키와 공개키를 생성하고, SSH 서버에 공개키를 복사하면 된다.

 

ssh를 사용할 때 인증키를 사용하면, 로그인 할 때 마다 암호를 직접 입력하는 것보다 더욱 안전하며, (ssh-keygen)을 이용하여 생성한다. 그리고, ssh를 이용하요 생성한다. 그리고, ssh를 이용하여 파일을 복사할 수 있는데, 이 때 사용하는 명령어는 (scp)이며, ssh 접속을 다른 프로그램이 사용할 수 있도록 포트 포워딩 해주는 것은 (터널링)이라고 한다.

 

인증키를 원격의 서벙 복사할 때 사용하는 scp

예를 들어 복사하려는 파일명이 ‘dumb’라고 하고 접속하려는 원격 서버의 주소는 www.foobat.com이라고 하고 쉘 계정을 sulinux2라 한다면 dumb라는 파일을 www.foobar.com sulinux2 계정 홈디렉터리에 복사하는 방법은 아래와 같다.

 

$ scp dumb sulinux2@www.foobar.com; .

 

ssh 터널링이란, ssh 접속을 다른 프로그램이 사용할 수 있도록 Port Forwarding해주는 것을 말한다. ssh 터널링을 이용하여 암호화접속을 사용하지 않는 네트워크 접속을 보다 안전하게 해준다.

 

 

 

PAM(Pluggable Authentication Module)

=>PAM을 구성하는 설정 파일은 /etc/pam.d/etc/pam.conf 파일이 있다.

 

 

1) PAM은 사용자를 인증하고 그 사용자의 서비스에 대한 접근을 제어하는 모듈화된 방법을 말한다. PAM은 응용 프로그램들에게 사용자 인증 방법을 선택할 수 있는 공유 라이브러리의 묶음을 제공한다. 리눅스에서 PAM 프로젝트의 목적은 소프트웨어 개발과 안전한 권한 부여 및 인증 체계를 분리하는데 있다. PAM은 특정 서비스에 대한 사용자 또는 그룹들의 허가 목록 파일, 특정 서비스에 대한 사용자 또는 그룹들의 거부 목록 파일, 사용자의 패스워드 길이 제한 등에 사용되고 있다.

 

2) PAM의 구성

PAM에서 제공하는 라이브러리는 /lib/security에 위치하고 동적으로 로드 가능한 오브젝트 파일(.so) 형태로 되어 있다. PAM을 이용하는 서비스들은 /etc/pam.d 디렉터리 안에 설정되어 있고, 특별히 지정되지 않는 서비스에 대한 인증은 /etc/pam.d/other에서 관리한다.

 

[PAM 설정 파일의 구성]

type control module_name module-arguments

 

type: PAM에 어떤 타입의 인증이 사용될 것인지를 알려주는 항목으로 같은 타입의 모듈이

쌓일 수도 있고, 사용자에 인증되기 위한 다중 요구사항을 만족하도록 요청할 수 있다.

accout, auth, password, session

  

control: 통제를 담당하는 부분으로 PAM에 무엇을 해야 할 지를 알려준다.

module_name:사용하는 모듈명을 명기하는 부분으로 /lib/security에 있는 모듈명을 기입한다.

module-argument:지정한 모듈이 사용하는 인수를 기입한다.

 


PAM의 주요 모듈

pam_securetty.so

=> 접속하는 계정이 root인 경우 /etc/securretty 파일에 기록된 터미널을 통하는 경우에만 허가하도록 한다. /etc/pam.d/login /etc/pam.d/remote 파일에 설정되어 있고, 적용받는 관련 서비스는 텔넷이다.

 

pam_lisfile.so

=>임의의 파일에 대해 서비스를 허가하거나 거부하는 방법을 제공한다. 레드헷 계열인 경우에는 /etc/pam.d/vsftpd 파일에 설정되어 ftp 사용자 거부 목록 파일로 이용되고 있다.

 

pam_nologin.so

/etc/nologin 파일이 존재하면 root만 로그인할 수 있고, 다른 사용자는 에러 메시지와 함께 거부할 때 사용한다. 로그인과 관련된 서비스인 login, remote, sshd 등에 설정되어 있어서 대부분 영향을 받는다.

 

pam_deny.so

접근을 무조건 거부할 때 사용하고, 응용 프로그램에게 항상 실패를 리턴한다. other, system-auth 등에 사용된다.

 

pam_wheel.so

=> root 권한을 얻을 수 있는 사용자를 wheel이라는 그룹으로 묶어서 사용하도록 지원하는 모듈이다. su 명령과 관련된 /etc/pam.d/su에 사용하면 매우 유용한다.

 

 

 

tripwire

침임자가 시스템 침입에 성공하면 향후 접속을 용이하게 하기 위해 백도어 프로그램인 트로이 목마나 루트킷 등의 프로그램을 설치하는 경향이 있다.

 

tripwire/etc/tripwire 디렉터리에 설치된다. 디렉토리에 생성되는 파일

twcfg.txt : 설치를 위한 환경 설정 파일

twpol.txt : 정책파일

twinstall.sh : 설치 스크립트 2.4부터 tripwire-setup-keyfiles 명령어로 변경된다.

 

- 무결성 검사하기

=> # /usr/sbin/tripwire check

 

- 데이터베이스 갱신

=> # /usr/sbin/tripwire update

# /usr/sbin/tripwire m u

 

COPS(Computer Oracle and Password System)는 리눅스 시스템에 대한 보안 감시 활동을 위한 프로그램이다.

백업

 

rsync(remote synchronous)

네트워크로 연결된 원격지의 파일들을 동기화하는 유틸리티로 예전에 사용하던 rcp(remote copy)에 비해 처리속도도 빠르고 다음과 같은 기능을 제공한다.

 

링크된 파일이나 디바이스 파일도 복사하고, 그룹을 포함한 소유권 및 허가권도 유지하여 복사할 수 있다.

sshrsh을 이용하여 전송 가능하고 root 권한이 필요하지 않다.

익명 사용자 및 인증되 사용자를 지원하여 미러링에 이상적이다.

로컬 시스템의 백업 시에는 별다른 서버 설정 없이 사용이 가능하다.

 

[사용법]

$ rsync [option] source destination

 

[주요 옵션]

옵션

의미

-r

하위 디렉터리까지 실행한다.(--recursive)

-i

심볼릭 링크를 그대로 보존한다.

-p

퍼미션을 그대로 보존한다.

-t

타임스태프를 그대로 보존한다.

-g

그룹 소유권을 그대로 보존한다

-o

소유권을 그대로 보존한다.(root만 가능)

-D

디바이스 파일을 그대로 보존한다.(root만 가능)

-H

하드 링크를 그대로 보존한다.

-a

-rlptgoD를 한번에 실행할 때 사용하는 옵션이다.

-v

진행 상황을 자세히 출력한다.

-u

업데이트된 내용만 전송한다.

-z

전송할 때 압축한다.

-b

백업할 때 동일한 파일이 존재하는 경우에 ~를 붙여서 백업 파일을 생성

-e

원격지에 접속할 때 사용할 프로토콜을 지정하는 옵션이다.

일반적으로 ssh를 사용해서 최근에는 명기하지 않아도 된다.

 

 

[centos] -> 사용할 rsync 서비스 이름

path= 데이터 원본 경로

 

[백업 용어]

예약어

설명

ALL

모든 서비스 또는 모든 호스트를 나타냄

LOCAL

같은 도메인에 있는 모든 호스트로 “.문자를 포한하지 않는

모든 호스트

KNOWN

이름이 KNOWN인 호스트 또는 이름(주소)을 알고 있는 호스트

UNKNOWN

이름이 UNKNOWN인 호스트 또는 이름(주소)을 모르고 있는 호스트것을 의미

 

 

dd(data dumper)

파티션이나 디스크 단위로 백업할 때 사용하는 유틸리티로 사용하기는 쉬우나 많은 시간이 소요된다.

 

[사용 예]

# dd if=/dev/sda 1 of=/dev/sdb1 bs=1k

=> 블록 사이즈 1KB 단위로 하여 /dev/sda1/dev/sdb1으로 백업한다.

 

# dd if=/dev/sda 1 of=/dev/sdb1 bs=1M

=> 블록 사이즈 1MB 단위로 하여 /dev/sda1/dev/sdb1으로 백업한다.

 

dd 주요 옵션

if=FILE : 표준 입력을 대신할 파일 입력을 지정한다.

of=FILE : 표준 출력을 대신할 파일 출력을 지정한다.

 

 

백업 용어 정리

- 제로 데이 백업(A Day-zero Backup): 시스템을 설치한 후 사용자들이 사용해 보기 전에 시스템의 모든 파일들과 프로그 램들을 백업한다.

 

- 풀 백업(A Full Backup) : 일반적인 기준에 의하여 주기적으로 시스템의 모든 파일들과 프로그램 들을 백업한다.

 

변경분 백업(A Incremental Backup): 앞선 백업에서 변경된 부분만을 골라 주기적으로 백업한다.

어플리케이션등 새로 추가 되거나 변경 삭제되는 것과 같이 특정한 이벤트 후나 주기적으로 이전 백업 후 변경된 파일들만 백업하는 겻이다.

 

단순 백업: 모든 것은 한꺼번에 백업하고 그 다음부터는 앞선 백업에서 변경된 부분만을 골라서 백업한다. Full Backup(시스템내의 모든 파일 백업)을 진행 후 그 이후부터 Incremental Backup(시스템내의 변경분에 대한 백업)을 진행하는 것

 

다단계 백업: 좀더 적은 비용을 들이면서도 백업 보장 기간을 늘리기 위해 백업한다.

CPIO(copy input to output)

=> 파일을 아카이브 형태로 복사하는 프로그램이나 주로 백업을 위하여 테이프 드라이브에 저장을 하거나 커널에 익스텐션 모듈을 인식하기 위해 사용된다. 그 외에도 여러 가지 기능으로 다양한 용도로도 사용된다.

 

=> tar와 비슷한 유틸리티로 많은 양의 데이터에 대해서는 tar보다 빠르다. 장치 파일이나 네트워크 파일 등의 특수 파일도 백업이 가능하고 백업본의 크기도 작고, 백업본에 손상된 부분이 있더라도 손상된 부분을 제외하고 나머지 부분을 복구한다.

 

rdist

=> 시스템 관리 및 전체 노드의 저장장치를 항상 동일하게 유지시키는 데 사용한다. /etc/passwd, /etc/shadow, /etc/group 등을 전체 노드가 항상 일치하도록 하는데 사용되고 있다.

 

tar

-f 옵션 : tar 파일의 내용을 사용할 때에는 반드시 사용(저장파일 및 장치를 지정)



TCP Wrapper

 

TCP Wrappertcpd라는 데몬이 슈퍼데몬인 inetd에 의하여 수행되는 서비스들의 접근을 제어하도록 하는 프로그램이다. 접속을 허락한 호스트만 접속할 수 있도록 하거나 원하지 않는 호스트의 접근을 막도록 해주는 접근 제어를 담당한다. 주로 TCP 연결을 기반으로 하고 inetd에 의해 관리되는 telnet, ftp, rlogin, rsh 등을 감시하고 필터링 할 수 있다.

 

TCP wrapper는 접근이 허가된 호스트의 목록 파일인 /etc/hosts.allow 파일과 접근이 금지된 호스트의 목록 파일인 /etc/hosts.deny 파일을 이용한다.

 

이 두 파일의 검색 순서는 /etc/hosts.allow를 먼저 읽어 들여서 등록된 호스트를 허가하고

/etc/hosts.deny에 설정된 호스트를 금지시킨다. , /etc/hosts.allow 파일에 등록되면, /etc/hosts.deny 파일에 상관없이 허가된다.

 

관련 파일 작성 규칙

 

/etc/hosts.allow /etc/hosts.deny 파일 설정 시에 새로운 줄(줄 바꿈)은 무시되고 줄을 연장 할 때는 백슬래시()를 사용해야 한다. 빈 줄 혹은 ‘#’으로 시작되는 줄은 주석으로 간주되고, 기본적인 형식은 다음과 같다.

 

daemon_list : clent_list [ :shell_command]

 

daemon_list

한 개 이상의 데몬(서버 프로그램) 프로세스 혹은 예약어(와일드카드)를 쓸 수 있다. 여기서 주의할 점은 텔넷 관련 정책을 세울 경우에 telnet이라는 서비스명이 아닌 in.telnetd와 같은 실행 데몬명을 적어야 한다. 여러 데몬을 명기할 때는 쉼표(,)로 구분한다.

[예약어]

 

[설정 예]

# vi /etc/hosts.deny

ALL : ALL

 

client_list

한 개 이상의 호스트 이름, 주소, 패턴 혹은 예약어(클라이언트 이름 혹은 주소가 일치하는 것)를 쓸 수 있다. 일반적으로 IP주소나 도메인을 기입하고, 사용 가능한 네트워크 주소 대역 및 도메인 대역은 다음과 같다.

 

[사용 가능한 예]

192.168.1

192.168.1.0/255.255.0

.example.com

 


패턴형식 : '.'의 위치에 유념해야 하고, ALL':'은 공백이 있어야 한다.
    1)모든 서비스를 모든 호스트에 대해 거부 : /etc/hosts.deny파일에 적는다.
      ALL : ALL
    2) 특정 호스트에 특정서비스 접근 허용 : /etc/hosts.allow파일에 적는다.
      ALL : localhost, .aaa.com   => localhostaaa.com의 모든 호스트들에게 모든 서비스를
                                    허용한다는 뜻이다.
      in.telnetd : 192.168.0.2 => 192.168.0.2에서 텔넷 접속에 대해서만 접근을 허용한다.
      ALL : .aaa.com EXCEPT killer.aaa.com => killer.aaa.com를 제외한 aaa.com의 모든 호스트들
                                             에게 모든 서비스를 허용한다.
      ALL EXCEPT in.ftpd : .aaa.com EXCEPT bad.aaa.com => bad.aaa.com를 제외한 aaa.com의 모든
      호스트들에게 ftp서비스를 제외한 모든 서비스를 허용한다.
      in.telnetd, in.figerd : 233.234.235., .aaa.com => 233.234.235.* 네트워크에 속한 모든 호
                                                       스트와 .aaa.com에 속하는 모든 호스트들
                                                       은 텔넷서비스와 finger서비스를 허용함.
      ALL : ALL : DENY => 그외의 모든 네트워크 호스트는 어떠한 서비스도 받을 수 없다. 만약에
                         hosts.allow를 이렇게 설정해 놓으면 별도로 hosts.deny파일이 필요없다.
      ALL : 192.168.0.0/24 => IP/넷마스크를 이용하여 설정하는 방법으로 192.168.0.0부터 192.16
                             8.0.255까지 모든 서비스에 대하여 허가한다.

xinetd

 

(1) xinetd의 개요

xinetd는 리눅스 커널 2.4버전부터 슈퍼 데몬인 inetd를 대체하기 위해 등장하였다. inetd는 접근 제어를 위해 TCP Wrapper를 이용했지만, xinetd는 환경 설정 파일을 이용해서 자체적으로 접근 제어가 가능하다. 또한 IP 주소 당 접속 수 제한, 시간대별 서비스 제한, Dos 공격에 대비한 설정 등을 추가로 제공한다.

 

(2) xinetd의 구성

grep V ‘^#’ /etc/httpd/conf/httpd.conf

 

구성 요소

설명

/etc/xinetd.conf

xinetd 데몬의 전체적인 환경 설정을 담당하는 파일로 이 곳에 설정하면 xinetd 데몬에서 관리하는 전체 서비스에 영향을 준다

/etc/xinetd.d

xinetd 데몬에 의해 관리 및 제어되는 서비스 파일들이 위치하는 디렉터리이다. 이 디렉터리 안에 telnet. rlogin, rsh, rsync 등의 관련 서비스 파일을 생성하면 된다.

/etc/rc.d/init.d/xinetd

xinetd 데몬을 제어하는 데몬 스크립트 파일로 stop, start, restart 등의 인자 값을 사용해서 제어한다.

 

 

xinetd의 전체적인 환경은 /etc/xinetd.conf 파일에 설정하지만, 관련 서비스에 대한 자세한 설정은 /etc/xinetd.d 디렉터리 안에 파일을 생성하고 값을 부여한다. 대부분의 설정 항목들은 xinetd.conf에서 사용하는 것들을 그대로 사용할 수 있다.

 

port는 서비스를 활성화 할 경우 xinetd가 리스닝을 할 포트에 대한 지시자이다.

only_from은 설정된 호스트를 제외한 다른 접속은 모두 거절하라는 지시자이다.

 

ps aux ==> 실행되어 있는 프로세스 확인

netstat nlp ip ==> 실행되어 있는 서비스 확인


 

flags = REFUSE

서비스 운영과 관련된 설정으로 REFUSE는 계속적으로 재사용한다는 의미이다.

socket_type = stream

네트워크 소켓 타입을 지정하는 항목으로 속성값에는

stream, dgram, raw, seqpacket4가지 항목이 있다.

wait = no

서비스가 단일 스레드(thread)인지 다중 스레드인지 결정하는 항목. yes인 경우에는 오직 하나의 서비스만 작동하게 되며, no인 경우에는 다중 스레드로 동작하여 새로운 서비스 요청을 받아들이게 된다.

user = root

서버 프로세스의 UID를 지정하는 항목이다.

server = /usr/sbin/in.telnetd

해당 서비스를 실행하는 데몬 파일의 경로를 지정하는 항목이다.

log_on_failure += USERID

로그에 관련된 설정으로 /etc/xinetd.conf에 지정된 설정에 +또는 를 이용하여 추가로 지정할 때 사용한다.

disable = no

해당 서비스의 실행 유무를 지정하는 항목. no로 설정하면 해당 서비스를 사용하는 것이고, yes이면 해당 서비스를 사용하지 않는다

access_times = 01:00~07:00

지정된 시간에만 서비스를 이용할 수 있게 설정하는 항목이다.

redirect

해당 서비스를 다른 서버로 포워딩할 때 사용하는 항목이다.

port = 8080

해당 서비스의 포트 번호를 지정할 때 사용하는 항목이다.

nice = 10

서버의 우선순위를 지정하는 항목으로 20 ~ 19까지 지정할 수 있다.

only_from = 192.168.1.0/24

redirect = 192.168.0.15:23

=>192.168.1.0/24 대역에서 telnet으로 들어온 연결을 다른 호스트(192.168.0.15)23번으로 보낼수 있도록

 

intances = 5

=> 최대 동시 접속수는 5

 

 

Apache

아파치 2.x 버전에서는 스레드 기능을 추가하였는데, 스레드는 하나의 프로세스가 다수의 클라이언트 요청을 처리하는 방법이다. 아파치에서는 이러한 방식은 MPM(Multi-Processing Module)이라 부른다.

 

[주요 MPM 모듈]

Prefork 프로세스를 제어하는 부모 프로세스는 클라이언트의 요청이 들어올 경우를 대비해 대가히고 있다가 자식 프로세스의 생성 여부 등을 관리하는 방식이다.

 

worker 초기에 시작하는 프로세스의 개수를 지정하고, 페이지 요청이 들어오면 스레드로 처리

하는 방식이다.

 

Apache, PHP, MySQL 연동 설치

 

configure -> make -> make install 방법을 사용하지만,

MySQL‘cmake -> make install 방법을 사용한다.

 


Apache 2.2 환경 설정의 개요

주 환경 설정 파일인 http.conf 파일 설정

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

추가 환경 설정 파일 설정: httpd.conf 파일에서 관련 항목의 주석을 제거하고 설정

# vi /usr/local/apache/conf/extra/httpd-vhost.conf

아파치 데몬 시작 또는 재시작

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

# /usr/local/apache/bin/apachectl stop

Apache HTTP Server 설치하기

 

환경 설정 하기

./configure --prefix=/usr/local/apache2 enable-mods-shared=all

=> --prefix아파치가 설치될 디렉터리를 지정하는 것이고, enable-mods-shared=all 는 관련 모듈을 전부 동적 모듈로 지정하는 것이다. 동적 모듈들은 httpd.conf 파일에서 LoadModule 지시어를 사용하여 동적으로 읽어 들여야 한다.



*DSO설정확인

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

 

httpd.conf

  

=>특정 디렉터리를 제어할 때 사용하는 지시자를 <Direct /> ~ </Directory>의 형태로 작성하며, 각 디렉터리에 대한 권한 등의 여러 설정할 수 있다. 사용되는 설정 항목으로는 Options, AllowOverride, Order가 있다.

 

Options-CGI, SSI, 디렉터리의 심볼릭 링크 사용 여부를 설정하고

AllowOverride-사용자 인증에 관련된 요소로 웹 클리이언트가 특정 디렉터리에 접근할 때 해당

디렉터리에 있는 유저 인증 파일인 .htaccess 파일을 읽게 되는데,

여기에 None을 설정하면 아파치 서버는 이 파일을 무시하게 된다.

Order는 해당 디렉터리에 접근하는 호스트 인증을 담당한다.

 

 

DocumentRoot "/usr/local/apache2/htdocs"

 

=>아파치 서버가 접근하는 각 디렉토리에 어떠한 서비스와 기능들을 허용하고 삭제할 것인가를 지정한다.

 

<Directory />

Options FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

</Directory>

 

 

 

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common

 

#ErrorDocument 500 "The server made a boo boo."

#ErrorDocument 404 /missing.html

#ErrorDocument 404 "/cgi-bin/missing_handler.pl"

#ErrorDocument 402 http://www.example.com/subscription_info.html

=>존재하지 않는 페이지에 대한 요청받을 경우나 해당 디렉터리의 퍼미션이 없는 경우와 같이 에러 페이지에 대한 요청을 처리하는 부분이다.

 

httpd-userdir.conf

=>사용자들이 개인 홈페이지를 이용하려고 할 때 사용하는 파일로 외부 클라이언트들이 접근할 때는 계정 앞에 ~(tide)를 붙인다.

 

httpd-vhosts.conf

=>IP 주소 하나에 여러 도메인을 사용하는 버추얼 호스트 설정할 때 사용하는 파일이다.

 

[]

<VirtualHost *:80>

ServerAdmin webmaster@dummy-host.example.com

DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"

ServerName dummy-host.example.com

ServerAlias www.dummy-host.example.com

ErrorLog "logs/dummy-host.example.com-error_log"

CustomLog "logs/dummy-host.example.com-access_log" common

</VirtualHost>

 

<VirtualHost *:80>

=>가상 호스트를 지정하는 태그이다. 이 태그 안에 가상 호스트 관련 설정을 하면 된다.

ServerAdmin webmaster@dummy-host.example.com

=>해당 도메일을 관리하는 관리자 이메일을 주소를 적는 부분이다.

DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com“

=>기본 웹 문서가 위치하는 디렉터리를 적는다.

ServerName dummy-host.example.com

=>도메인을 적는다.

ServerAlias www.dummy-host.example.com

=>지정한 기본 도메인이외에 또 다른 호스트네임 도메인을 적을 때 사용할 수 있다.

조회하는 서브 도메인에 대하여 resolving이 되어야 한다. 보통 ServerName 항목과 연동해서 사용 한다.

 

ErrorLog "logs/dummy-host.example.com-error_log“

=>에러로그를 기록할 파일을 적는다.

 

CustomLog "logs/dummy-host.example.com-access_log" common

=>접속기록 등 일반적인 로그를 기록할 파일을 적는다.

</VirtualHost>

 

에러코드

 

[HTTP 상태 코드]

1xx 조건부 응답 코드

이 상태의 상태 코드는 상태-라인과 선택적 헤더만을 포함하는 임시의 응답을 나타내고 빈 라인에 의해서 종결되는 코드입니다.

100(계속): 서버는 요청의 첫 번째 부분을 받았으며 나머지를 기다리고 있음을 나타냄

101(프로토콜 전환): 요청자가 서버에 프로토콜 전환을 요청했으며 서버는 이를 승인하는 중

102(처리)

2xx 응답이 성공한 상태

2로 시작하는 상태 코드는 클라이언트의 요청이 정상적으로 처리되는 것을 나타냅니다.

200(성공): 서버가 요청을 제대로 처리했다는 뜻

201(작성됨): 성공적으로 요청되었으며 서버가 새 리소스를 작성했다는 뜻

202(허용됨): 서버가 요청을 접수했지만 아직 처리 중

203(신뢰할 수 없는 정보): 서버가 요청을 성공적으로 처리했지만 다른 소스에서 수신된 정보를 제공하는 중

204(콘텐츠 없음): 서버가 요청을 성공적으로 처리했지만 콘텐츠를 제공하지 않음

205(콘텐츠 재설정): 서버가 요청을 성공적으로 처리했지만 콘텐츠를 표시하지 않는 것

206(일부 콘텐츠): 서버가 GET 요청의 일부만 성공적으로 처리

207(다중 상태)

208(이미 보고됨)

 

3xx 리다이렉션 완료 상태

300(여러 선택항목): 서버가 요청에 따라 여러 조치를 선택할 수 있음

301(영구 이동): 요청한 페이지를 새 위치로 영구적으로 이동

302(임시 이동): 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다는 뜻

303(기타 위치 보기): 요청자가 다른 위치에 별도의 GET 요청을 하여 응답을 검색할 경우 서버는 이 코드를 표시

304(수정되지 않음): 마지막 요청 이후 요청한 페이지는 수정되지 않음

305(프록시 사용): 요청자는 프록시를 사용하여 요청한 페이지만 액세스 가능

307(임시 리다이렉션): 현재 서버가 다른 위치의 페이지로 요청에 응답하고 있지만 요청자는 향후 요청 시 원래 위치를 계속 사용해야 한다는 뜻

308(영구 리다이렉션)

 

4xx 요청 오류 상태

4로 시작하는 상태 코드를 만나면 짜증부터 확나게 됩니다. 그래서 'http 403 에러' 등등의 검색어를 많이 이용하시죠. 이렇듯 4로 시작하는 에러는 오류를 나타내주는 코드입니다.

400(잘못된 요청): 서버가 요청의 구문을 인식하지 못했을 때

401(권한 없음): 이 요청은 인증이 필요하며 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있을 때

403(금지됨): 서버에 접속 할 수 있는 권한이 없을 경우

404(찾을 수 없음): 서버에 페이지가 존재하지 않을 경우

405(허용되지 않는 방법): 요청에 지정된 방법을 사용할 수 없음

406(허용되지 않음): 요청한 페이지가 요청한 콘텐츠 특성으로 응답할 수 없음

407(프록시 인증 필요): 이 상태 코드는 401(권한 없음)과 비슷하지만 요청자가 프록시를 사용하여 인증해야 함

408(요청 시간초과): 서버의 요청 대기 시간 초과

409(충돌): 서버가 요청을 수행하는 중에 충돌이 발생

410(사라짐): 서버는 요청한 리소스가 영구적으로 삭제되었을 때 이 응답을 표시

411(길이 필요): 서버는 유효한 콘텐츠 길이 헤더 입력란 없이는 요청을 수락 않음

412(사전조건 실패): 서버가 요청자가 요청 시 부과한 사전조건을 만족하지 않음

413(요청 속성이 너무 큼): 요청이 너무 커서 서버가 처리 불가능

414(요청 URI가 너무 긺): 요청 URL이 너무 길어 서버가 처리 불가

415(지원되지 않는 미디어 유형): 요청이 요청한 페이지에서 지원하지 않는 형식

416(처리할 수 없는 요청범위): 요청이 페이지에서 처리할 수 없는 범위

417(예상 실패): 서버는 Expect 요청 헤더 입력란의 요구사항을 만족할 수 없음

420(Enhance Your Calm, 트위터)

422(처리할 수 없는 엔티티)

423(잠김)

424(실패된 의존성)

424(메쏘드 실패)

425(정렬되지 않은 컬렉션)

426(업그레이드 필요)

428(전제조건 필요)

429(너무 많은 요청)

431(요청 헤더 필드가 너무 큼)

444(응답 없음, Nginx)

449(다시 시도, 마이크로소프트)

450(윈도 자녀 보호에 의해 차단됨, 마이크로소프트)

451(법적인 이유로 이용 불가)

451(리다이렉션, 마이크로소프트)

494(요청 헤더가 너무 큼, Nginx)

495(Cert 오류, Nginx)

496(Cert 없음, Nginx)

497(HTTP to HTTPS, Nginx)

499(클라이언트가 요청을 닫음, Nginx)

 

 

5xx 서버 오류 시 상태 코드

서버가 클라이언트의 요청을 수행하지 못했을 경우에 나타나게 됩니다.

500(내부 서버 오류): 서버에 오류가 발생하여 요청 수행 불가

501(구현되지 않음): 서버에 요청을 수행할 수 있는 기능이 없음

502(불량 게이트웨이): 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 잘못된 응답을 받았을 경우

503(서비스를 사용할 수 없음): 서버가 오버로드되었거나 유지관리를 위해 다운되었기 때문에 현재 서버를 사용 불가

504(게이트웨이 시간초과): 서버가 게이트웨이나 프록시 역할을 하고 있거나 또는 업스트림 서버에서 제때 요청을 받지 못했을 경우

505(HTTP 버전이 지원되지 않음): 서버가 요청에 사용된 HTTP 프로토콜 버전을 지원하지 않음

506(Variant Also Negotiates)

507(용량 부족)

508(루프 감지됨)

509(대역폭 제한 초과)

510(확장되지 않음)

511(네트워크 인증 필요)

598(네트워크 읽기 시간초과 오류, 알 수 없음)

599(네트워크 연결 시간초과 오류, 알 수 없음)

 


[Options 항목]

 

항목

설명

NONE

어떤 옵션도 이용할 수 없으므로 모든 접근을 거부

ALL

MultiView 옵션을 제외한 모든 옵션을 부여(기본값)

FollowSymLinks

디렉터리의 심볼릭 링크 사용을 허용

서버가 디렉토리안의 심볼릭링크를 허용할 것인가를 결정

HTTP(Hyper Text Transport Protocol)

indexes

웹사이트를 접속할 때 index.html 파일이 없는 경우 웹서버 소스로 파일들을 보여줄 것인지를 결정한다. 주로, 웹서버에서 FTP 목록을 보여줄 때 사용한다.

includes

서버측의 SSL 허용여부.

ExecCGI

디렉토리 아래에 있는 CGI 스크립트 실행 허가

includeNOEXEC

SSL은 허용하지만 #exex #include 명령을 실행 불가

SymLinksOwnerMatch

대상 파일 또는 디렉토리가 심볼릭 링크 소유권자와 같은 소유권을 보유할 때 심볼릭 링크를 따르도록 지정

MultiViews

클라이언트 브라우저에 따라 내용을 다르게 보내는 기능

 

[AllowOverride 항목] Override 접근제한

항목

설명

NONE

AllowOverride를 사용하지 않음. , 유저 인증 파일을 사용하지 않음

ALL

httpd.conf 파일의 AccessFileName 지시자로 설정한 파일을 사용하고

관련 지시자를 사용할 수 있음

AuthConfig

AccessFileName 지시자에 명시한 파일에 대해서 사용자 인증 지시자 사용을 허락

 

 

 

[Order 항목]

Order 명령은 해당 디렉터리에 대해 IP 주소 및 도메인에 대한 필터링 순서를 정한다.

설정 순서는 표기법에 따른다.

 

Allow는 호스트 접근을 허락하면, Deny는 접근을 불허한다.

Allow from all 모든 호스트로부터의 접근을 허락한다는 뜻이며,

Deny from all모든 호스트로부터의 요청을 모든 호스트부터의 요청을 거부한다는 뜻이다.


=>order allow,deny 이면 allow 먼저 다음 deny 설정

order deny,allow 이면 deny 먼저 다음 allow 설정

 

Apache 웹 서버 동작 확인

1)httpd.conf 설정

/usr/local/apache/conf/httpd.conf 파일을 설정해야 한다.

 

 

[주요 항목 설명]

 

ServerName: 서버의 도메인 이름을 적는 부분으로 처음 설치 시에는 주석처리(#)가 되어 있으므로 맨 앞부분의 #을 없애고 활성화시킨다. 도메인이 없으면 IP 주소를 적는다.

 

DocumentRoot: 웹 문서인 HTML 문서가 위치하는 경로를 나타낸다. 특별히 변경할 이유가 없다면 기본 설정값으로 사용해도 된다.


Directory Index:여러 웹 문서 중에 처음으로 인식하는 인덱스 문서를 지정하는 부분이다. 기본값으로 index.html이 설정되어 있고, 필요하면 추가로 index.htm, index.php 등을 적어주면 된다.

 

2) 웹 문서 만들기

httpd.conf 파일의 DocumentRoot 항목에서 확인한 디렉터리인 /usr/local/apache/htdocsindex.html 파일을 간단히 생성한다.

 

3) 웹 데몬 시작하기

apachectl 명령으로 웹 데몬을 시작한다.

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

 

Apache 웹 접근 통제

아파치 웹 서버의 기본적인 설정은 모든 클라이언트의 접근이 허락되어 있다. 그러나 접근 통제가 필요한 경우에는 클라이언트의 IP 주소나 도메인에 대해 Order, Allow, Deny 지시자를 이용해서 제어할 수 있다. OrderAllow Deny 지시자의 순서를 지정하는데, 콤마(,)로만 분리해야 하고, 중간에 공백이 들어가서는 안된다.


http-info.conf

웹 브라우저를 이용하여 웹 서버의 상태 정보를 파악할 때 사용하는 파일이다.

 

=> 서버 상태 정보를 허용할 호스트를 설정한다. 이 설정을 하면 웹 브라우저를 이용하여 http://localhost/server-status라고 입력하면 웹 서버의 상태를 파악할 수 있다.

 

=> 웹 서버의 환경 설정을 보고 받을 수 있는 호스트를 설정한다. 이 설정을 사용하려면 mod_info.c가 로드되어 있어야 한다. http://localhost/server-info라고 입력하면 서버의 환경 설정을 확인할 수 있다.

 

httpd.conf 파일에 인증할 디렉터리 관련 설정

 

인증할 디렉터리에 관련 정보를 담고 있는 .htaccess 파일 생성


 

지시자

설명

AuthType

인증 형태를 지정한다. Basic 또는 Digest를 선택할 수 있다.

AuthName

웹 브라우저 인증 창에 표시되는 메시지를 설정한다.

AuthUserFile

사용자 계정 파일명을 설정한다.

Require

접속을 허가할 사용자를 설정한다. 사용자 계정 파일에 등록된 사용자 전부를 허가하려면 ‘Require valid-user’라고 설정하고, 특정 계정만

허가하려면 ‘Require user posein yuloje’ 형태로 지정한다.

 

httpd.conf:아파치 웹 서버의 기본적인 설정을 담당하는 파일

ServerRoot “/usr/local/apache”

Listen 80 아파치 웹 서버의 포트를 설정한다.

ServerName www.posein.org => 서버의 도메인 이름을 적는다.

Document “/usr/local/apache/htdocs”=>웹 문서가 위치하는 디렉터리를 나타낸다.

 

Options=>CGI, SSI, 디렉터리의 심볼리 릭킁 사용 여부 등을 설정

AllowOverride=>사용자 인증에 관련된 요소

Order=>해당 디렉터리에 접근하는 호스트 인증을 담당

 

<lfModule mpm_prefork_module>

StarvtServers 5 =>웹 서버 가동 시 처음에 실행시킬 프로세스의 수

MinSpareServers 5 =>최소로 유지해야 할 여분의 프로세스의 수

MaxSpareServers 10 =>최대로 제한되어야 할 여분의 프로세스의 수

MaxClients 150=>클라이언트들이 동시에 접속할 수 있는 최대의 수

MaxRequestsPerChild 0=>자식 프로세스가 죽기 전에 처리할 수 있는 요청의 개수. 0이면 제한이 없음을 나타냄

</lfModule>

Apache 웹 서버 실행

httpd 명령을 이용한 실행=>아파치 웹 데몬을 실행하는 명령

 

# /usr/local/apache/bin/httpd & =>웹 데몬을 구동한다

# /usr/local/apache/bin/httpd -t=> httpd.conf 파일의 문법적 오류를 검사

# /usr/local/apache/bin/httpd -S=> 설정된 가상 호스트 정보를 출력한다

 

Apache 필요한 경우에 클라이언트의 IP주소나 도메인에 대해 Order, Allow, Deny 지시자를 이용해서 제어

 

 

Order Deny,Allow

Deny from 주소

Allow from 주소

Deny 지시자가 Allow 지시자보다 먼저 검사되는데보통 대부분의 접근을 막고

Allow 지시자가 지정한 주소만 접속을 허가할 때 사용한다.

 

Order Allow,Deny

Allow from 주소

Deny from 주소

Allow 지시자가 Deny 지시자가 먼저 검사된다. 보통 대부분의 접근을 허가하고

Deny 지시자에 지정한 사용자만 접속을 거부할 때 사용한다.

 

Order Mutual-failure

Allow from 주소

Deny from 주소

Allow 지시자에 있고 Deny 지시자에는 없는 호스트만 접근을 허용한다.

-iptables 사용하기

iptabkes를 이용하여 정책을 설정할 때 가장 중요한 것은

실질적인 룰(Rule)에 해당하는 매치(Match)와 타켓(Target)이다

-타겟은 iptables에서 패킷이 규칙과 일치할 때 취하는 동작

-매치는 iptables가 규칙 타겟에 의해 명시되는 동작에 따라 패킷을 처리하기 위해서

만족해야 하는 조건들이다.

[사용법]

#iptables [-t table] action chain match [-j target]

->테이블의 기본 설정은 Filter이고, 다른 테이블 지정할 때에는 t 옵션을 사용해서 사용한다.

-액션(Action)은 사슬을 지정, 설정, 제어할 때 사용하는데,

주로 N, -A와 같은 대문자 옵션을 사용한다

-사슬(Chaing)을 설정하고 하는 사슬을 명기하는데 INPUT, OUTPUT과 같이 입력하면 되고

대소문자를 구분한다.

-마지막으로 실질적인 룰에 해당하는 매치와 지정하면 된다.

--매치는 d, -p와 같은 옵션을 사용해서 설정하고,

--타겟은 j(--jump) 옵션을 사용하여 설정한다.

 

[주요 액션]

Action

설명

-N

새로운 사용자 정의 사슬을 만든다.

-X

비어있는 사슬을 제거한다. , 기본 사슬은 제거할 수 없다.

-P

사슬의 기본 정책을 설정한다.

-L

사슬의 기본 정책을 나열한다.

-F(--flush)

사슬로부터 규칙을 제거한다.

-Z(--zero)

사슬내의 모든 규칙들의 패킷과 바이트의 카운트를 0으로 만든다

-A

사슬에 새로운 규칙을 추가한다

-I

사슬에 규칙을 맨 첫 부분에 삽입한다.

-R

사슬의 규칙을 교환한다

-D

사슬의 규칙을 제거한다


[주요 매치]

Match

설명

-s

출발지 I