NFS(Network File System)

미리내·2023년 12월 27일

Linux

목록 보기
1/1

NFS 서버 설정

패키지 설치

# Debian 계열(Debian, Ubuntu, Linux Mint, ...)
sudo apt install nfs-kernel-server rpcbind

# RedHat 계열(RHEL, Fedora, CentOS, Oracle Linux, ...)
sudo yum install nfs-utils rpcbind

설정

# /home/mirinae 디렉토리 하위에 Share 디렉토리를 NFS 서버 디렉토리로 사용한다고 가정
sudo mkdir -p /home/mirinae/Share

# Share 디렉토리에 누구나 접근할 수 있게 권한 및 소유권 수정
chmod 777 /home/mirinae/Share
sudo chown -R nobody:nogroup /home/mirinae/Share

# NFS 서버 설정 파일 수정
sudo vi /etc/exportfs

/etc/exportfs

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#

# Server IP가 10.20.30.40이고 서브넷 마스크가 255.255.255.0이라고 가정
/home/mirinae/Share/	10.20.30.40/24(ro,sync,root_squash,subtree_check)

/etc/exportfs 파일 수정 후 바뀐 설정 적용

sudo exportfs -a

서비스 재시작

sudo systemctl restart nfs-server rpcbind

방화벽 설정

# 접속할 IP가 12.34.56.78이고 서브넷 마스크가 255.255.255.0이라고 가정
sudo iptables -A INPUT -p tcp -s 12.34.56.78/24 -j ACCEPT

NFS 클라이언트 설정

패키지 설치

# Debian 계열(Debian, Ubuntu, Linux Mint, ...)
sudo apt install nfs-common

# RedHat 계열(RHEL, Fedora, CentOS, Oracle Linux, ...)
sudo yum install nfs-utils

마운트

# NFS 서버 디렉토리를 마운트할 로컬 디렉토리가 /mnt/nfsdisk라고 가정
sudo mkdir -p /mnt/nfsdisk
sudo mount -t nfs 10.20.30.40:/home/mirinae/Share /mnt/nfsdisk

언마운트

sudo umount /mnt/nfsdisk

자동 마운트 설정

sudo vi /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system>						<mount point>	<type>	<options>											<dump>	<pass>
# Server IP가 10.20.30.40이고 서브넷 마스크가 255.255.255.0이라고 가정
//10.20.30.40/home/mirinae/Share/	/mnt/nfsdisk	nfs		iocharset=utf8,file_mode=0777,dir_mode=0777,noperm	0		0

/etc/exportfs 파일 옵션

읽기/쓰기 모드

  • ro : 읽기 전용으로 지정(기본값)
  • rw : 읽기 및 쓰기가 가능하게 지정

하위 디렉토리 검색 권한

  • no_subtree_check : 하위 디렉토리 검색 금지, 최상위 디렉토리만 접근 허용

동기/비동기 모드

  • asnyc : 파일이 변경될 때 기록을 비동기적으로 처리, 변경 사항을 기록하면서 응답
  • sync : 파일이 변경될 때 기록을 동기적으로 처리, 변경 사항을 기록한 후 응답(기본값)

Well-known ports의 요청만 허용

  • secure : port 번호가 1024 이하인 서비스의 요청만 허용

권한 접근 정책

  • no_root_squash : root 권한 접근 허용
  • root_squash : root 권한 접근 거부, root 요청을 nobody로 매핑(기본값)
  • all_squash : 모든 사용자의 접근 권한을 nobody로 매핑
  • anonuid=XXX : 모든 사용자의 접근 권한을 지정한 UID로 매핑
  • anongid=XXX : 모든 사용자 그룹의 접근 권한을 지정한 GID로 매핑

NFS 관련 명령어

  • rpcinfo : 메모리에 로딩된 서비스 테이블(프로그램과 port 번호를 매핑한 테이블) 출력
  • exportfs : NFS의 공유 디렉토리 관리
    • -v : 상세한 내용 출력(verbose)
    • -r : /etc/exportfs 파일을 다시 읽기(reload)
    • -a : 모든 디렉토리를 대상으로 지정(all)
    • -u : export된 디렉토리 해제(unset)
  • showmount : export된 정보 출력
    • -a : Hostname:Directory 형식으로 모든 내용 출력(all)
    • -e Hostname : 지정한 Host에서 export된 정보 출력
    • -d : NFS 클라이언트에서 mount한 목록 출력(directory)
  • nfsstat : NFS 및 RPC 연결에 대한 통계 정보 출력

출처

Network File System (NFS)
https://ubuntu.com/server/docs/service-nfs

0개의 댓글