반응형

파일의 퍼미션의 이해와 설정법

퍼미션(permission): 특정파일이나 디렉토리에 대하여 읽기, 기록하기, 삭제하기 등의 권한을 설정해 놓은 것으로 다중사용자 운영체제(Multi-User Operating System)에서 파일의 접근권한과 보호등을 위하여 반드시 필요한 것이다.


퍼미션 변경 명령어 : chmod


<파일과 디렉토리의 퍼미션(권한)의 의미>


퍼미션

일반적인의미

파일

디렉토리

r

읽기(read)권한

파일을 읽을 수 있음

디렉토리의 내용을 볼 수 있음

(ls로 파일리스트 확인가능)

w

쓰기(write)권한

파일에 저장, 삭제할 수 있음

디렉토리에 파일저장, 디렉토리이름 변경, 삭제등 가능

x

실행(execution)권한

파일을 실행할 수 있음

디렉토리에 접근할 수 있음(cd 로 접근가능, ls로 리스트는 불가)

s

SetUID, SetGID 권한

파일소유자(SetUID), 그룹소유자(SetGID)의 권한으로 실행함

t

Sticky Bit 권한

공유디렉토리로 사용됨


[2진수, 8진수와 퍼미션의 표시관계]


2진수

8진수

표시 퍼미션

의 미

000

0

---

아무런 권한이 없음

001

1

--x

실행(eXecution)권한만 있음

010

2

-w-

쓰기(Write)권한만 있음

011

3

-wx

쓰기와 실행권한만 있음

100

4

r--

읽기(Read)권한만 있음

101

5

r-x

읽기와 실행 권한만 있음

110

6

rw-

읽기와 쓰기 권한만 있음

111

7

rwx

읽기, 쓰기, 실행권한이 있음


[root@kangtest ~]# ls -l

합계 10356

-rw-------. 1 root root 1718 2014-12-10 18:43 anaconda-ks.cfg

-rw-r--r--. 1 root root 10507647 2014-12-14 15:50 etc.tgz

-rw-r--r--. 1 root root   146 2014-12-15 17:41 hard_sourcefile

-rw-r--r--. 1 root root 45632 2014-12-10 18:43 install.log

-rw-r--r--. 1 root root 10033 2014-12-10 18:41 install.log.syslog

-rw-r--r--. 1 root root   140 2014-12-15 15:23 linux.txt

drwxr-xr-x. 2 root root 4096 2014-12-15 10:56 movie

lrwxrwxrwx. 1 root root    18 2014-12-15 18:08 rc.local.link -> /etc/rc.d/rc.local

drw-r--r--. 2 root root 4096 2014-12-15 13:46 sulinux

-rw-r--r--. 1 root root    91 2014-12-15 17:48 sym_sourcefile

drwxr-xr-x  7 root root 4096 2014-12-16 13:37 xtables-addons-1.37


  •                 r        w      x         r   -   x                      r   -   x

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

파일유형             소유자권한부분       그룹소속자권한부분      일반다른사용자권한부분


파일유형

  • : 일반파일 임을 의미함

b  : 블럭구조의 특수파일(Block Special File)을 의미함 (예: /dev/sda)

c   : 입출력에 사용되는 특수파일(Character Special File)을 의미함 (예, /dev/console)

d   : 디렉토리(Directory)를 의미하며, 디렉토리도 하나의 특수파일로 취급됨.

l    : 심벌릭링크파일(Link File)임을 의미함.

 p   : 파이프파일(Pipe)임을 의미함.

s   : 소켓파일(Socket)임을 의미함.


퍼미션 설정하는 방법

  1. 8진수 숫자 이용 (주로 많이 사용)

         -rw-r--r-- 1 root root 0 2015-01-05 18:03 test

         [root@kangtest test]# chmod 755 test

         [root@kangtest test]# ls -l test

        -rwxr-xr-x 1 root root 0 2015-01-05 18:03 test


  1. 퍼미션 심볼문자 이용

        [root@kangtest test]# chmod a+w test

        [root@kangtest test]# ls -l

        합계 0

       -rwxrwxrwx 1 root root 0 2015-01-05 18:03 test


한번에 여러개의 퍼미션 동시에 설정하기


디렉토리에 들어가서 chmod 755 p* 를 입력한다면 디렉토리 안에 모든 파일들의 퍼미션은 755로 바뀌어있다.


<특정 디렉토리내의 모든 파일에 대하여 동시에 퍼미션 설정하기>


ex) www 디렉토리안에 파일의 퍼미션을 바꾸고자 한다면(755)


chmod -R 755 www 라고 치면 www디렉토리 안에 파일의 퍼미션은 모두 755로 바뀌어져있다.




반응형
반응형

parted 명령어를 통해서 32bit 는 16TB , 64bit 는 1EB까지 지원이 가능한 것으로 나온다.


parted를 통해 gpt로 21TB를 파티션을 나누고 ext4로 포맷을 하려고 하면 다음과 같은 상황을 만나게 된다.


Disk /dev/sdb: 21000.0 GB, 20999993032704 bytes  → 21TB

255 heads, 63 sectors/track, 2553103 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 4096 bytes

I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk identifier: 0x00000000


  Device Boot   Start      End   Blocks   Id  System

/dev/sdb1            1   267350  2147483647+  ee  GPT

Partition 1 does not start on physical sector boundary.


[root@localhost ~]# mkfs.ext4 /dev/sdb1

mke2fs 1.41.12 (17-May-2010)

mkfs.ext4: Size of device /dev/sdb1 too big to be expressed in 32 bits

   using a blocksize of 4096.


16TB이상 포맷을 가능하게 하려면 다음과 같이 수정이 필요하다.


편집기로  /etc/mke2fs.conf에 들어가서


[defaults]

    base_features = sparse_super,filetype,resize_inode,dir_index,ext_attr

    enable_periodic_fsck = 1

    blocksize = 4096

    inode_size = 256

    inode_ratio = 16384


[fs_types]

    ext3 = {

            features = has_journal

    }

    ext4 = {

            features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize

           auto_64-bit_support = 1 # add from jjkang 2016.01.07 ← 이 부분을 추가한다.

            inode_size = 256

    }

    ext4dev = {

            features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize

            inode_size = 256

            options = test_fs=1

    }


[git 설치]

필요 패키지 설치

yum install gcc

yum install kernel-devel

yum install zlib-devel

yum install openssl-devel

yum install perl

yum install expat-devel

yum install gettext-devel

yum install autoconf

yum install perl-ExtUtils-MakeMaker

yum install curl


wget http://curl.haxx.se/download/curl-7.46.0.tar.gz

tar zxvf curl-7.46.0.tar.gz

cd curl-7.46.0

./configure

make

make install


vi /etc/ld.so.conf에

/usr/local/lib 추가

ldconfig


wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.xz

unxz git-latest.xz

git-현재날짜.tar 파일이 생성

tar xvf git-현재날짜.tar

cd git-현재날짜/

./configure --with-curl/usr/local

make

make install


git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git

cd e2fsprogs

mkdir build ; cd build/

../configure

make

make install


** mke2fs는 -i 라는 옵션을 이용하여 아이노드 당 바이트 수 (bytes-per-inode)를 지정하여 파일시스템을 생성할 수 있다. 이때 주의할 점은 -i 옵션으로 주어지는 값은 최소 1024이상은 되어야한다는 것이다. -i 옵션없이 그냥 mke2fs가 사용되면 기본값으로 4096이 주어지게 된다.


>> 1024 * 128 = 131072

Warning : The exitsting disk label on /dev/sdb will be destoryed and all data on the disk will be lost. Do you want to continue?

라는 경고창이 혹시 뜬다면, parted로 파티션을 다시 나누고 진행할 것


[root@localhost build]# mke2fs -O 64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize -i 131072 /dev/sdb1

mke2fs 1.43-WIP (18-May-2015)


Warning: the fs_type huge is not defined in mke2fs.conf


Creating filesystem with 5126950912 4k blocks and 160218112 inodes

Filesystem UUID: 5c151619-d2cf-40af-8988-6f4cb400a3e1

Superblock backups stored on blocks:

   32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

   4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

   102400000, 214990848, 512000000, 550731776, 644972544, 1934917632,

   2560000000, 3855122432


Allocating group tables: done                       

Writing inode tables: done                       

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done    


This filesystem will be automatically checked every 24 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.


하면 정상적으로 생성이 된다.




반응형
반응형

1. cd 명령어란?

change directory 의 약자로 리눅스 터미널에서 디렉토리를 이동할때 사용하는 명령어다.


2. 사용방법

사용방법은 cd [-L|[-P [-e]] [-@]] [dir] 이렇게 옵션을 붙여 사용할 수 도 있으며

일반적으로는 [dir] 정도만 적어줘도 무방하다.


ex) 현재 위치에서 /home/kjj 라는 디렉토리로 접근하고자 한다면?

# cd /home/kjj 라고 입력을 하면 아래 그림처럼 /home/kjj 디렉토리로 접근이 가능하다.


ex) /home/kjj 디렉토리에서 한단계 상위 디렉토리인 /home 으로 가고자 한다면?

# cd .. 이라는 명령어를 입력하면 /home 디렉토리로 넘어간다.


ex) /home/kjj 라는 디렉토리에서 /home/kjj2로 경로를 변경하고 싶다면?

# cd ../kjj2/ 라고 ..을 통해서 /home 디렉토리를 거쳐서 kjj2 디렉토리로 접근을 하거나

# cd /home/kjj2/ 라고 kjj2의 절대경로를 써주면 이동이 가능하다.


이렇게 cd 라는 명령어도 리눅스 터미널 환경에서는 매우 많이 사용되는 명령어다.


반응형
반응형

1. ls 란?

리눅스 터미널에서 파일 및 디렉토리 리스트를 확인하고자 할 때 사용하는 명령어

(터미널을 주로 사용하는 사용자라면 많이 사용하는 명령어.)


2. 사용형식

ls [option]... [file]...

(man 페이지에 정의)


이렇게 ls 에 옵션을 넣어 사용하거나 디렉토리를 정의하면 정의한 디렉토리의 내부를 볼 수 있다.


3. 옵션들

man 에서 정의된 ls 의 옵션들은 꽤 많은데 그중에서 가장 잘 사용하는, 사용할 것 같은 옵션들만 몇개 적어보았다.


-a , --all : 해당 디렉토리에 숨겨진 파일, 디렉토리를 출력 (현재(.), 상위 디렉토리(..) 모두 출력)


-i , --inode : inode 넘버를 출력해준다.


-l : 긴 목록 형식으로 출력해준다.


-r, --reverse : 디렉토리 및 파일을 역순으로 출력한다.


-R, --recursive : 재귀적으로 서브디렉토리를 나열한다.


-s, --size : 각 파일의 할당 된 크기를 블록 단위로 출력한다.


-t : 수정 시간순으로 정렬, 가장 새로운 것 부터


* 주로 옵션은 -a 와 -l 옵션을 조합해서 보기 편하게 사용을 한다. (ex: ls -al, ls -lR 등등)

* 그리고 리눅스 버전마다 다르지만 CentOS 계열에서는 ll 이라는 명령어도 많이 사용한다.

반응형
반응형

<vmware 기준>

사례: 새로 볼륨을 추가(100G) 후 리부팅을 하였으나 fdisk -l 하였을 때 새로운 볼륨이 추가되지 않는 현상


OS : Redhat 4 버전

거의 모든 장치들은 시스템 설치 당시에 모두 생성되어 마운트까지 되어있기 때문에 왠만해서는

장치파일을 만들필요가 없다.

하지만 수동으로 장치파일을 만들어 줘야 할때가 있다.

(볼륨을 추가하고 보통 리부팅을 하면 장치파일이 자동으로 생성되는데 되지 않을 경우,

일부 오래된 OS버전에서 발생하는 것으로 추정됨)


1. 먼저 디스크(볼륨)가 인식이 되었는지 확인


 1) /var/log/dmesg 확인

   SCSI device sdc : 209715200 512-byte hdwr sectors (107374MB)

   sdc : cache data unavailable

   sdc : assuming drive cache : write through

   sdc : unknown partition table

   Attached scsi disk sdc at scsi0, channel 0, id 2 lun 0

   --> sdc 100G 가 인식이 되어있는게 보인다.


 2) /proc/scsi/scsi 확인

   Host : scsi0 channel : 00 Id : 02 Lun : 00

   Vender : VMware Model : Virtual disk Rev:1.0

   Type : Direct-Access          ANSI SCSI revision : 02

   --> 마찬가지로 추가가 되어있는 것이 보인다.


 3) /proc/partitions 확인

  major     minor     #blocks     name

   8          0       71171907     sda

   8         16      314572800     sdb

   8         32      104857600     sdc --> /dev/sdc 100G 짜리가 보인다.

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


2. 해결방법 : 블럭 디바이스를 생성 해준다.(mknod)


<사용 형식>


mknod [장치명][옵션][major 값][minor 값]


옵션

b : 블럭 디바이스 파일

c : 문자 디바이스 파일


여기서는 블럭 디바이스 파일을 생성 할 것이므로 b 옵션을 준다.


# mknod /dev/sdc b 8 32


하고 나서 fdisk -l 을 하면 /dev/sdc 가 보일 것이다.

Block device 와 Character device

[Block device]

* serial 한 특성의 데이터를 다루기 위한 디바이스를 지칭하며, Terminal, Serial Port 등이 포함이 된다.

- 데이터 버퍼링이 불가능함

- 정해진 단위(Block, Sector)로 데이터를 전송한다.

- ioctl() 시스템 콜을 이용한 핸들링을 기본으로 한다.


[Character device]

* Random Access가 가능한 데이터를 다루기 위한 디바이스를 지칭하며, Disk, Tape 등이 포함이 된다.

- 데이터 버퍼링이 가능

- 데이터 전송단위를 byte를 기본으로 한다.

- 마운트와 언 마운트가 가능하다.



Block Device

Character Device

데이터 전송

System buffer 사용 (Block, Sector)

byte 단위로 전송

I/O 전송속도

전송속도가 높다

시스템의 I/O Buffer를 사용하지 않아 느릴 수도 있으나 버퍼처리를 응용프로그램이 제어하므로 응용 프로그램의 성능에 따라 다를 수 있다

대표적인 장치

하드 디스크

테이프 장치

플로피 디스크

광 자기 디스크

단말기

프린터

플로터 및 기억장치




반응형
반응형

칼리리눅스를 설치한 후 firefox 브라우저를 통해 국내 웹사이트를 접속해보면 그림과 같이 한글이 깨져보이는 경우가 있다.



이와 같은 경우에는 다음 명령어로 fonts 패키지를 설치해주면 된다.

# apt-get install fonts-nanum*


폰트를 설치 후 다시 웹사이트를 접속한 이미지


이렇게 깨졌던 글자들이 보인다.


한글입력기 설치 및 칼리리눅스 언어 변경해보기



im-config 입력시



OK 누른다.



Yes 누른다.



ibus를 클릭하고 OK 누른다.



ibus-hangul 설치

# apt-get install ibus-hangul



터미널 창에 # ibus-setup



ibus-setup 화면



Input Method 탭 클릭



Add 클릭



안정적인 적용을 위해 리부팅을 한번 해준다.

그리고 settings 찾아 들어가서 Region & Language로 들어간다.



※ 칼리리눅스의 전체적인 언어도 한글로 바꾸고 싶다면?

Language와 Formats 부분을 English → korean(대한민국)을 찾아서 변경하고

재부팅을 해주면 된다.


input Sources에 보면 기본 English로 되어있을텐데 좌측 하단에 +를 누르고 Korean(Hangul)을 추가해준다.



추가를 하게 되면 우측 상단에 빨간색 네모로 되어있는 것 처럼 언어 선택창이 나온다.



English(US) 에서 Korean(Hangul)로 바꿔보면 이런 창이 추가로 뜨게된다.


한/영 변환 토글키 변경하기

위 화면에서 Setup을 클릭한다.


Hangul toggle key에서 기존에 추가되어있는 부분은 지우고(별도로 추가 가능)

Add를 눌러서 한/영 키로 변경한 후 Apply 버튼을 누른다.


*  노트북에서 작업이 진행되었으며 노트북 한/영 키 입력시 Alt_R로 나왔다

(데스크탑 환경에서는 다를 수도 있음)


그리고 메모장이나 터미널 창 또는 인터넷 창을 열어 한글과 영어 전환이 잘되는지 확인한다.


이 설정은 제가 직접 만져보면서 진행한거라 위 설정 중에서 필요없는 부분이 있을 수도 있음을

알려드립니다.

반응형
반응형

Root 도메인 : 도메인의 중심!(ex: ns.kjj.kr. 에서 kr 뒤에 붙는 점(.)이 루트도메인을 의미)


도메인을 질의할때 뒤에서 부터 질의를 시작한다.

ex)www.kjj.kr. 이라면 .부터 시작해서 kr → kjj → www → www.kjj.kr 식으로 찾아나간다.


쿼리 과정

DNS의 변환은 크게 두가지 방식으로 할 수 있다.

1. 반복적 DNS 변환

2. 재귀적 DNS 변환


반복적 DNS 변환은 도메인을 가지고 끝에서부터 하나씩  질의를 해나가며 알아내는 것이고

재귀적 DNS 변환은  


TLD(Top Level domain) 최상위 도메인

- 일반 도메인(generic domain) gTLD

- 국가 도메인(country domain) ccTLD

- 인터넷 인프라 도메인(infrastructure domain) ARPA


SLD(Second level domain)2단계 도메인


<네임서버 유형>

네임서버에는 Primary 네임서버, Secondary 네임서버, Cache only Server로 구분할 수 있다.


-Primary Server (프라이머리 네임서버): 독자적으로 관리하는 zone 정보파일을 유지하면서 질의에 응답하고 정보를 갱신하는 서버를 프라이머리 네임서버라고 한다.


-Secondary server(세컨더리 네임서버): 프라이머리서버에 부하가 많이 걸릴 경우 분산하기 위해 사용하거나 프라이머리서버의 자료를 백업하여 두고 프라이머리서버에 장애가 발생하면 프라이머리서버의 역할을 위임 받아서 동작하는 서버


-Master Server(마스터 네임서버): 세컨더리서버의 관점에서 볼 때 도메인 설정 자료를 백업해 오는 원본서버를 지칭


-Slave Server(슬라이브 네임서버): 마스터서버의 관점에서 볼 때 자신의 설정자료를 백업하기 위해 가져가는 서버를 지칭


-Cache Only Server(캐시온리 네임서버): 스스로 관리하는 zone은 없고 단지 반복되는 질의만을 전문적으로 수행하는 서버이다.


-Forwarder Server(포워드 서버): 질의를 해석하기 위해 다른 DNS 서버로 다시 질의를 요청하는 서버를 말한다.


[root@kangtest php-5.2.1]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1      localhost localhost.localdomain localhost6 localhost6.localdomain6

127.0.0.1 kangtest kangtest


hosts 파일에 지정되지 않은 도메인은 resolv.conf를 참조한다.

[root@kangtest php-5.2.1]# cat /etc/resolv.conf

# Generated by NetworkManager

nameserver 168.126.63.1


<DNS 네임서버와 리졸버 개요>

DNS는 크게 다음의 3가지 요소로 구성된다.

1) 도메인네임 공간(Domain Name Space)과 리소스 레코드(Resource Record)

  • 도메인 네임 공간은 도메인네임의 구성과 그 구조를 정의하는 반면, 리소스 레코드는 하나의 도메인네임이 가질 수 있는 속성정보군을 정의한다.


2) 네임서버(Name Server)

  • 네임서버는 도메인 데이터베이스의 일정영역(zone)을 소유하고 있는 DNS서버이다. 도메인 데이터베이스는 DNS 체계에 따라 분산구조를 지니고 있다.

  • 네임서버는 두가지의 모드로 동작할 수 있다.

  1. 리커시브가 아닌 모드(non-recursive mode)

  • 네임서버가 기본적으로 동작하는 동작 모드

  1. 리커시브 모드(recursive mode)

  • 네임서버가 옵션기능으로 구현, 동작할 수 있는 동작 모드이다.


3) 리졸버(Resolver)

  • 리졸버는 도메인네임서버와 사용자 프로그램(user program)간의 인터페이스의 기능을 한다.


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

<설치되어있는 bind 패키지>

[root@kangtest ~]# rpm -qa|grep bind

bind-utils-9.8.2-0.30.rc1.el6_6.1.x86_64

ypbind-1.20.4-30.el6.x86_64

samba-winbind-clients-3.6.23-12.el6.x86_64

bind-9.8.2-0.30.rc1.el6_6.1.x86_64

samba-winbind-3.6.23-12.el6.x86_64

bind-libs-9.8.2-0.30.rc1.el6_6.1.x86_64

rpcbind-0.2.0-11.el6.x86_64

PackageKit-device-rebind-0.5.8-23.el6.x86_64

bind-chroot-9.8.2-0.30.rc1.el6_6.1.x86_64


<패키지 설치>

[root@kangtest ~]# yum install -y bind

Loaded plugins: fastestmirror, refresh-packagekit, security

Setting up Install Process

Loading mirror speeds from cached hostfile

* base: centos.tt.co.kr

* extras: centos.tt.co.kr

* rpmforge: ftp.riken.jp

* updates: centos.tt.co.kr

base                                                                                                                                                                                 | 3.7 kB 00:00

extras                                                                                                                                                                               | 3.4 kB 00:00

rpmforge                                                                                                                                                                             | 1.9 kB 00:00

updates                                                                                                                                                                              | 3.4 kB 00:00

Package 32:bind-9.8.2-0.30.rc1.el6_6.1.x86_64 already installed and latest version

Nothing to do


<네임서버 정보 검색 유틸리티>

  1. host

  2. dig

  3. nslookup


host : 네임서버에 질의하여 호스트의 IP를 얻을 수 있는 가장 기본적이며 간단한 유틸리티

"host [찾고자 하는 호스트이름]"의 형태로 질의한다.

→ google 검색 결과

[root@kangtest ~]# host www.google.com

www.google.com has address 74.125.203.99

www.google.com has address 74.125.203.106

www.google.com has address 74.125.203.104

www.google.com has address 74.125.203.103

www.google.com has address 74.125.203.147

www.google.com has address 74.125.203.105

www.google.com has IPv6 address 2404:6800:4008:c02::63


dig :  최근에 많이 사용하고 있는 네임서버 검색 유틸리티이며, 기본형식으로 "dig[찾고자 하는 호스트이름]"형식을 사용한다.

→ google 검색 결과

[root@kangtest ~]# dig www.google.com


; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> www.google.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41958

;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 4, ADDITIONAL: 4


;; QUESTION SECTION:

;www.google.com.    IN    A


;; ANSWER SECTION:

www.google.com.    274    IN    A    74.125.203.105

www.google.com.    274    IN    A    74.125.203.106

www.google.com.    274    IN    A    74.125.203.147

www.google.com.    274    IN    A    74.125.203.99

www.google.com.    274    IN    A    74.125.203.103

www.google.com.    274    IN    A    74.125.203.104


;; AUTHORITY SECTION:

google.com.    68434    IN    NS    ns2.google.com.

google.com.    68434    IN    NS    ns3.google.com.

google.com.    68434    IN    NS    ns1.google.com.

google.com.    68434    IN    NS    ns4.google.com.


;; ADDITIONAL SECTION:

ns1.google.com.    235371    IN    A    216.239.32.10

ns2.google.com.    236039    IN    A    216.239.34.10

ns3.google.com.    236411    IN    A    216.239.36.10

ns4.google.com.    236441    IN    A    216.239.38.10


;; Query time: 11 msec

;; SERVER: 168.126.63.1#53(168.126.63.1)

;; WHEN: Tue Dec 30 15:39:09 2014

;; MSG SIZE  rcvd: 264


nslookup : 네임서버 질의시 가장 많이 사용하는 유틸리티이며, "nslookup [찾고자 하는 호스트이름][질의할 네임서버]"의 형식을 사용한다.

질의할 네임서버를 지정하지 않으면  /etc/resolv.conf에 지정된 네임서버에게 질의한다.


[root@kangtest ~]# nslookup www.google.com

Server:    168.126.63.1

Address:    168.126.63.1#53


Non-authoritative answer:

Name:    www.google.com

Address: 74.125.203.99

Name:    www.google.com

Address: 74.125.203.103

Name:    www.google.com

Address: 74.125.203.104

Name:    www.google.com

Address: 74.125.203.105

Name:    www.google.com

Address: 74.125.203.106

Name:    www.google.com

Address: 74.125.203.147


nslookup은 실행 후 대화형 프롬프트 >를 표시하고 /etc/resolver.conf에 정의된 첫번째 네임서버를 기본 질의 서버로 설정한다.


nslookup은 기본적으로 입력된 도메인에 대해 A레코드를 검색하고, IP주소(in-addr.arpa)에 대해서는 PTR레코드를 검색한다.


<네임서버 운영을 위한 설정파일>

bind-9.2 버전까지는 /etc/named.conf 파일을 사용하였으나 bind-9.3 버전부터(CentOS 5.X RPM)는 named.caching-nameserver.conf파일을 사용하고 있다.

이 파일은 named.rfc1912.zones 파일의 존파일 설정파일을 include 하고 있다.


named.conf 내부

options {

11      listen-on port 53 { 127.0.0.1; };  

네임서버의 포트번호와 접근할 수 있는 IP를 설정하는 지시자(외부에서 네임서버로 접근을 허용해야 한다면 포트 지시자에 허용 ip 부분에 any를 입력하여 외부와의 연결을 허용

12      listen-on-v6 port 53 { ::1; };

이 지시자는 ipv6 하의 네임서버 운영을 설정하는 것으로 현재는 필요하지 않다.

13      directory    "/var/named";

이 지시자는 DNS 의 zone파일의 위치를 지정하는 곳 zone파일의 기본 설정파일들은 /var/named 디렉토리에 모두 위치해 있다.

14     dump-file    "/var/named/data/cache_dump.db";

캐시 덤프 파일이 생성되는 파일의 절대경로 위치를 지정하는 지시자

15     statistics-file "/var/named/data/named_stats.txt";

통계파일이 생서되는 절대경로와 파일이름을 지정하는 지시자

16      memstatistics-file "/var/named/data/named_mem_stats.txt";

메모리 관련 통계파일이 생성되는 절대경로와 파일이름을 지정하는 지시자

17      allow-query { localhost; }; → any

네임서버 쿼리를 허용할 IP 혹은 IP 대역을 설정하는 지시자이다. 여기서는 외부와의 쿼리 허용을 위해서 any를 입력한다.

18      recursion yes;

외부에서 현재의 네임서버를 지정하여 사용할 수 있게 하느냐, 사용할 수 없게 하느냐를 설정하는 지시자이다. 네임서버 쿼리시에도 이 지시자의 설정에 따라 쿼리결과를 얻을 수 없도록 설정 할 수 있다. 기본은 yes로 되어있으나, 네임서버 보안을 위하여 no로 설정하도록 한다.

19

20      dnssec-enable yes;

21      dnssec-validation yes;

22      dnssec-lookaside auto;

23

24      /* Path to ISC DLV key */

25      bindkeys-file "/etc/named.iscdlv.key";

26

27      managed-keys-directory "/var/named/dynamic";

28 };

29

30 logging {

31      channel default_debug {

32              file "data/named.run";

33              severity dynamic;

34      };

35 };

이 부분은 네임서버 실행에 있어서 디버깅시 참고 할 수 있는 로그파일생성 위치를 지정하는 지시자이다. 네임서버에 에러가 발생하면 이 파일을 참고하여 디버깅하면 될 것이다.

36

37 zone "." IN {

38      type hint;

39      file "named.ca";

40 };

존파일에 정의되어 있는 (닷).의 의미는 루트 도메인이라는 뜻이며, 루트 도메인의 내용이 named.ca파일에 정의되어 있다고 알려주고 있다. type설정에서 hint라고 설정하면 루트도메인을 지정한다는 의미이며, master 라고 입력하면 1차 네임서버를 의미하고, slave 라고 입력하면 2차 네임서버를 지정한다는 의미이다.

41

42 include "/etc/named.rfc1912.zones";

43 include "/etc/named.root.key";

44


<네임서버 시작>

[root@kangtest ~]# /etc/rc.d/init.d/named start

Generating /etc/rndc.key:                               [  OK  ]

named 시작 중:                                          [  OK  ]


루트네임서버의 내용

[root@kangtest ~]# cat /var/named/named.ca

; <<>> DiG 9.9.4-P2-RedHat-9.9.4-12.P2 <<>> +norec NS . @a.root-servers.net

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26229

;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 24


;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 1472

;; QUESTION SECTION:

;.    IN    NS


;; ANSWER SECTION:

.    518400    IN    NS    a.root-servers.net.

.    518400    IN    NS    b.root-servers.net.

.    518400    IN    NS    c.root-servers.net.

.    518400    IN    NS    d.root-servers.net.

.    518400    IN    NS    e.root-servers.net.

.    518400    IN    NS    f.root-servers.net.

.    518400    IN    NS    g.root-servers.net.

.    518400    IN    NS    h.root-servers.net.

.    518400    IN    NS    i.root-servers.net.

.    518400    IN    NS    j.root-servers.net.

.    518400    IN    NS    k.root-servers.net.

.    518400    IN    NS    l.root-servers.net.

.    518400    IN    NS    m.root-servers.net.


;; ADDITIONAL SECTION:

a.root-servers.net.    518400    IN    A    198.41.0.4

b.root-servers.net.    518400    IN    A    192.228.79.201

c.root-servers.net.    518400    IN    A    192.33.4.12

d.root-servers.net.    518400    IN    A    199.7.91.13

e.root-servers.net.    518400    IN    A    192.203.230.10

f.root-servers.net.    518400    IN    A    192.5.5.241

g.root-servers.net.    518400    IN    A    192.112.36.4

h.root-servers.net.    518400    IN    A    128.63.2.53

i.root-servers.net.    518400    IN    A    192.36.148.17

j.root-servers.net.    518400    IN    A    192.58.128.30

k.root-servers.net.    518400    IN    A    193.0.14.129

l.root-servers.net.    518400    IN    A    199.7.83.42

m.root-servers.net.    518400    IN    A    202.12.27.33

a.root-servers.net.    518400    IN    AAAA    2001:503:ba3e::2:30

c.root-servers.net.    518400    IN    AAAA    2001:500:2::c

d.root-servers.net.    518400    IN    AAAA    2001:500:2d::d

f.root-servers.net.    518400    IN    AAAA    2001:500:2f::f

h.root-servers.net.    518400    IN    AAAA    2001:500:1::803f:235

i.root-servers.net.    518400    IN    AAAA    2001:7fe::53

j.root-servers.net.    518400    IN    AAAA    2001:503:c27::2:30

k.root-servers.net.    518400    IN    AAAA    2001:7fd::1

l.root-servers.net.    518400    IN    AAAA    2001:500:3::42

m.root-servers.net.    518400    IN    AAAA    2001:dc3::35


;; Query time: 58 msec

;; SERVER: 198.41.0.4#53(198.41.0.4)

;; WHEN: Wed Apr 23 14:52:37 CEST 2014

;; MSG SIZE  rcvd: 727


<네임서버 존파일 작성법>

(/var/named 디렉토리)

네임서버를 운영하기 위해서는 존(zone)파일 설정이 가장 중요하다고 볼 수 있다. 도메인에 대한 존파일의 위치는 기본적으로  /var/named/ 디렉토리이다.

[root@kangtest ~]# vi /var/named/named.localhost(예시)

 1 $TTL 1D

 2 @    IN SOA  @ rname.invalid. (

 3                                      0    ; serial

 4                                      1D   ; refresh

 5                                      1H   ; retry

 6                                      1W   ; expire

 7                                      3H ) ; minimum

 8      NS   @

 9      A    127.0.0.1

10      AAAA ::1


위와 같은 존파일은 네임서버 관리자가 빈번히 수정하는 파일로써 각각의 의미를 충분히 이해하고 있어야 한다.

$TTL

$TTL항목은 Time To Live의 약자로써 이곳에 설정한 도메인에 대한 정보를 다른 네임서버에서 읽어간 다음 읽어간 네임서버측에 얼마동안 보관하고 있을 것인가를 설정하는 항목

설정값은 초단위로 설정 예로 $ TTL 86400의 의미는 86400초 즉, 하루 24시간을 의미한다.


@

존파일내의 @의 의미는 ORIGIN을 의미하는 특수문자로 public domain을 의미한다.


IN

IN 다음으로 나오는 우측 설정을 사용한다는 의미이다.


SOA

SOA는 start of authority의 약어로써 도메인네임서버에 대한 모든 정보를 가지고 있으며, 여기서 주의할 점은 도메인이름을 적은 다음에는 항상 닷(.) 루트 도메인을 표시하여야 한다는 점이다.


    0    ;serial

  1D   ; refresh

  1H   ; retry

  1W   ; expire

  3H ) ; minimum

위의 설정들은 모두 마스터 네임서버와 슬레이브 네임서버간의 연동설정을 위한 내용들이다.

NS   @

NS 레코드는 해당 도메인의 네임서버를 지정하는 레코드이다. NS 레코드 다음에 네임서버의 도메인(닷(.) 루트도메인 포함)을 입력한다.


MX

MX 레코드는 Mail Exchanger의 약어로 해당 도메인에 대한 메일서버를 지정하는 레코드 이다.

일반적으로 메일서버 여러개 사용할 때 MX 레코드 다음에 우선순위 번호를 지정하여 메일을 수신할 수 있다.


A    127.0.0.1

A 레코드는 해당 도메인의 실제 IP 주소를 설정하는 레코드이다.



반응형
반응형

유닉스 & 리눅스 파일시스템 종류

유닉스의 파일시스템에서 슈퍼블럭(Superblock)은 디스크의 크기와 같은 파일시스템에 관한 일반적인 정보를 저장하는 곳을 말한다. 이곳의 정확한 정보는 파일시스템에 영향을 미친다.

아이노드(Inode)는 파일 이름을 제외한 파일에 관한 모든 정보를 저장하는 곳을 말한다.


1. EXT2 파일시스템 : 리눅스를 위한 확장성있고 강력한 파일시스템으로 ext의 상위버전으로

파일에 들어 있는 데이터의 데이터 블록에 저장되며 데이터 블록의 크기는 같고 ext2 파일시스템의 크기는 mke2fs 명령을 통하여 파일시스템이 만들어질 때 결정된다.


<ext2 파일시스템의 특징>

* 파일시스템의 모든 정보를 슈퍼블럭과 Group Descriptor Table에 저장한다.


* ext2는 Boot Sector와 Block Group으로 구성되며 Block Group은 파일시스템 손상시 데이터를 복원한다.


* Block은 윈도우 클러스터와 같은 개념으로 1k-4k로 설정이 가능하며 파일시스템 생성시 그 크기를 정할 수 있다.


파일시스템이 효율과 퍼포먼스에 중점을 두고 디자인된 파일시스템으로 예기치 않은 시스템 상의 재난으로부터 FSCK(File System Check)라는 파일시스템 복구 기능을 제공한다.


2. EXT3 파일시스템 : 데이터의 신뢰성이 강화되었고 사용자가 직접 데이터 보호 유형과 수준을 결정할 수 있는 파일시스템을 말한다. 특히 저널링(Journaling) 기술은 데이터를 디스크에 쓰기 전에 로그에 데이터를 남겨 시스템의 비정상적인 셧다운에도 로그를 사용해 FSCK 보다 빠르고 안정적인 복구기능을 제공하는 기술이다.


2. EXT4 파일시스템 : 리눅스의 저널링 파일시스템 중 하나로 ext3 파일시스템의 향상된 버전이다.

<ext4 파일시스템의 특징>

* 대형 파일 시스템 : 최대 1엑사바이트의 볼륨과 최대 16테라바이트의 파일을 지원한다. 현재 e2fsprogs는 16테라바이트의 파일 시스템만 다룰 수 있지만, 보다 큰 드라이브를 지원하기 위한 개발이 진행 중이다.


* Extent : Extent는 ext2와 ext3에 쓰이던 전통적인 블록 매핑(Block mapping) 방식을 대체하기 위한 것이다. Extent는 인접한 물리적 블록의 묶음으로, 대용량 파일 접근 성능을 향상시키고 단편화를 줄인다.


* 하위 호환성 : ext3와 ext2에 대한 하위 호환성이 있어서 ext3와 ext2 파일 시스템을 ext4로 마운트 하는 것이 가능하다. 이는 성능을 조금 향상시킬 수 있는데, ext4의 새 기능 중 새로운 블록 할당 알고리즘 같은 것은 ext3와 ext2에서도 사용될 수 있기 때문이다. ext3는 ext4 파일 시스템을 마운트할 수 있는 ext4에 대한 부분적인 상위 호환성이 있지만 ext4 파티션이 ext4의 중요한 새 특징인 Extents를 사용한다면,  ext3로 마운트는 불가능하다.


* 지연된 할당 : ext는 지연된 할당이라고도 알려진, allocate-on-flush 라는 파일 시스템 성능 기술을 사용한다. 이는 데이터가 디스크에 쓰여지기도 전에 블록을 할당하는 다른 파일 시스템과는 다르게 데이터가 디스크에 쓰여지기 전까지 블록 할당을 지연시킨다.

따라서 실제 파일 크기에 기반하여 블록 할당을 결정함으로 인해 향상된 블록 할당이 가능하게 되어 하나의 파일에 대한 블록이 여러 곳으로 분산되는 현상을 막는다.

이는 다시 디스크 이동을 최소화 시킴으로써 성능을 향상 시킨다.


* 32,000개의 하위 디렉터리 제한 없음 : ext3에서 하위 디렉터리의 수는 32,000개로 제한되어 있다. 이 제한은 ext4에서 64,000개로 늘어났으며 ‘dir_nlink’기능은 이보다 더 큰 개수도 허용한다.


EXT2,3,4 파일시스템의 장단점


구분

EXT2

EXT3

EXT4

장점

* 시스템이 손상될 경우 FSCK 기능을 이용 복구 가능


* 다른 리눅스 파일시스템 대비 비교적 간단 명료함

* 사용자가 직접 데이터 보호 유형과 수준 결정 가능


* EXT2에 비해 빠른 속도의 작업 가능


* 저널링 기능을 사용해 더 빠르고, 안정적인 복구 가능


* 자동 압축 및 안정성


* 향상된 파일 이름 저장 및 길이 지원

* ext3 보다 더욱 큰 용량을 지원


* 대용량 파일 접근 성능을 강화한 Extent 기능 제공


* ext2, ext3 파일시스템에 대한 하위 호환성이 있음


* 하위 디렉터리 수가 64,000개로 증가

단점

* /var 디렉토리와 같이 새로운 자료가 쌓이는 곳에 취약

* Jfs, ext4, XFs와 같이 extents 기능 지원 불가


* Checksum 검사하지 않음

* 지연된 할당과 데이터 유실 가능성




반응형

'운영체제(OS) > 리눅스(Linux)' 카테고리의 다른 글

칼리리눅스 한글 언어 설정 방법  (0) 2017.07.28
네임서버(DNS) 서버  (0) 2017.07.26
리눅스 스케쥴러 cron  (0) 2017.07.16
리눅스 원격파일 전송 명령어 scp  (0) 2017.07.14
리눅스 TCP Wrapper  (0) 2017.07.14

+ Recent posts