소개
Linux 파일 시스템 마운트는 시스템 관리자와 기술 사용자를 위한 기본적인 기술입니다. 이 프로세스를 통해 운영 체제는 디렉토리 구조의 특정 위치에 저장 장치와 해당 파일 시스템을 연결하여 액세스하고 상호 작용할 수 있습니다.
이 Lab 에서는 시뮬레이션된 저장 장치를 생성하고, 파일 시스템으로 포맷한 다음, 마운트하여 해당 내용을 액세스하는 방법을 배우게 됩니다. 또한 실행 권한을 제한하거나 읽기 전용으로 만드는 등 파일 시스템 사용 방식을 제어하는 다양한 마운트 옵션도 살펴볼 것입니다.
이 Lab 을 마치면 다음 사항을 이해하게 됩니다.
- Linux 에서 저장 장치를 생성하고 포맷하는 방법
- 파일 시스템을 마운트 및 언마운트하는 프로세스
- 마운트 옵션을 사용하여 파일 시스템 액세스를 제어하는 방법
- 마운트된 파일 시스템의 상태를 확인하는 방법
이러한 기술은 로컬 하드 드라이브에서 이동식 미디어 및 네트워크 저장소에 이르기까지 Linux 환경에서 저장 장치를 관리하는 데 필수적입니다.
저장 장치 생성 및 마운트
이 단계에서는 시뮬레이션된 저장 장치를 생성하고, 파일 시스템으로 포맷한 다음, Linux 디렉토리 구조 내에서 액세스할 수 있도록 마운트합니다.
프로젝트 디렉토리로 이동
먼저, 이 Lab 전체에서 작업할 프로젝트 디렉토리로 이동해 보겠습니다.
cd ~/project
시뮬레이션된 저장 장치 생성
이제 dd 명령을 사용하여 시뮬레이션된 저장 장치를 생성합니다. 이 명령은 저장 장치 역할을 할 특정 크기의 파일을 생성합니다.
dd if=/dev/zero of=storage_device.img bs=1M count=100
이 명령은 storage_device.img라는 100MB 파일을 생성합니다. 이 명령의 각 부분을 이해해 보겠습니다.
if=/dev/zero: 입력 파일은/dev/zero이며, 이는 무한한 0 스트림을 생성하는 특수 파일입니다.of=storage_device.img: 출력 파일의 이름은storage_device.img입니다.bs=1M: 블록 크기는 1 메가바이트로 설정됩니다.count=100: 100 개의 블록을 복사하여 100MB 파일을 생성합니다.
다음과 유사한 출력을 볼 수 있습니다.
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.0331261 s, 3.2 GB/s
파일 시스템으로 저장 장치 포맷
저장 장치를 사용하기 전에 파일 시스템으로 포맷해야 합니다. mkfs.ext4 명령은 파일을 Linux 에서 일반적으로 사용되는 ext4 파일 시스템으로 포맷합니다.
mkfs.ext4 storage_device.img
명령이 파일 시스템을 생성하면서 다음과 유사한 여러 줄의 출력을 볼 수 있습니다.
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 25600 4k blocks and 25600 inodes
Allocating group tables: done
Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done
마운트 지점 생성
장치를 마운트하기 전에 마운트 지점 역할을 할 디렉토리를 생성합니다. 이것은 파일 시스템의 내용에 액세스할 수 있는 위치입니다.
mkdir -p ~/project/mount_point
저장 장치 마운트
이제 mount 명령을 사용하여 저장 장치를 마운트 지점에 마운트합니다.
sudo mount -t ext4 storage_device.img ~/project/mount_point
이 명령은 Linux 에 다음을 지시합니다.
- 유형 (
-t) ext4 의 장치를 마운트합니다. - 마운트할 장치는
storage_device.img입니다. - 마운트 위치는
~/project/mount_point입니다.
마운트 확인
장치가 올바르게 마운트되었는지 확인하려면 파일 시스템 유형과 사람이 읽을 수 있는 크기를 표시하는 옵션과 함께 df 명령 (디스크 여유 공간) 을 사용합니다.
df -hT | grep mount_point
다음과 유사한 출력을 볼 수 있습니다.
/dev/loop0 ext4 90M 24K 83M 1% /home/labex/project/mount_point
마운트된 파일 시스템 테스트
파일 시스템이 제대로 작동하는지 테스트하려면 마운트된 디렉토리에 테스트 파일을 생성합니다.
echo "This is a test file" | sudo tee ~/project/mount_point/test.txt > /dev/null
파일을 읽어 성공적으로 생성되었는지 확인합니다.
cat ~/project/mount_point/test.txt
"This is a test file" 텍스트가 표시되면 파일 시스템이 제대로 마운트되어 작동하고 있음을 확인하는 것입니다.
무슨 일이 일어났는지 이해하기
다음과 같은 작업을 성공적으로 수행했습니다.
- 저장 장치를 시뮬레이션하는 파일을 생성했습니다.
- ext4 파일 시스템으로 포맷했습니다.
- 마운트 지점 디렉토리를 생성했습니다.
- 해당 디렉토리에 파일 시스템을 마운트했습니다.
- 마운트가 성공했음을 확인했습니다.
- 마운트된 파일 시스템에서 파일을 생성하고 읽었습니다.
이 프로세스는 외부 하드 드라이브 또는 USB 스틱을 연결하고 사용하는 것과 유사하지만 파일을 사용하여 실제 장치를 시뮬레이션합니다.
보안 및 접근 제어를 위한 마운트 옵션
이 단계에서는 파일 시스템에 액세스하는 방식을 제어하기 위해 마운트 옵션을 사용하는 방법을 배우게 됩니다. 마운트 옵션은 실행 권한을 제한하거나 파일 시스템을 읽기 전용으로 만드는 등 파일 시스템 동작에 대한 추가적인 제어를 제공합니다.
현재 파일 시스템 언마운트
새로운 마운트 옵션을 적용하기 전에 현재 파일 시스템을 언마운트해야 합니다.
sudo umount ~/project/mount_point
장치가 사용 중이라는 오류 메시지가 표시되면 현재 마운트 지점 디렉토리에 있지 않은지 확인하십시오.
cd ~/project
그런 다음 다시 언마운트를 시도하십시오.
noexec 옵션으로 마운트
noexec 마운트 옵션은 마운트된 파일 시스템에서 바이너리 실행을 방지합니다. 이는 악성 스크립트 또는 프로그램의 실행을 방지할 수 있는 보안 기능입니다.
noexec 옵션으로 파일 시스템을 마운트합니다.
sudo mount -t ext4 -o noexec storage_device.img ~/project/mount_point
-o noexec 부분은 mount 에 noexec 옵션을 사용하도록 지시합니다.
noexec 옵션 테스트
마운트된 파일 시스템에서 간단한 셸 스크립트를 생성하고 실행해 보겠습니다.
echo '#!/bin/bash' | sudo tee ~/project/mount_point/test_script.sh > /dev/null
echo 'echo "This script is running"' | sudo tee -a ~/project/mount_point/test_script.sh > /dev/null
스크립트를 실행 가능하게 만듭니다.
chmod +x ~/project/mount_point/test_script.sh
이제 스크립트를 실행해 봅니다.
~/project/mount_point/test_script.sh
다음과 같은 오류 메시지가 표시됩니다.
bash: /home/labex/project/mount_point/test_script.sh: Permission denied
이는 noexec 옵션이 스크립트 실행을 방지하고 있음을 확인합니다.
읽기 전용 옵션으로 언마운트 및 재마운트
이제 파일 시스템을 읽기 전용으로 마운트해 보겠습니다. 먼저 언마운트합니다.
sudo umount ~/project/mount_point
그런 다음 읽기 전용 옵션으로 마운트합니다.
sudo mount -t ext4 -o ro storage_device.img ~/project/mount_point
-o ro 부분은 mount 에 읽기 전용 옵션을 사용하도록 지시합니다.
읽기 전용 옵션 테스트
마운트된 파일 시스템에서 새 파일을 생성해 봅니다.
touch ~/project/mount_point/new_file.txt
다음과 같은 오류 메시지가 표시됩니다.
touch: cannot touch '/home/labex/project/mount_point/new_file.txt': Read-only file system
이는 파일 시스템이 읽기 전용으로 마운트되었음을 확인합니다.
마운트 옵션 확인
mount 명령을 사용하여 현재 마운트 옵션을 확인할 수 있습니다.
mount | grep mount_point
읽기 전용 옵션이 활성화되었음을 나타내는 ro를 포함한 출력을 볼 수 있습니다.
/home/labex/project/storage_device.img on /home/labex/project/mount_point type ext4 (ro,relatime)
마운트 옵션 결합
쉼표로 구분하여 여러 마운트 옵션을 결합할 수 있습니다. 파일 시스템을 언마운트하고 noexec 및 ro 옵션으로 다시 마운트해 보겠습니다.
sudo umount ~/project/mount_point
sudo mount -t ext4 -o ro,noexec storage_device.img ~/project/mount_point
마운트 옵션을 확인합니다.
mount | grep mount_point
출력에 두 옵션이 모두 표시됩니다.
/home/labex/project/storage_device.img on /home/labex/project/mount_point type ext4 (ro,noexec,relatime)
마운트 옵션 이해
탐색한 마운트 옵션은 보안 및 액세스 제어에 중요합니다.
noexec는 바이너리 파일 실행을 방지하여 악성 코드로부터 보호할 수 있습니다.ro(읽기 전용) 는 파일 시스템에 대한 변경을 방지하여 데이터 무결성을 보호할 수 있습니다.
이러한 옵션은 최소 권한 원칙을 구현하기 위해 프로덕션 환경에서 일반적으로 사용되며, 시스템 및 사용자에게 필요한 액세스 권한만 부여합니다.
/etc/fstab 을 사용한 자동 마운트 설정
이 단계에서는 /etc/fstab 파일을 구성하여 시스템 재부팅 시에도 파일 시스템 마운트가 유지되도록 하는 방법을 배우게 됩니다. 이는 시스템이 시작될 때 저장 장치를 자동으로 마운트하는 데 필수적입니다.
/etc/fstab 이해
/etc/fstab (파일 시스템 테이블) 파일에는 시스템이 부팅될 때 자동으로 마운트되어야 하는 파일 시스템에 대한 정보가 포함되어 있습니다. 파일의 각 줄은 별도의 파일 시스템을 나타내며 장치, 마운트 지점, 파일 시스템 유형 및 마운트 옵션과 같은 필드를 포함합니다.
먼저 파일의 현재 내용을 살펴보겠습니다.
cat /etc/fstab
이미 구성된 시스템 마운트가 있는 여러 줄을 볼 수 있습니다.
현재 파일 시스템 언마운트
영구 마운트를 구성하기 전에 현재 파일 시스템을 언마운트합니다.
sudo umount ~/project/mount_point
/etc/fstab 백업 생성
시스템 구성 파일을 수정하기 전에 항상 백업을 생성하는 것이 좋습니다.
sudo cp /etc/fstab /etc/fstab.backup
/etc/fstab에 항목 추가
이제 저장 장치에 대한 항목을 /etc/fstab에 추가합니다. 장치 파일의 절대 경로를 사용해야 합니다.
echo "$(readlink -f ~/project/storage_device.img) $(readlink -f ~/project/mount_point) ext4 defaults 0 0" | sudo tee -a /etc/fstab
이 명령은 다음을 수행합니다.
readlink -f를 사용하여 파일의 절대 경로를 가져옵니다.tee -a를 사용하여 형식화된 줄을/etc/fstab으로 리디렉션합니다 (sudo 권한 사용).
fstab 항목의 필드를 자세히 살펴보겠습니다.
- 장치 - 저장 장치 파일의 전체 경로
- 마운트 지점 - 마운트 디렉토리의 전체 경로
- 파일 시스템 유형 - ext4
- 마운트 옵션 - defaults (rw,suid,dev,exec,auto,nouser,async 와 동일)
- 덤프 - 0 (dump 로 백업하지 않음)
- 패스 - 0 (부팅 시 파일 시스템을 확인하지 않음)
fstab 항목 테스트
/etc/fstab에 나열된 모든 파일 시스템을 이미 마운트되지 않은 경우 마운트하는 mount -a 명령을 사용하여 항목이 올바르게 작동하는지 테스트합니다.
sudo mount -a
오류 메시지가 없으면 항목이 올바른 것입니다.
마운트 확인
파일 시스템이 예상대로 마운트되었는지 확인합니다.
df -hT | grep mount_point
ext4 유형으로 파일 시스템이 마운트된 것을 볼 수 있습니다.
더 많은 옵션으로 fstab 항목 수정
이제 이전 단계에서 배운 마운트 옵션을 사용하도록 항목을 수정해 보겠습니다. nano 텍스트 편집기로 /etc/fstab 파일을 편집합니다.
sudo nano /etc/fstab
다음과 유사하게 표시되는 추가한 줄을 찾습니다.
/home/labex/project/storage_device.img /home/labex/project/mount_point ext4 defaults 0 0
마운트 옵션 (네 번째 필드) 을 defaults에서 ro,noexec로 변경합니다.
/home/labex/project/storage_device.img /home/labex/project/mount_point ext4 ro,noexec 0 0
Ctrl+O를 눌러 변경 사항을 쓰고, Enter를 눌러 확인하고, Ctrl+X를 눌러 nano 를 종료합니다.
새 옵션으로 재마운트
파일 시스템을 언마운트하고 /etc/fstab의 모든 항목을 다시 마운트합니다.
sudo umount ~/project/mount_point
sudo mount -a
새 마운트 옵션 확인
파일 시스템이 새 옵션으로 마운트되었는지 확인합니다.
mount | grep mount_point
출력에서 ro 및 noexec 옵션을 볼 수 있습니다.
영구 마운트 이해
/etc/fstab 파일은 다음을 수행하는 방법을 제공합니다.
- 부팅 시 파일 시스템을 자동으로 마운트합니다.
- 마운트 옵션을 영구적으로 구성합니다.
- 부팅 중 파일 시스템 검사 순서를 제어합니다.
프로덕션 환경에서 /etc/fstab을 적절하게 구성하면 수동 개입 없이 시스템이 시작될 때 필요한 모든 파일 시스템을 사용할 수 있습니다.
요약
Linux 파일 시스템 마운트 랩을 완료하신 것을 축하드립니다. 모든 Linux 시스템 관리자 또는 기술 사용자에게 필수적인 귀중한 기술을 습득했습니다.
이 랩에서는 다음을 배웠습니다.
저장 장치 생성 및 포맷
dd명령을 사용하여 시뮬레이션된 저장 장치를 만드는 방법mkfs.ext4를 사용하여 장치를 ext4 파일 시스템으로 포맷하는 방법
기본 마운트 작업
- 마운트 지점 디렉토리를 만드는 방법
mount명령을 사용하여 파일 시스템을 마운트하는 방법df및 기타 명령을 사용하여 마운트를 확인하는 방법
보안 및 제어를 위한 마운트 옵션
noexec옵션을 사용하여 바이너리 실행을 방지하는 방법ro옵션을 사용하여 읽기 전용 파일 시스템을 만드는 방법- 향상된 보안을 위해 여러 마운트 옵션을 결합하는 방법
/etc/fstab을 사용한 영구 마운트
- 부팅 시 파일 시스템의 자동 마운트를 구성하는 방법
- 영구 마운트 옵션을 설정하는 방법
- fstab 항목을 테스트하고 확인하는 방법
이러한 기술을 통해 다음을 수행할 수 있습니다.
- Linux 에서 다양한 유형의 저장 장치를 관리합니다.
- 마운트 옵션을 통해 보안 제어를 구현합니다.
- 시스템 시작 시 자동 마운트를 구성합니다.
- 파일 시스템 마운트 문제를 해결합니다.
Linux 여정을 계속 진행하면서 실제 저장 장치, 네트워크 공유 및 가상 파일 시스템으로 작업할 때 이러한 기술이 유용하다는 것을 알게 될 것입니다. 배운 원칙은 다양한 Linux 배포판 및 저장 기술에 적용됩니다.



