소개
이 실습에서는 Red Hat Enterprise Linux (RHEL) 시스템에서 NFS(Network File System) 클라이언트 액세스를 구성하는 데 필요한 핵심 기술을 배웁니다. 먼저 mount 명령을 사용하여 네트워크 공유를 수동으로 마운트하는 기본적인 과정을 이해합니다. 그 후, /etc/fstab에 영구 마운트 설정을 추가하여 시스템 재부팅 후에도 NFS 공유를 자동으로 사용할 수 있도록 구성함으로써 정적 네트워크 파일 시스템 통합의 기초를 다집니다.
이러한 핵심 개념을 바탕으로, 자동 마운터(automounter)를 설정하여 보다 동적이고 효율적인 방법으로 나아갑니다. 여기에는 autofs 서비스를 설치 및 활성화하고, 필요에 따라 디렉토리를 마운트하는 간접 맵(indirect map)과 정적 마운트 지점을 위한 직접 맵(direct map)을 생성하는 과정이 포함됩니다. 마지막으로, 다양한 사용자에 대해 직접 및 간접 자동 마운트가 올바르게 작동하는지 확인하여 강력한 NFS 클라이언트 구성 관리 능력을 완성합니다.
mount 명령을 사용하여 NFS 공유 수동 마운트
이 단계에서는 NFS(Network File System) 프로토콜을 사용하여 네트워크 공유 디렉토리에 수동으로 액세스하는 방법을 배웁니다. NFS를 사용하면 클라이언트 시스템이 로컬 저장소에 액세스하는 것과 유사한 방식으로 네트워크를 통해 파일에 액세스할 수 있습니다. 이 연습에서는 로컬 머신에서 NFS 서버와 클라이언트를 모두 시뮬레이션하여 필요한 명령을 실습합니다.
시스템에는 /srv/nfs/shared_data 디렉토리를 내보내기(공유)하도록 NFS 서버가 미리 구성되어 있습니다. 여러분의 작업은 이 공유 디렉토리를 로컬 폴더에 마운트하고, 액세스를 확인한 다음, 마운트를 해제하는 것입니다.
로컬 마운트 지점 생성
공유 NFS 디렉토리에 액세스하려면 "마운트 지점(mount point)" 역할을 할 로컬 디렉토리가 필요합니다. 이는 본질적으로 클라이언트 시스템의 빈 폴더이며, 마운트되면 원격 공유의 내용이 이 폴더에 나타납니다. 모든 작업은 ~/project 디렉토리 내에서 수행됩니다.
프로젝트 폴더 안에 nfs_mount라는 디렉토리를 생성합니다:
mkdir ~/project/nfs_mount
프로젝트 폴더의 내용을 나열하여 디렉토리가 생성되었는지 확인할 수 있습니다:
ls -F ~/project
nfs_mount/
NFS 공유 마운트
이제 mount 명령을 사용하여 원격 NFS 공유를 방금 생성한 마운트 지점에 연결할 수 있습니다. 파일 시스템 마운트는 시스템 수준의 작업이므로 sudo 권한이 필요합니다.
기본 구문은 mount -t nfs -o vers=3 <server>:<remote_directory> <local_mount_point>입니다.
-t nfs -o vers=3: 파일 시스템 유형이 NFS임을 지정하고, 이 실습 환경에서 작동하는 프로토콜인 NFSv3를 강제합니다.localhost:/srv/nfs/shared_data: 소스이며, 서버와 내보내는 경로입니다.~/project/nfs_mount: 대상이며, 로컬 마운트 지점입니다.
다음 명령을 실행하여 공유를 마운트합니다:
sudo mount -t nfs -o vers=3 localhost:/srv/nfs/shared_data ~/project/nfs_mount
성공하면 이 명령은 아무런 출력을 생성하지 않습니다.
마운트 확인 및 공유와 상호 작용
mount 명령을 실행한 후, 공유가 올바르게 마운트되었는지 확인해야 합니다. 몇 가지 방법으로 확인할 수 있습니다.
먼저, mount 명령을 grep으로 파이핑하여 NFS 마운트를 필터링합니다:
mount | grep nfs
localhost:/srv/nfs/shared_data on /home/labex/project/nfs_mount type nfs (rw,relatime,vers=3,rsize=...,wsize=...,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,local_lock=none,addr=...)
다음으로, 마운트 지점의 내용을 확인합니다. 이제 원격 /srv/nfs/shared_data 디렉토리의 파일들이 표시되어야 합니다.
ls -l ~/project/nfs_mount
total 4
-rw-r--r--. 1 root root 32 Nov 10 14:30 welcome.txt
이제 이 디렉토리를 로컬 폴더처럼 사용할 수 있습니다. 이 실습 환경에서는 NFS 서버가 no_root_squash로 구성되어 있어 파일 소유자가 root로 표시됩니다. 실제 운영 환경에서는 NFS 서버 설정에 따라 소유자가 nobody로 보일 수도 있습니다. 마운트된 공유 안에 새 파일을 생성해 보겠습니다. NFS 공유가 root 소유일 수 있으므로, 파일을 쓰려면 sudo와 tee 명령을 사용해야 합니다:
echo "My test file" | sudo tee ~/project/nfs_mount/my_file.txt > /dev/null
새 파일이 원래 파일과 함께 존재하는지 확인합니다:
ls -l ~/project/nfs_mount
total 8
-rw-r--r--. 1 root root 13 Nov 10 14:35 my_file.txt
-rw-r--r--. 1 root root 32 Nov 10 14:30 welcome.txt
NFS 공유 마운트 해제
네트워크 공유 사용을 마치면 umount 명령을 사용하여 깔끔하게 마운트를 해제하는 것이 중요합니다. 이렇게 하면 모든 데이터가 동기화되고 연결이 적절하게 종료됩니다. 마운트 지점만 지정하면 됩니다.
sudo umount ~/project/nfs_mount
공유가 마운트 해제되었는지 확인하려면 ~/project/nfs_mount 디렉토리의 내용을 나열합니다. 이제 다시 비어 있어야 합니다.
ls -l ~/project/nfs_mount
total 0
/etc/fstab에서 영구 NFS 마운트 구성
이전 단계에서는 mount 명령을 사용하여 NFS 공유를 수동으로 마운트하는 방법을 배웠습니다. 그러나 이러한 마운트는 일시적이며 시스템 재부팅 후에는 유지되지 않습니다. 마운트를 영구적으로 만들려면 /etc/fstab("file systems table"의 약자) 파일에 항목을 추가해야 합니다. 이 파일에는 시스템 부팅 시 자동으로 마운트되는 파일 시스템 및 장치 목록이 포함되어 있습니다.
이 단계에서는 /etc/fstab에 항목을 추가하여 동일한 NFS 공유가 영구적으로 마운트되도록 구성합니다.
환경 준비
먼저 이전 단계에서 사용한 마운트 지점 ~/project/nfs_mount가 존재하고 비어 있는지 확인합니다. 마지막 단계에서 바로 이어서 진행 중이라면 이미 존재할 것입니다.
디렉토리가 존재하지 않으면 지금 생성합니다:
mkdir -p ~/project/nfs_mount
또한 현재 이 디렉토리에 마운트된 것이 없는지 확인합니다. umount 명령을 실행할 수 있으며, 마운트되지 않은 경우 오류가 보고되지만 이는 정상입니다.
sudo umount ~/project/nfs_mount
/etc/fstab 파일 편집
이제 영구 NFS 마운트를 정의하기 위해 /etc/fstab 파일에 새 줄을 추가합니다. 이 시스템 구성 파일을 편집하려면 sudo를 사용해야 합니다. nano 편집기를 사용하겠습니다.
다음 명령으로 파일을 엽니다:
sudo nano /etc/fstab
파일의 맨 아래로 이동하여 다음 줄을 추가합니다. 이 파일의 구문 오류는 시스템 부팅 문제를 일으킬 수 있으므로 매우 주의해야 합니다.
localhost:/srv/nfs/shared_data /home/labex/project/nfs_mount nfs defaults,_netdev,vers=3 0 0
이 줄을 분석해 보겠습니다:
localhost:/srv/nfs/shared_data: 마운트할 장치입니다. NFS 서버(localhost)와 내보낸 디렉토리(/srv/nfs/shared_data)를 지정합니다./home/labex/project/nfs_mount: 공유에 액세스할 수 있는 로컬 마운트 지점입니다.nfs: 파일 시스템 유형을 지정합니다.defaults,_netdev,vers=3: 마운트 옵션입니다.defaults는 표준 옵션 세트(예: 읽기-쓰기를 위한rw)를 포함합니다._netdev는 네트워크 파일 시스템에 매우 중요하며, 시스템에 이 공유를 마운트하기 전에 네트워크가 활성화될 때까지 기다리라고 지시합니다.vers=3은 이 컨테이너화된 환경에서 실습이 작동하는 NFS 프로토콜을 유지합니다.0:dump백업 유틸리티에서 사용하는dump필드입니다.0값은 이를 비활성화합니다.0: 부팅 시 파일 시스템 검사 순서를 결정하기 위해fsck유틸리티에서 사용하는pass필드입니다.0값은 파일 시스템을 검사하지 않음을 의미합니다.
줄을 추가한 후, Ctrl+X, Y, Enter를 눌러 파일을 저장하고 nano를 종료합니다.
/etc/fstab 항목 테스트
새 /etc/fstab 항목을 테스트하기 위해 재부팅할 필요는 없습니다. mount 명령은 /etc/fstab을 읽을 수 있을 만큼 똑똑합니다. 마운트 지점만 제공하면 mount는 /etc/fstab에서 해당 항목을 찾아 거기에서 찾은 정보를 사용합니다.
마운트 지점만 사용하여 공유를 마운트합니다:
sudo mount ~/project/nfs_mount
명령이 오류 없이 완료되면 /etc/fstab 항목이 올바른 것입니다.
마운트 확인
mount 명령의 출력과 디렉토리 내용을 나열하여 공유가 마운트되었는지 확인합니다.
mount | grep nfs_mount
localhost:/srv/nfs/shared_data on /home/labex/project/nfs_mount type nfs (rw,relatime,vers=3,rsize=...,wsize=...,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,local_lock=none,addr=...,_netdev)
이제 내용을 확인합니다. 공유의 파일들이 보여야 합니다.
ls -l ~/project/nfs_mount
total 4
-rw-r--r--. 1 root root 32 Nov 10 14:30 welcome.txt
이제 이 마운트는 영구적이며 재부팅 후 자동으로 다시 설정됩니다.
환경 정리
나중 연습과의 충돌을 피하기 위해 이제 변경 사항을 되돌려야 합니다. 먼저 공유를 마운트 해제한 다음 /etc/fstab에서 추가한 줄을 제거합니다.
디렉토리 마운트 해제:
sudo umount ~/project/nfs_mount
/etc/fstab을 다시 열어 항목을 제거합니다:
sudo nano /etc/fstab
화살표 키를 사용하여 추가한 줄(localhost:/srv/nfs/shared_data ... vers=3 ...)으로 이동하고 Ctrl+K를 눌러 전체 줄을 삭제합니다. 그런 다음 Ctrl+X, Y, Enter를 눌러 저장하고 종료합니다.
이렇게 하면 다음 실습을 위해 시스템이 깨끗한 상태로 유지됩니다.
autofs 설치 및 활성화를 통한 자동 마운터 설정
이전 단계에서는 수동 및 영구 마운트를 살펴보았습니다. /etc/fstab은 영구 마운트에 적합하지만, 부팅 시 모든 것을 마운트하려고 시도한다는 단점이 있습니다. 네트워크 공유를 사용할 수 없는 경우 부팅 프로세스가 느려지거나 중단될 수 있습니다. autofs 서비스에서 제공하는 자동 마운터(automounter)는 네트워크 파일 시스템을 처음 액세스할 때만 필요에 따라 마운트함으로써 이 문제를 해결합니다.
autofs 서비스는 "맵(maps)"이라는 구성 파일 세트를 사용하여 마운트할 원격 공유와 위치를 결정합니다. 이 단계에서는 필요한 패키지를 설치하고 서비스를 시작하여 시스템이 자동 마운터를 사용할 수 있도록 준비합니다.
autofs 패키지 설치
autofs 기능은 기본 RHEL 설치에 포함되어 있지 않습니다. dnf 패키지 관리자를 사용하여 설치해야 합니다. 이를 위해서는 sudo 권한이 필요합니다.
다음 명령을 실행하여 autofs 패키지를 설치합니다. -y 플래그는 확인 프롬프트에 자동으로 "yes"라고 응답하므로 이 실습에 편리합니다.
sudo dnf install -y autofs
명령은 autofs 패키지와 필요한 종속성을 다운로드하고 설치합니다. 다음과 유사한 출력이 표시됩니다:
Last metadata expiration check: ...
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
autofs x86_64 1:5.1.7-50.el9 ... ...
...
Transaction Summary
================================================================================
Install 1 Package
Total download size: ...
Installed size: ...
...
Complete!
autofs 서비스 시작
표준 RHEL 시스템에서는 systemctl을 사용하여 서비스를 시작하고 활성화합니다. 그러나 이 실습은 systemctl을 사용할 수 없는 컨테이너화된 환경에서 실행됩니다. 대신 automount 명령을 사용하여 autofs 데몬을 직접 시작합니다.
이 명령은 백그라운드에서 실행되며 맵에 구성된 디렉토리에 액세스하려는 시도를 모니터링하는 자동 마운터 데몬을 시작합니다.
다음 명령을 실행하여 서비스를 시작합니다:
sudo automount
성공하면 이 명령은 아무런 출력을 생성하지 않습니다. 단순히 데몬 프로세스를 시작합니다.
서비스 실행 확인
systemctl status autofs를 사용하여 서비스를 확인할 수 없으므로, ps 명령을 사용하여 automount 프로세스가 실행 중인지 확인할 수 있습니다. ps aux 명령은 실행 중인 모든 프로세스를 나열하며, 출력을 grep으로 파이핑하여 automount 프로세스를 필터링할 수 있습니다.
ps aux | grep automount
automount 프로세스 자체에 대한 줄이 최소 하나 이상 표시되어야 합니다. grep automount를 보여주는 두 번째 줄은 방금 실행한 grep 명령이므로 무시해도 됩니다.
root ... 0.0 0.0 ... ? Ssl 15:30 0:00 /usr/sbin/automount
labex ... 0.0 0.0 ... pts/0 S+ 15:31 0:00 grep --color=auto automount
/usr/sbin/automount 프로세스가 보이면 서비스가 실행 중이며 필요에 따른 마운트를 처리할 준비가 되었음을 확인하는 것입니다. 다음 단계에서는 autofs에 무엇을 해야 할지 알려주는 맵을 구성합니다.
동적 디렉토리를 위한 간접 자동 마운트 맵 생성
이 단계에서는 **간접 맵(indirect map)**을 사용하여 첫 번째 자동 마운트 규칙을 구성합니다. 간접 맵은 가장 일반적인 유형의 자동 마운트 구성입니다. 단일 기본 디렉토리(예: /home 또는 /net)를 맵 파일과 연결하여 작동합니다. 사용자가 해당 기본 디렉토리 내의 하위 디렉토리에 액세스하려고 하면, autofs는 맵 파일에서 하위 디렉토리의 이름을 찾아 원격 공유를 필요에 따라 마운트합니다.
이는 모든 것을 한 번에 마운트할 필요 없이 사용자 홈 디렉토리나 공유 프로젝트 폴더 모음을 마운트하는 데 매우 유용합니다. /project_shares라는 새 기본 디렉토리 아래에 위치한 프로젝트 디렉토리를 동적으로 마운트하도록 간접 맵을 구성합니다.
NFS 서버 내보내기 생성
먼저, 공유하려는 시뮬레이션된 NFS 서버의 디렉토리를 준비하겠습니다. /srv/nfs/ 안에 design과 testing이라는 두 개의 프로젝트 디렉토리를 생성합니다.
디렉토리를 생성하고 각각에 샘플 파일을 배치합니다:
sudo mkdir -p /srv/nfs/{design,testing}
sudo sh -c 'echo "Design documents" > /srv/nfs/design/README'
sudo sh -c 'echo "Testing scripts" > /srv/nfs/testing/README'
다음으로, NFS 서버에 이 디렉토리들을 내보내도록 지시해야 합니다. /etc/exports 파일에 항목을 추가하여 이를 수행합니다.
nano로 파일을 엽니다:
sudo nano /etc/exports
파일에 다음 줄을 추가합니다. 이 줄은 NFS 서버에 design 및 testing 디렉토리를 모든 클라이언트(*)와 읽기-쓰기(rw) 권한으로 공유하도록 지시합니다.
/srv/nfs/design *(rw,sync,no_root_squash)
/srv/nfs/testing *(rw,sync,no_root_squash)
파일을 저장하고 종료합니다(Ctrl+X, Y, Enter).
마지막으로, 모든 디렉토리를 다시 내보내어 NFS 서버에 변경 사항을 적용합니다:
sudo exportfs -ra
마스터 맵 항목 생성
autofs 구성은 마스터 맵 파일인 /etc/auto.master에서 시작합니다. 이 파일을 직접 편집하지 않고 /etc/auto.master.d/ 디렉토리에 새 구성 파일을 추가하는 것이 모범 사례입니다.
프로젝트 공유를 위한 새 마스터 맵 파일을 생성합니다:
sudo nano /etc/auto.master.d/shares.autofs
이 파일에 다음 한 줄을 추가합니다:
/project_shares /etc/auto.shares
이 줄은 autofs에 다음과 같이 지시합니다: "/project_shares 디렉토리 아래의 모든 액세스에 대해서는 지침을 위해 /etc/auto.shares에 위치한 맵 파일을 참조하십시오."
편집기를 저장하고 종료합니다.
간접 맵 파일 생성
이제 마스터 맵에서 방금 참조한 간접 맵 파일 /etc/auto.shares를 생성합니다.
sudo nano /etc/auto.shares
이 파일에 다음 줄을 추가합니다:
design -fstype=nfs,rw,sync,vers=3 localhost:/srv/nfs/design
testing -fstype=nfs,rw,sync,vers=3 localhost:/srv/nfs/testing
줄을 분석해 보겠습니다:
design: "키(key)"입니다./project_shares아래의 하위 디렉토리 이름에 해당합니다. 사용자가/project_shares/design에 액세스하면 이 줄이 트리거됩니다.-fstype=nfs,rw,sync,vers=3: 마운트 옵션으로, 파일 시스템 유형, 읽기-쓰기 액세스, 동기식 쓰기, 이 실습 환경에서 사용되는 NFS 버전을 지정합니다.localhost:/srv/nfs/design: 마운트할 원격 NFS 공유 위치입니다.
편집기를 저장하고 종료합니다.
autofs 다시 로드 및 마운트 테스트
autofs 서비스가 새 맵 파일을 인식하려면 구성을 다시 로드해야 합니다. systemctl을 사용할 수 없으므로, automount 프로세스에 HUP(hangup) 신호를 보내 구성을 다시 읽도록 합니다.
sudo killall -HUP automount
이제 테스트해 보겠습니다. 먼저 기본 디렉토리 /project_shares의 내용을 나열해 봅니다. 아직 아무것도 마운트되지 않았으므로 비어 있는 것으로 나타납니다.
ls -l /project_shares
total 0
다음으로, 하위 디렉토리 중 하나에 액세스를 시도합니다. 이것이 autofs가 마운트를 수행하도록 하는 트리거입니다.
ls -l /project_shares/design
total 4
-rw-r--r--. 1 root root 17 Nov 10 16:10 README
성공입니다! design 공유가 자동으로 마운트되었습니다. 이제 기본 디렉토리를 다시 나열하면 활성 마운트 지점이기 때문에 design 디렉토리가 표시됩니다.
ls -l /project_shares
total 0
dr-xr-xr-x. 2 root root 0 Nov 10 16:12 design
testing 디렉토리도 작동하는지 확인하기 위해 동일하게 수행합니다:
ls -l /project_shares/testing
total 4
-rw-r--r--. 1 root root 16 Nov 10 16:10 README
간접 자동 마운트 맵을 성공적으로 구성하고 테스트했습니다.
정적 마운트 지점을 위한 직접 자동 마운트 맵 생성
이 단계에서는 두 번째 유형의 자동 마운트 구성인 **직접 맵(direct map)**에 대해 배웁니다. 여러 마운트를 공통 기본 디렉토리 아래로 그룹화하는 간접 맵과 달리, 직접 맵은 파일 시스템 어디에서나 특정 개별 마운트 지점을 정의합니다. 직접 맵의 각 항목은 단일 절대 경로에 해당합니다.
직접 맵은 /usr/local/tools에 공유 도구 디렉토리를 마운트하는 것과 같이 고정되고 잘 알려진 위치에 소수의 공유를 마운트하는 데 유용합니다. 공유 common_data 디렉토리를 /mnt/common에 마운트하도록 직접 맵을 구성합니다.
NFS 서버 내보내기 준비
이전과 마찬가지로, 먼저 공유하려는 시뮬레이션된 NFS 서버의 디렉토리를 설정해야 합니다. common_data라는 디렉토리를 생성합니다.
디렉토리를 생성하고 그 안에 샘플 파일을 만듭니다:
sudo mkdir -p /srv/nfs/common_data
sudo sh -c 'echo "Common shared data" > /srv/nfs/common_data/info.txt'
이제 /etc/exports에 항목을 추가하여 이 디렉토리를 NFS를 통해 사용할 수 있도록 합니다.
sudo nano /etc/exports
파일에 다음 새 줄을 추가합니다. 이것은 /srv/nfs/common_data 디렉토리를 공유합니다.
/srv/nfs/common_data *(rw,sync,no_root_squash)
파일을 저장하고 종료합니다(Ctrl+X, Y, Enter).
모든 디렉토리를 다시 내보내어 NFS 서버에 변경 사항을 적용합니다:
sudo exportfs -ra
직접 맵을 위한 마스터 맵 항목 생성
직접 맵을 사용하려면 먼저 마스터 맵 구성에서 참조해야 합니다. 특수 마운트 지점 /-는 연결된 맵 파일이 직접 맵임을 나타내는 데 사용됩니다.
직접 마운트를 위한 새 마스터 맵 파일을 생성합니다:
sudo nano /etc/auto.master.d/direct.autofs
이 파일에 다음 한 줄을 추가합니다:
/- /etc/auto.direct
이 줄은 autofs에 다음과 같이 지시합니다: "직접 마운트 목록은 /etc/auto.direct 파일을 참조하십시오. 마운트 지점은 해당 파일 내에 정의된 절대 경로입니다."
편집기를 저장하고 종료합니다.
직접 맵 파일 생성
이제 방금 참조한 직접 맵 파일 /etc/auto.direct를 생성합니다.
sudo nano /etc/auto.direct
이 파일에 다음 줄을 추가합니다. 형식은 간접 맵과 약간 다릅니다.
/mnt/common -fstype=nfs,rw,sync,vers=3 localhost:/srv/nfs/common_data
이 줄을 분석해 보겠습니다:
/mnt/common: "키(key)"이지만, 직접 맵의 경우 키는 마운트 지점의 전체 절대 경로입니다.-fstype=nfs,rw,sync,vers=3: 마운트 옵션으로, 이전과 동일하며 이 실습 환경에서 사용되는 NFS 버전을 포함합니다.localhost:/srv/nfs/common_data: 원격 NFS 공유 위치입니다.
편집기를 저장하고 종료합니다.
autofs 다시 로드 및 직접 마운트 테스트
간접 맵과 마찬가지로, autofs 구성을 다시 로드하여 새 직접 맵을 인식하도록 해야 합니다.
sudo killall -HUP automount
이제 직접 마운트를 테스트해 보겠습니다. 간접 맵과 달리 마운트 지점 /mnt/common은 액세스하려고 시도하기 전까지 파일 시스템에 존재하지 않습니다.
디렉토리 /mnt/common에 액세스를 시도합니다. 이것이 autofs가 마운트 지점을 생성하고 공유를 마운트하도록 트리거합니다.
ls -l /mnt/common
total 4
-rw-r--r--. 1 root root 19 Nov 10 17:00 info.txt
성공입니다! 직접 마운트가 필요에 따라 생성되었습니다. 이 실습 환경에서는 NFS 서버와 클라이언트가 동일한 머신일 때 마운트 표시가 다를 수 있으므로 성공적인 ls -l /mnt/common 출력이 가장 신뢰할 수 있는 확인 방법입니다.
이제 동적 하위 디렉토리를 위한 간접 맵과 정적 절대 마운트 지점을 위한 직접 맵을 모두 성공적으로 구성했습니다.
다른 사용자로 직접 및 간접 자동 마운트 확인
이 마지막 단계에서는 다중 사용자 환경에서 자동 마운터가 어떻게 작동하는지 확인합니다. 자동 마운팅은 공유를 사용할 수 있게 만들지만, 파일에 실제로 읽거나 쓸 수 있는 권한은 NFS 서버의 기본 파일 시스템 권한에 의해 제어됩니다. 몇 명의 테스트 사용자를 생성하고, 각 NFS 공유의 소유권을 할당한 다음, 간접 맵과 직접 맵 모두에 대한 액세스를 테스트합니다.
이 연습은 서로 다른 팀(예: 디자인 및 테스트)이 각자의 공유 디렉토리에 대한 소유권을 가지고, 다른 사용자에게는 읽기 액세스가 제공되지만 쓰기 액세스는 소유자로 제한되는 실제 시나리오를 보여줍니다.
테스트 사용자 생성 및 권한 설정
먼저 designer1과 tester1이라는 두 명의 새 사용자를 생성해야 합니다. 또한 계정으로 전환할 수 있도록 간단한 비밀번호를 설정합니다.
useradd 명령을 사용하여 사용자를 생성합니다. -m 플래그는 사용자의 홈 디렉토리를 생성합니다.
sudo useradd -m designer1
sudo useradd -m tester1
다음으로, 각 사용자의 비밀번호를 설정합니다. 이 실습에서는 간단하게 둘 다 labex.io 비밀번호를 사용합니다(길이, 대소문자 혼합, 숫자, 특수 문자를 포함한 복잡성 요구 사항 충족).
sudo passwd designer1
## Enter new UNIX password: labex.io
## Retype new UNIX password: labex.io
## passwd: password updated successfully
sudo passwd tester1
## Enter new UNIX password: labex.io
## Retype new UNIX password: labex.io
## passwd: password updated successfully
이제 이 새 사용자들에게 액세스 권한을 부여하기 위해 "서버" 측(/srv/nfs/*)의 공유 디렉토리 소유권을 변경합니다.
sudo chown -R designer1:designer1 /srv/nfs/design
sudo chown -R tester1:tester1 /srv/nfs/testing
/srv/nfs/common_data 디렉토리는 계속 root 소유로 유지되어 일반 사용자에게는 읽기 전용이 됩니다.
designer1 사용자로 액세스 테스트
su(substitute user) 명령을 사용하여 designer1 사용자 계정으로 전환합니다. -는 사용자의 전체 로그인 환경을 가져오도록 보장합니다.
su - designer1
## Password: labex.io
명령 프롬프트가 [designer1@host ~]$로 변경됩니다.
먼저 간접 맵을 통해 design 공유에 대한 액세스를 테스트합니다. 성공해야 합니다.
ls -l /project_shares/design
total 4
-rw-r--r--. 1 designer1 designer1 17 Jun 16 16:12 README
이제 이 디렉토리에 파일을 써 봅니다. 이것도 성공해야 합니다.
echo "My design file" > /project_shares/design/design_file.txt
ls -l /project_shares/design
total 8
-rw-r--r--. 1 designer1 designer1 15 Jun 16 16:18 design_file.txt
-rw-r--r--. 1 designer1 designer1 17 Jun 16 16:12 README
다음으로, testing 공유에 액세스를 시도합니다. 내용을 볼 수는 있지만 tester1 소유이므로 쓸 수는 없습니다.
ls -l /project_shares/testing
total 4
-rw-r--r--. 1 tester1 tester1 16 Jun 16 16:12 README
마지막으로, 직접 매핑된 공유를 테스트합니다. designer1은 읽을 수는 있지만 쓸 수는 없어야 합니다.
cat /mnt/common/info.txt
Common shared data
echo "test" > /mnt/common/new_file.txt
-bash: /mnt/common/new_file.txt: Permission denied
designer1 세션을 종료하여 labex 사용자로 돌아갑니다.
exit
tester1 사용자로 액세스 테스트
이제 tester1 사용자로 유사한 테스트를 수행합니다.
su - tester1
## Password: labex.io
design 공유에 액세스합니다. designer1이 생성한 파일을 포함하여 내용을 볼 수는 있지만 쓸 수는 없습니다.
ls -l /project_shares/design
total 8
-rw-r--r--. 1 designer1 designer1 15 Jun 16 16:18 design_file.txt
-rw-r--r--. 1 designer1 designer1 17 Jun 16 16:12 README
이제 testing 공유에 액세스하고 씁니다. tester1이 이 디렉토리를 소유하고 있으므로 성공해야 합니다.
ls -l /project_shares/testing
total 4
-rw-r--r--. 1 tester1 tester1 16 Jun 16 16:12 README
echo "My test script" > /project_shares/testing/test_script.sh
ls -l /project_shares/testing
total 8
-rw-r--r--. 1 tester1 tester1 16 Jun 16 16:12 README
-rw-r--r--. 1 tester1 tester1 15 Jun 16 16:19 test_script.sh
tester1 세션을 종료합니다.
exit
환경 정리
실습을 마치고 시스템을 원래 상태로 복원하려면 생성한 테스트 사용자를 제거합니다. userdel -r 명령은 사용자와 해당 홈 디렉토리를 제거합니다.
sudo userdel -r designer1
sudo userdel -r tester1
이것으로 autofs를 사용한 NFS 관리 실습을 마칩니다.
요약
이 실습에서는 RHEL 시스템에서 NFS 클라이언트 액세스를 구성하는 방법을 배웁니다. 먼저 로컬 마운트 지점을 생성한 다음 mount 명령을 사용하여 NFS 공유에 연결하는 수동 마운트를 수행합니다. mount 명령으로 수동 연결을 설정한 후, /etc/fstab 파일에 항목을 생성하여 영구 마운트를 구성하고 부팅 시 공유가 자동으로 마운트되도록 합니다.
또한, autofs 서비스를 사용하여 필요에 따라 마운트하는 방법을 다룹니다. 여기에는 서비스를 설치 및 활성화하고, 디렉토리를 동적으로 마운트하기 위한 간접 맵과 공유를 정적이고 미리 정의된 위치에 마운트하기 위한 직접 맵이라는 두 가지 다른 방법을 사용하여 공유가 마운트되는 방식을 정의하는 것이 포함됩니다. 마지막으로 직접 및 간접 자동 마운트가 다양한 사용자에 대해 올바르게 작동하는지 확인하는 과정으로 마무리합니다.



