HOW TO HACK/Basics

해커라면 알아야 할 리눅스 기초-12 : 드라이브, 디바이스 마운트(Mount)하기

Mr. Rootable 2016. 4. 25. 11:05

# 본 게시글은 작성자 본인의 스터디한 내용을 바탕으로 작성된 글입니다.


# 본 게시글에는 일부 잘못된 정보가 포함되어있을 수 있습니다.


# 이 글을 열람하는 것은 위 사항에 동의하는 것으로 간주합니다.


# 잘못된 정보에 대한 예의바른 태클 및 지적질 적극 환영합니다.






이번 포스팅에서는 리눅스에서 디바이스를 마운트하고, 마운트 해제하는 법에 대해 다뤄볼까 합니다.

포스팅하는 것도 스스로 지식 정리에 많은 도움이 되네요. 흐뭇흐뭇~ ㅋㅋㅋ



Step 1 : 마운트(Mount)란?


디스크와 같은 물리적인 장치를 리눅스안의 특정 위치, 즉 디렉토리에 연결시켜주는 작업을 말합니다. 

(이번 포스팅부터는 존댓말로 하렵니다. 아무래도 읽는 사람에겐 반말보다는 좋지 않을까 해서.....) 

윈도우에서 보면 C:, D:와 같은 드라이브명이라는 특정문자에 자동으로 연결되는데, 이게 바로 마운트가 된 것으로 보면 됩니다.

그런데.. 리눅스는 윈도우처럼 자동으로 되지 않습니다. 

관리자가 직접 특정 디렉토리에 붙이는 작업을 해야 합니다. 번거롭겠죠? 네 번거러운 작업 맞습니다.




Step 2 : 리눅스 파일시스템 구조


리눅스 파일시스템 구조에 대해서는 "해커라면 알아야 할 리눅스 기초" 포스팅 시리즈의 첫번째 글에서도 살펴보았습니다. 다시 보자면, 리눅스의 모든 디렉토리는 루트디렉토리(/) 하위에 있습니다.

보통 마운트는 /media나 /mnt 디렉토리에 마운트를 합니다.




Step 3 : 마운트하기 (mount)


디바이스 마운트를 위해서는 mount 명령어를 사용합니다.

mount 명령어의 사용법과 옵션은 다음과 같습니다.



사용법 : mount [옵션] [디바이스] [디렉토리]

옵션

-v : 작업과정 출력

-n : /etc/mtab에 저장하지 않고 마운트

-f : 마운트가 가능한지 테스트 (실제로 마운트하지 않습니다.)

-t : 파일시스템 유형 지정



현재 시스템에 마운트된 정보를 보기 위해서는 아무 옵션없이 mount 명령어만 실행하면 됩니다.


# mount



이번 포스팅에서 우리가 할 일은 특정 디바이스를 디렉토리에 마운트하는 것이죠.

옵션으로는 -t를 사용하여 파일시스템 타입을 지정해줘야 하며, 명령어 사용법은 아래와 같습니다.


# mount -t [파일시스템 타입] [장치파일] [마운트포인트]


주로 사용되는 파일시스템 타입의 종류 몇 가지에에 대해서만 쓰~윽 훑어보고 갑시다.



* 리눅스 파일 시스템 종류


파일시스템이란 Windows와 리눅스같은 운영체제가 파일을 디스크에 구성하는 방식을 말합니다.

리눅스의 파일시스템에는 많은 종류가 있지만 아래에 소개한 몇가지만 짚어보려고 합니다.



minix


리눅스의 첫번째 파일 시스템입니다. 이 정도만 알아도 무방할 것 같습니다. 


ext


초기 리눅스에서 사용되었던 파일시스템입니다. ext2 파일시스템의 조상과도 같은 놈이며, 현재는 사용되지 않습니다.


ext2 (extented filesystem 2)


1993년 1월에 Remy Card라는 사람이 ext 파일시스템을 대체하기 위해 고안해낸 파일시스템으로, 데비안, 레드햇 리눅스등의 기본 파일시스템으로 채택되어 사용되어졌고, 아직까지도 사용되고 있습니다.

파일시스템의 블록이 얼마로 나뉘어지느냐에 따라  최대 파일크기는 16GB ~ 2TB까지 지원되며, 파일시스템의 크기는 4TB ~ 32TB까지 지원됩니다.

또한, 255byte의 긴 파일명을 지원합니다.

압축과 암호화는 지원되지 않습니다요.


ext3 (extended file system 3)


ext3은 2001년 11월 스티픈 트위디가 만든 파일시스템입니다. 커널 2.4.15에서 처음 사용이 되었고, 기본적으로는 ext2를 계승했지만, 가장 큰 특징으로는 저널링(Journaling) 기능이 제공된다는 점입니다.

저널링이랑 파일이 주 파일시스템에 기록되기 전에 저널이라는 곳에 먼저 기록되어 갑작스런 장애와 같은 불상사에 파일 손상을 최소화시켜주는 것으로 생각됩니다.

즉, ext3은 저널링 파일시스템이며, ext2에 비해 파일시스템 복구기능과 보안을 크게 향상시킨 파일시스템이며, 현재는ext2보다 ext3을 기본 파일시스템으로 사용하는 경우가 많습니다. 

블록크기에 따라 16GB ~ 2TB의 파일크기가 지원되며, 파일시스템은 2TB ~ 32TB까지 지원됩니다.


ext4 (extended file system 4)


ext4 파일시스템은 2008년 10월에 안정판이 만들어졌습니다. 

저널링 파일시스템의 일종으로 ext3 이후 버전으로 ext3 보다 당연히 성능 및 기능이 크게 향상되었고,

ext3보다 큰 용량을 지원하며, 삭제 파일복구 기능과 파일시스템 점검속도가 크게 향상되었습니다.




자! 저는 버추얼박스에 설치된 칼리리눅스 2.0에 16GB SANDISK USB장치를 마운트해 볼 생각입니다.


먼저 USB장치를 마운트할 마운트포인트를 생성합니다.


# mkdir /mnt/usb



스크린샷과 같이 마운트포인트가 잘 만들어졌습니다.


USB장치가 시스템에서 어떤 장치명을 사용하는지 확인합니다.

USB장치는 보통 /dev/sda, /dev/sdb 등의 장치명을 사용합니다.

fdisk 명령어를 통해 확인해봅시다.


# fdisk -l



/dev/sdb1 장치명을 사용합니다.


이제, USB장치를 마운트하기 위한 명령어를 사용법에 맞게 터미널에 입력해봅시다.


# mount -t ext3 /dev/sdb1 /mnt/usb



이미 마운트가 된 모양입니다. df 명령어를 통해 마운트 현황을 확인해보도록 하죠.


# df



/media/root/349E95269E94E1A2에 이미 마운트가 되어있습니다. (디렉토리명 졸 짜증... ㅋ)


이 포스팅의 맨 뒤에 설명하겠지만 마운트 해제 명령어(Umount)를 먼저 사용해야 할 것 같습니다.


# umount /media/root/349E95269E94E1A2



자동으로 마운트되어있던 것이 해제되었습니다.


다시 마운트를 위해 생성한 마운트포인트(/mnt/usb)에 마운트를 해보죠. 직접 한 걸 보여드려야한다는 일념으로....^^

아, 위에서 마운트를 시도할때는 ntfs 파일시스템이 아닌 ext3로 했는데, 

여기저기 뒤져보니 마운트하는 디바이스의 파일시스템으로 해야 하나보더라구요.

그래서 ntfs로 명령 변경했습니다... (저의 무식을 탓해야죠)


# mount -t ntfs /dev/sdb1 /mnt/usb



마운트 명령을 실행하고, df명령어를 통해 확인해보니 정상적으로 /mnt/usb에 마운트가 되어있음을 볼 수 있습니다.

USB장치 내의 파일이 정상적으로 보이는지 한번 봐야겠죠???

/mnt/usb 디렉토리로 이동하여 ls를 때렸습니다.



잘 보입니다. 보시다시피 저는 TrueCrypt라는 무료 프로그램을 통해 USB를 암호화해서 사용합니다.^^

개중에는 USB에 그냥 저장한 pdf 문서들도 보이지만 대부분이 SecurityUSB라고 만든 암호화된 파일에 저장되어있죠 ㅎㅎ

걍 그렇다구요~



Step 4 : 자동 마운트 설정하기 (fstab)


fstab(FileSystem Table)은 /etc 디렉토리 밑에 존재하는 리눅스시스템의 설정파일입니다. 부팅시 자동으로 마운트되게 하려면 이 파일을 수정하여 마운트되게 할 수 있습니다. mount 명령은 fstab 파일을 통해 파일시스템이 마운트될 때 사용할 옵션을 결정합니다.

fstab 파일을 확인해봅시다.


# cat /etc/fstab


6개의 컬럼이 있네요.


<filesystem> 장치명을 말합니다.

<mount point> 디바이스가 연결될 디렉토리의 위치 (마운트포인트)입니다.

<type> 파일시스템 타입 (ext3, ext4 같은...) 입니다.

<options> rw(read/write), auto, noauto, nouser, async, suid 등등의 옵션이예요. 각 옵션에 대한 설명은 안합니다^^

<dump> dump할 필요가 있으면 1, 없으면 0

<pass> 무결성 체크하지 않을거면 0, 체크할 거면 0이 아닌 숫자.. 숫자가 작은 것부터 체크 진행함.


이와같이 fstab 파일을 수정하여 부팅시 자동 마운트 설정을 할 수 있습니다.



Step 5 : 마운트 해제하기 (umount)


umount 명령어를 통해 마운트된 디바이스를 해제할 수 있습니다.

unmount가 아닙니다. n이 빠진 umount입니다. 저도 처음에 unmount로 입력하고 오류난다고 승질을 부렸습니다.

여러분은 저처럼 괜한 사람한테 승질부리면 안됩니다.^^ 

무식한게 승깔도 더럽다고 욕먹습니다.

이 umount 명령은 이미 Step 1에서 umount 명령어를 다뤄봤습니다. 하여, 실습 스크린샷은 생략해도 될 것 같습니다. ㅋㅋ


umount 명령어의 사용법은 아래와 같습니다.



사용법 : umount [옵션] [디바이스] 또는 [디렉토리]



<끝>