1) NFS 란?
- 네트워크를 통해 파티션 공유를 제공하는 서비스
- 대부분 유닉스 계열에서 사용할수 있음
- 시스템의 리소스를 직접 제공하는 서비스이므로 보안에 주의해야 한다 ( 가용성 공격에 취약 )
- UNIX 끼리만 통신할수 있다 ( unix 서버 - unix 클라이언트 )
- 두 시스템간 커널이 달라도 unix 시스템 이기만 하면 사용가능
- NFS server 와 NFS client 로 구성된다
- NFS 서버와 클라이언트의 계정이 동일해야 한다 ( UID 가 같아야함 )
- 계정명이 같아도 UID 가 다르면 동작하지 않는다 ( 권한 할당이 되지 않는다 )
- NFS 클라이언트에서 NFS 서버를 mount 해서 사용
2) 관련 파일 및 실행
1. NFS 서버 설치 확인
- 대부분 유닉스는 기본적으로 설치되어 있다
[ rpm-qa | grep nfs-utils ]
[ rpm-qa | grep rpcbind ]
2. 환경 설정 및 관리 파일
- 데몬
[ /usr/sbin/ecportfs ]
[ /usr/sbin/rpcbind ]
- 관리 스크립트
[ /usr/lib/systemd/system/nfs.service ]
[ /usr/lib/systemd/system/rpcbind.service ]
/* unix 6버전 이하에서는 rpcbind 대신 portmap 을 사용한다 */
- NFS 서버 실행
[ systemctl start nfs.service ]
[ ntsysv ] 를 실행해 설정 ( nfs-server.service , nfs-service )
- 환경 설정 파일
[ /etc/exports ]
1. 형식 : [ export 디렉터리 ] [ 허가할 클라이언트 IP주소 / 넷마스크 ] [(옵션)]
2. 옵션
- ro : 읽기 전용, rw : 읽기 쓰기 허용
- root_squash : 클라이언트의 root를 nobody로 매핑
- no_root_squash : 클라이언트의 root와 서버의 root를 일치시킨다.
- all_squash : 모든 사용자를 nobody로 매핑
- no_all_squash : 서버의 사용자와 클라이언트의 사용자를 일치시킨다.
- All_squash와 no_all_squash 설정에서 root는 어떻게 매칭되는지 확인 한다.
- anonuid=uid, anongid=gid : nobody로 매핑 될경우 지정된 계정이나 그룹으로 대상을 변경
|
일반 유저 |
root |
Default |
no_all_squash |
root_squash |
설정 |
all_squash |
no_root_squash |
* 서버-클라이언트 간 계정 매핑은 UID 기준으로 매핑된다
- NFS 클라이언트 설정
1. 명령어
mount -t nfs [ NFS 서버 IP ] : [ /공유할 디렉터리 ] [ /마운트할 디렉터리 ]
ex) mount 192.168.10.31:/home/pub /home/pub
2. 부팅시 자동으로 마운트 하기 위해 [ fstab ] 에 등록한다