본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

NFS 서버가 외부에 공유(export)하는 디렉터리 목록을 관리한다.

  • /etc/exports 파일을 수정한 뒤 NFS 서비스를 재시작하지 않고 변경 사항을 반영할 때 사용한다.
  • 경로 : /usr/sbin/exportfs
  • 패키지 : nfs-utils
  • 설정 파일 : /etc/exports, /etc/exports.d/*.exports
  • 현재 공유 상태 기록 파일 : /var/lib/nfs/etab
  • 서비스 이름(Rocky Linux 8) : nfs-server
# exportfs [-avrs] [-o 옵션] [클라이언트:/경로]
  • -a : /etc/exports에 정의된 모든 디렉터리를 공유하거나(-u와 함께 쓰면) 모두 해제한다.
  • -r : /etc/exports를 다시 읽어 공유 목록을 재구성한다. 파일에서 삭제된 항목은 공유가 해제된다.
  • -u : 지정한 디렉터리의 공유를 해제한다.
  • -v : 공유·해제 작업 내용과 공유 옵션을 자세히 출력한다.
  • -s : 현재 공유 목록을 /etc/exports 형식으로 출력한다.
  • -o 옵션 : /etc/exports에 적지 않고 명령행에서 공유 옵션을 지정한다.
  • -i : /etc/exports 파일을 무시하고 명령행 옵션과 기본값만 사용한다.
  • -f : 커널의 공유 테이블을 비운다. 활성 클라이언트는 다음 요청 시 다시 등록된다.

/etc/exports 형식

편집 원본 편집
공유디렉터리  클라이언트1(옵션1,옵션2) 클라이언트2(옵션)
  • 클라이언트와 괄호 사이에 공백을 넣으면 안 된다. 192.168.1.0/24 (rw)처럼 쓰면 192.168.1.0/24에는 기본 옵션이, 모든 호스트(*)에는 rw가 적용된다.
  • 클라이언트 지정 방식 : 호스트 이름(server1.example.com), IP 주소(192.168.1.10), 네트워크(192.168.1.0/24 또는 192.168.1.0/255.255.255.0), 와일드카드(*.example.com), NIS 넷그룹(@group), 모든 호스트(*)

주요 공유 옵션

편집 원본 편집
  • ro : 읽기 전용으로 공유한다. (기본값)
  • rw : 읽기와 쓰기를 모두 허용한다.
  • sync : 변경 내용을 디스크에 기록한 뒤 응답한다. (기본값)
  • async : 디스크 기록 전에 응답한다. 빠르지만 서버 장애 시 데이터가 손실될 수 있다.
  • root_squash : 클라이언트의 root(UID 0) 요청을 익명 사용자(nobody)로 매핑한다. (기본값)
  • no_root_squash : 클라이언트의 root를 서버에서도 root 권한으로 인정한다. 보안상 주의해야 한다.
  • all_squash : root를 포함한 모든 사용자를 익명 사용자로 매핑한다.
  • no_all_squash : 일반 사용자의 UID/GID를 그대로 사용한다. (기본값)
  • anonuid=UID, anongid=GID : 익명 사용자로 매핑할 때 사용할 UID와 GID를 지정한다.
  • secure / insecure : 1024 미만 포트에서 온 요청만 허용(secure, 기본값)하거나 모든 포트의 요청을 허용(insecure)한다.
  • subtree_check / no_subtree_check : 하위 트리 검사를 할지 지정한다. 기본값은 no_subtree_check이다.
# /etc/exports 예시
/data      192.168.10.0/24(rw,sync,no_root_squash)
/pub       *(ro,all_squash)
/upload    192.168.10.30(rw,all_squash,anonuid=1500,anongid=1500)

# /etc/exports를 수정한 뒤 공유 목록을 다시 읽어 적용한다.
# exportfs -ra

# 현재 공유 중인 목록과 옵션을 확인한다.
# exportfs -v

# 특정 클라이언트에 대한 공유를 해제한다.
# exportfs -u 192.168.10.30:/upload

# /etc/exports에 적지 않고 임시로 공유한다.
# exportfs -o rw,sync 192.168.10.40:/tmp/share

# 클라이언트에서 서버의 공유 목록을 확인한다.
$ showmount -e 192.168.10.5
  • root_squash, no_root_squash, all_squash, anonuid·anongid의 의미와 /etc/exports 한 줄을 완성하는 문제가 자주 나온다.
  • 설정 변경 후 적용 명령으로 exportfs -r(또는 -ra)을 묻는 문제가 자주 나온다.
  • 호스트와 괄호 사이의 공백 유무에 따라 의미가 달라진다.
  • 방화벽에서 nfs, mountd, rpc-bind 서비스를 허용해야 클라이언트가 접근할 수 있다.