소개
이 실습에서는 Red Hat Enterprise Linux (RHEL) 시스템에서 NFS 클라이언트 액세스를 구성하는 데 필수적인 기술을 배우게 됩니다. 먼저 mount 명령을 사용하여 네트워크 공유를 수동으로 마운트하여 기본 프로세스를 이해합니다. 이어서 시스템 재부팅 후에도 NFS 공유가 자동으로 사용 가능하도록 /etc/fstab에 영구 마운트를 구성하여 정적 네트워크 파일 시스템 통합에 대한 기초적인 이해를 제공합니다.
이러한 핵심 개념을 바탕으로, 자동 마운터 (automounter) 를 설정하여 보다 동적이고 효율적인 방법으로 발전하게 됩니다. 여기에는 autofs 서비스를 설치 및 활성화하고, 온디맨드 디렉터리 마운트를 위한 간접 맵 (indirect maps) 과 정적 마운트 지점을 위한 직접 맵 (direct maps) 을 모두 생성하는 작업이 포함됩니다. 마지막으로, 직접 및 간접 자동 마운트가 서로 다른 사용자에 대해 올바르게 작동하는지 확인하여 강력한 NFS 클라이언트 구성을 관리하는 능력을 공고히 합니다.
mount 명령을 사용하여 NFS 공유를 수동으로 마운트하기
이 단계에서는 Network File System (NFS) 프로토콜을 사용하여 네트워크 공유 디렉터리에 수동으로 액세스하는 방법을 배우게 됩니다. NFS 는 클라이언트 시스템이 로컬 저장소에 액세스하는 방식과 유사하게 컴퓨터 네트워크를 통해 파일에 액세스할 수 있도록 합니다. 이 실습을 위해 필요한 명령을 연습하기 위해 로컬 머신에서 NFS 서버와 클라이언트를 모두 시뮬레이션할 것입니다.
시스템에는 /srv/nfs/shared_data 디렉터리를 내보내는 (공유하는) NFS 서버가 미리 구성되어 있습니다. 여러분의 임무는 이 공유 디렉터리를 로컬 폴더에 마운트하고, 액세스를 확인한 다음, 마운트를 해제하는 것입니다.
단계 1.1: 로컬 마운트 포인트 생성
공유된 NFS 디렉터리에 액세스하려면 로컬 디렉터리가 "마운트 포인트" 역할을 해야 합니다. 이는 본질적으로 클라이언트 시스템에 있는 빈 폴더로, 원격 공유의 내용이 마운트되면 여기에 표시됩니다. 모든 작업은 ~/project 디렉터리 내에서 수행됩니다.
프로젝트 폴더 안에 nfs_mount라는 디렉터리를 생성합니다.
mkdir ~/project/nfs_mount
프로젝트 폴더의 내용을 나열하여 디렉터리가 생성되었는지 확인할 수 있습니다.
ls -F ~/project
nfs_mount/
단계 1.2: NFS 공유 마운트
이제 mount 명령을 사용하여 새로 생성한 마운트 포인트에 원격 NFS 공유를 연결할 수 있습니다. 마운트하는 것은 시스템 수준 작업이므로 이 명령에는 sudo 권한이 필요합니다.
기본 구문은 mount -t nfs <서버>:<원격_디렉터리> <로컬_마운트_포인트>입니다.
-t nfs: 파일 시스템 유형이 NFS 임을 지정합니다.localhost:/srv/nfs/shared_data: 서버와 내보내는 경로인 소스입니다.~/project/nfs_mount: 로컬 마운트 포인트인 대상입니다.
공유를 마운트하려면 다음 명령을 실행합니다.
sudo mount -t nfs localhost:/srv/nfs/shared_data ~/project/nfs_mount
이 명령은 성공하면 아무런 출력을 생성하지 않습니다.
단계 1.3: 마운트 확인 및 공유와 상호 작용
mount 명령을 실행한 후 공유가 올바르게 마운트되었는지 확인해야 합니다. 몇 가지 방법으로 이를 수행할 수 있습니다.
먼저 mount 명령을 grep으로 파이프하여 NFS 마운트를 필터링합니다.
mount | grep nfs
localhost:/srv/nfs/shared_data on /home/labex/project/nfs_mount type nfs4 (rw,relatime,vers=4.2,rsize=...,wsize=...,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=...,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 에 의해 소유될 수 있으므로 tee 명령과 함께 sudo를 사용하여 파일을 작성해야 합니다.
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
단계 1.4: 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 공유를 영구적으로 마운트하도록 구성합니다.
단계 2.1: 환경 준비
먼저 이전 단계의 마운트 포인트인 ~/project/nfs_mount가 존재하고 비어 있는지 확인합니다. 마지막 단계에서 바로 이어서 진행하는 경우 이미 존재해야 합니다.
디렉터리가 존재하지 않으면 지금 생성합니다.
mkdir -p ~/project/nfs_mount
또한 이 디렉터리에 현재 아무것도 마운트되어 있지 않은지 확인합니다. umount 명령을 실행할 수 있으며, 마운트되지 않은 경우 오류를 보고하지만 이는 정상입니다.
sudo umount ~/project/nfs_mount
단계 2.2: /etc/fstab 파일 편집
이제 /etc/fstab 파일에 새 줄을 추가하여 영구 NFS 마운트를 정의합니다. 이 시스템 구성 파일을 편집하려면 sudo를 사용해야 합니다. nano 편집기를 사용하겠습니다.
다음 명령으로 파일을 엽니다.
sudo nano /etc/fstab
파일의 맨 아래로 이동하여 다음 줄을 추가합니다. 이 파일의 오류는 시스템 부팅 문제를 일으킬 수 있으므로 구문에 매우 주의해야 합니다.
localhost:/srv/nfs/shared_data /home/labex/project/nfs_mount nfs defaults,_netdev 0 0
이 줄을 자세히 살펴보겠습니다.
localhost:/srv/nfs/shared_data: 마운트할 장치입니다. NFS 서버 (localhost) 와 내보낸 디렉터리 (/srv/nfs/shared_data) 를 지정합니다./home/labex/project/nfs_mount: 공유에 액세스할 수 있는 로컬 마운트 포인트입니다.nfs: 파일 시스템 유형을 지정합니다.defaults,_netdev: 마운트 옵션입니다.defaults는 표준 옵션 세트 (rw는 읽기/쓰기) 를 포함합니다._netdev는 네트워크 파일 시스템에 중요합니다. 이 공유를 마운트하기 전에 네트워크가 활성화될 때까지 기다리도록 시스템에 지시합니다.0:dump백업 유틸리티에서 사용하는dump필드입니다.0값은 비활성화합니다.0: 부팅 시 파일 시스템 검사 순서를 결정하는 데 사용되는fsck유틸리티의pass필드입니다.0값은 파일 시스템이 검사되지 않음을 의미합니다.
줄을 추가한 후 Ctrl+X, Y, Enter를 눌러 파일을 저장하고 nano를 종료합니다.
단계 2.3: /etc/fstab 항목 테스트
새로운 /etc/fstab 항목을 테스트하기 위해 시스템을 재부팅할 필요는 없습니다. mount 명령은 /etc/fstab을 읽을 만큼 똑똑합니다. 마운트 포인트만 제공하면 mount는 /etc/fstab에서 해당 항목을 찾아 거기서 찾은 정보를 사용합니다.
마운트 포인트만 사용하여 공유를 마운트합니다.
sudo mount ~/project/nfs_mount
명령이 오류 없이 완료되면 /etc/fstab 항목이 올바른 것입니다.
단계 2.4: 마운트 확인
mount 명령의 출력을 확인하고 디렉터리 내용을 나열하여 공유가 이제 마운트되었는지 확인합니다.
mount | grep nfs_mount
localhost:/srv/nfs/shared_data on /home/labex/project/nfs_mount type nfs4 (rw,relatime,vers=4.2,rsize=...,wsize=...,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=...,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
이 마운트는 이제 영구적이며 재부팅 후 자동으로 다시 설정됩니다.
단계 2.5: 환경 정리
이후 실습과의 충돌을 피하기 위해 이제 변경 사항을 되돌려야 합니다. 먼저 공유를 마운트 해제한 다음 /etc/fstab에서 추가한 줄을 제거합니다.
디렉터리를 마운트 해제합니다.
sudo umount ~/project/nfs_mount
항목을 제거하기 위해 다시 /etc/fstab을 엽니다.
sudo nano /etc/fstab
화살표 키를 사용하여 추가한 줄 (localhost:/srv/nfs/shared_data ...) 로 이동하고 Ctrl+K를 눌러 전체 줄을 삭제합니다. 그런 다음 Ctrl+X, Y, Enter를 눌러 저장하고 종료합니다.
이렇게 하면 다음 실습을 위해 시스템이 깨끗한 상태로 유지됩니다.
autofs 설치 및 활성화를 통한 자동 마운터 설정
이전 단계에서는 수동 및 영구 마운트를 살펴보았습니다. /etc/fstab은 영구 마운트에 매우 유용하지만, 부팅 시 모든 것을 마운트하려고 시도한다는 단점이 있습니다. 네트워크 공유를 사용할 수 없는 경우 부팅 프로세스가 느려지거나 중단될 수도 있습니다. autofs 서비스에서 제공하는 자동 마운터는 네트워크 파일 시스템이 처음 액세스될 때만 온디맨드 (on-demand) 로 마운트하여 이 문제를 해결합니다.
autofs 서비스는 "맵 (maps)"이라고 하는 구성 파일 세트를 사용하여 어떤 원격 공유를 어디에 마운트할지 결정합니다. 이 단계에서는 필요한 패키지를 설치하고 해당 서비스를 시작하여 자동 마운터를 사용하도록 시스템을 준비합니다.
단계 3.1: 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!
단계 3.2: autofs 서비스 시작
표준 RHEL 시스템에서는 systemctl을 사용하여 서비스를 시작하고 활성화합니다. 그러나 이 실습은 systemctl을 사용할 수 없는 컨테이너화된 환경에서 실행됩니다. 대신, automount 명령을 사용하여 자동 마운터 데몬을 직접 시작합니다.
이 명령은 백그라운드에서 실행되며 맵에 구성된 디렉터리에 액세스하려는 시도를 모니터링하는 자동 마운터 데몬을 시작합니다.
서비스를 시작하려면 다음 명령을 실행합니다.
sudo automount
성공하면 이 명령은 아무런 출력을 생성하지 않습니다. 단순히 데몬 프로세스를 시작합니다.
단계 3.3: 서비스 실행 확인
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라는 새 기본 디렉터리 아래에 있는 프로젝트 디렉터리를 동적으로 마운트하도록 간접 맵을 구성합니다.
단계 4.1: 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
단계 4.2: 마스터 맵 항목 생성
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에 있는 맵 파일을 참조하여 지침을 받으십시오."라고 지시합니다.
편집기를 저장하고 종료합니다.
단계 4.3: 간접 맵 파일 생성
이제 마스터 맵에서 방금 참조한 간접 맵 파일 /etc/auto.shares를 생성합니다.
sudo nano /etc/auto.shares
이 파일에 다음 줄을 추가합니다.
design -fstype=nfs,rw,sync localhost:/srv/nfs/design
testing -fstype=nfs,rw,sync localhost:/srv/nfs/testing
한 줄을 자세히 살펴보겠습니다.
design: 이것은 "키 (key)"입니다./project_shares아래의 하위 디렉터리 이름에 해당합니다. 사용자가/project_shares/design에 액세스하면 이 줄이 트리거됩니다.-fstype=nfs,rw,sync: 파일 시스템 유형, 읽기 - 쓰기 액세스 및 동기식 쓰기를 지정하는 마운트 옵션입니다.localhost:/srv/nfs/design: 마운트할 원격 NFS 공유 위치입니다.
편집기를 저장하고 종료합니다.
단계 4.4: 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에 공유 도구 디렉터리를 마운트하는 것과 같이 소수의 공유를 고정되고 잘 알려진 위치에 마운트하는 데 유용합니다. /mnt/common에 공유 common_data 디렉터리를 마운트하도록 직접 맵을 구성합니다.
단계 5.1: NFS 서버 내보내기 준비
이전과 마찬가지로 먼저 공유하려는 디렉터리를 시뮬레이션된 NFS 서버에 설정해야 합니다. common_data라는 디렉터리를 생성합니다.
디렉터리를 생성하고 그 안에 샘플 파일을 배치합니다.
sudo mkdir -p /srv/nfs/common_data
sudo sh -c 'echo "Common shared data" > /srv/nfs/common_data/info.txt'
이제 NFS 를 통해 이 디렉터리를 사용할 수 있도록 /etc/exports에 항목을 추가합니다.
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
단계 5.2: 직접 맵을 위한 마스터 맵 항목 생성
직접 맵을 사용하려면 먼저 마스터 맵 구성에서 참조해야 합니다. 특수 마운트 지점 /-는 연결된 맵 파일이 직접 맵임을 나타내는 데 사용됩니다.
직접 마운트를 위한 새 마스터 맵 파일을 생성합니다.
sudo nano /etc/auto.master.d/direct.autofs
이 파일에 다음 한 줄을 추가합니다.
/- /etc/auto.direct
이 줄은 autofs에 "직접 마운트 목록은 /etc/auto.direct 파일을 참조하십시오. 마운트 지점은 해당 파일 내에 정의된 절대 경로입니다."라고 지시합니다.
편집기를 저장하고 종료합니다.
단계 5.3: 직접 맵 파일 생성
이제 방금 참조한 직접 맵 파일 /etc/auto.direct를 생성합니다.
sudo nano /etc/auto.direct
이 파일에 다음 줄을 추가합니다. 형식은 간접 맵과 약간 다릅니다.
/mnt/common -fstype=nfs,rw,sync localhost:/srv/nfs/common_data
이 줄을 분석해 보겠습니다.
/mnt/common: 이것은 "키 (key)"이지만, 직접 맵의 경우 키는 마운트 지점의 전체 절대 경로입니다.-fstype=nfs,rw,sync: 이전과 동일한 마운트 옵션입니다.localhost:/srv/nfs/common_data: 원격 NFS 공유 위치입니다.
편집기를 저장하고 종료합니다.
단계 5.4: 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
성공! 직접 마운트가 온디맨드로 생성되었습니다. mount 명령으로도 확인할 수 있습니다.
mount | grep common
localhost:/srv/nfs/common_data on /mnt/common type nfs4 (rw,relatime,vers=4.2,rsize=...,wsize=...,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=...,local_lock=none,addr=...)
이제 동적 하위 디렉터리를 위한 간접 맵과 정적 절대 마운트 지점을 위한 직접 맵을 모두 성공적으로 구성했습니다.
다른 사용자로 직접 및 간접 자동 마운트 확인
이 마지막 단계에서는 다중 사용자 환경에서 자동 마운터가 작동하는 방식을 확인합니다. 자동 마운트는 공유를 사용할 수 있게 하지만, 파일에 실제로 읽거나 쓸 수 있는 권한을 제어하는 것은 NFS 서버의 기본 파일 시스템 권한입니다. 몇 명의 테스트 사용자를 생성하고 해당 NFS 공유의 소유권을 할당한 다음, 간접 및 직접 맵 모두에 대한 액세스를 테스트합니다.
이 연습은 서로 다른 팀 (예: 디자인 및 테스트) 이 각 공유 디렉터리의 소유권을 가지며, 다른 사용자는 읽기 액세스를 허용하지만 쓰기 액세스는 소유자로 제한되는 실제 시나리오를 보여줍니다.
단계 6.1: 테스트 사용자 생성 및 권한 설정
먼저 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가 소유한 상태로 유지되어 일반 사용자는 읽기 전용으로 액세스할 수 있습니다.
단계 6.2: 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
단계 6.3: 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
단계 6.4: 환경 정리
실습을 마치고 시스템을 원래 상태로 복원하려면 생성한 테스트 사용자를 제거합니다. userdel -r 명령은 사용자와 해당 홈 디렉터리를 제거합니다.
sudo userdel -r designer1
sudo userdel -r tester1
이로써 autofs를 사용한 NFS 관리 실습이 완료되었습니다.
요약
이 실습에서는 RHEL 시스템에서 NFS 클라이언트 액세스를 구성하는 방법을 배웁니다. 먼저 로컬 마운트 지점을 생성한 다음 mount 명령을 사용하여 NFS 공유에 연결하여 수동 마운트를 수행합니다. mount 명령으로 수동 연결을 설정한 후, /etc/fstab 파일에 항목을 생성하여 부팅 시 공유가 자동으로 마운트되도록 하여 영구 마운트를 구성합니다.
또한, 이 실습에서는 autofs 서비스를 사용하여 온디맨드 마운트 구성을 다룹니다. 여기에는 서비스 설치 및 활성화, 두 가지 다른 방법 (동적으로 디렉터리를 마운트하기 위한 간접 맵 생성 및 정적 사전 정의 위치에 공유를 마운트하기 위한 직접 맵 생성) 을 사용하여 공유가 마운트되는 방식을 정의하는 것이 포함됩니다. 마지막으로 직접 및 간접 자동 마운트가 다른 사용자에 대해 올바르게 작동하는지 확인합니다.



