본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Network File System
네트워크로 연결된 다른 시스템의 디렉터리를 마운트해 내 파일 시스템처럼 쓰게 하는 파일 공유 서비스
  • NFS 는 파일을 나눠 쓰는 서비스이지 인증 서비스가 아니다. 여러 서버의 사용자 계정·비밀번호를 한곳에서 확인하는 일은 NIS, LDAP, Active Directory, 커버로스 같은 인증·디렉터리 서비스가 맡는다. NIS 로 계정을 통일하고 NFS 로 홈 디렉터리를 공유하는 식으로 함께 쓰는 경우가 많다
  • 1984년 Sun Microsystems사에서 개발한 서비스
  • TCP/IP기반으로 다른 시스템의 파일 시스템을 마운트하여 사용할 수 있다.
  • 사용이 편리한 대신 보안에 취약하다.
  • NFSv3 까지는 사용자를 따로 인증하지 않는다. 클라이언트가 보내는 UID·GID 를 그대로 믿고, 접근은 /etc/exports 에 적은 호스트(IP·대역) 단위로만 허락한다. 그래서 클라이언트의 root 가 서버에서도 root 가 되지 않도록 기본값 root_squash 로 nobody 에 맵핑한다
  • NFSv4 는 커버로스(sec=krb5, krb5i, krb5p)로 사용자 인증과 무결성·암호화를 붙일 수 있다
  • 공유는 필요한 대역에만, 가능하면 ro 로 열고 no_root_squash 는 피한다
  • 환경 설정 파일
  • 사용 예시
#[공유할 디렉터리] [허가할 호스트1(옵션1,옵션2,..)] [허가할 호스트2(옵션)] [허가할 호스트3(옵션)] ..

/nfsdata 192.168.123.0/24(rw) trustGroup(rw,no_root_squash)

주요 옵션

  • ro: 읽기 전용 (기본값)
  • rw: 읽기/쓰기
  • no_root_squash: 클라이언트에서 접근하는 root 인정
  • root_squash: 클라이언트에서 접근하는 root 무시. 서버 상의 nobody로 매핑 (기본값)
  • all_squash: root를 포함하여 모든 사용자의 권한을 nobody로 매핑
  • no_subtree_check: 하위 디렉터리를 검사하지 못하도록 설정
  • secure: 포트 번호가 1024 이하의 요청에만 허가
  • async: 데이터 변경을 비동기식으로 처리. 쓰기가능한 디스크 스토리지에 사용하면 유용
  • anonuid: 접근하는 사용자 권한을 지정한 uid로 매핑
  • anongid: 접근하는 그룹 권한을 지정한 gid로 매핑
  • NFS에 포함되는 파일은 아니다.
  • 부팅시 자동으로 마운트 되도록 하기 위해 같이 사용한다.
  • 사용 예시
192.168.5.13:/nfsdata     /mnt     nfs     timeo=15,soft,retrans=3   0  0

클라이언트에서 마운트하기

편집 원본 편집

NFS 공유는 서버주소:공유디렉터리 꼴로 적어 마운트한다.

# showmount -e 192.168.5.13                 # 서버가 공유한 디렉터리 확인
# mount -t nfs 192.168.5.13:/data /mnt      # 192.168.5.13 의 /data 를 /mnt 에 마운트
  • 서버 주소와 경로 사이에 콜론(:)을 쓴다. //192.168.5.13/data 는 SMB/CIFS 공유를 마운트할 때(mount -t cifs, 삼바) 쓰는 꼴이고, \\192.168.5.13\data 는 윈도우 공유 폴더 경로(UNC) 꼴이다
  • 부팅할 때 자동으로 붙이려면 같은 꼴을 /etc/fstab 에 적는다(위 예)

NFS는 RPC를 이용하므로, RPC 정보를 조회할 일이 많다. RPC에서 사용하는 여러 포트를 방화벽에서 열어줘야 하는데 이 때 rpcinfo -p 가 사용된다. 자세한 내용은 리눅스 rpcinfo 문서 확인

NFS로 마운트된 목록들을 볼 수 있다. 자세한 내용은 리눅스 showmount 문서 확인