2020. 4. 22.

[Linux] NFS 기본 개념 정리


NFS - 개요
Ø 네트워크를 통해 파티션을 공유하도록 제공하는 서비스
Ø Sun사에서 개발되어 대부분의 유닉스에서 사용
Ø 유닉스 계열의 거의 모든 시스템에서 공유 가능
Ø 시스템의 리소스를 직접 제공하는 서비스이므로 보안에 주의한다.
응용을 제공하는 것이 아니라 리소스를 제공하는 서비스이다.

NFS server 
NFS client

Lirux : NFS Server 
192.168.10.31 
: NFS ient 
san 
192.168.10.33

nfs 사용자 계정이 동일하여야함.

NFS서버와 클라이언트는 네트워크를 분리해야함

백업 정책 만들때 아주 유용하다.

네트워크를 잘못 구성하면 운영하기 어려움

NFS 서버 설치 확인
# rpm -qa | grep nfs-utils
nfs-utils-1.2.3-64.el6.x86_64
nfs-utils-lib-1.1.5-11.el6.x86_64

# rpm -qa | grep rpcbind
rpcbind-0.2.0-13.el6_9.1.x86_64

yum list nfs-utils
yum list nfs-utils

rpcbind 포트맵이라 불림 부가설명 넣어야함


관련 파일
데몬 : /usr/sbin/exportfs
/usr/sbin/rpcbind
관리 스크립트 : /usr/lib/systemd/system/nfs.service
/usr/lib/systemd/system/rpcbind.service
환경 설정 파일 : /etc/exports
이전 버전은 portmap을 이용한다. (rpcbind 대신에)


systemctl start nfs.service

roct@linux:- 
ntsysv I 
kl UI +011 
. 1.4 
CII€I 
(C) 2001 Red 
netcf -transact ion . service 
nfs—bl kmap. service 
nfs—rquotad. servi ce 
nfs—server . service 
nfs . service 
ntpd. serv ice 
ntpdate.service 
numad. servi ce 
LII g

ntsysv 이용해서 사용

설정
NFS로 제공될 자원과 권한 설정
Ø 형식
[export 할 디렉토리] [허가할 클라이언트][(옵션)]
허가할 클라이언트 지정
- 주소/넷마스크의 표현 형식으로 사용가능
ex. 203.228.182.0/24 --> 203.228.182네트워크의 모든 주소
- 하나의 IP 및 호스트의 주소로 적을 수 있다.
*, ?등의 와일드카드를 이용 여러 서버를 나타낼 수 있다.
ex. *.msmc.or.kr --> msmc 도메인에 있는 모든 서버

파티션을 만들고 디렉토리를 만들어서 마운트를 해줘야한다.


- 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로 매핑 될경우 지정된 계정이나
그룹으로 대상을 변경한다.
- sync : 파일 쓰기 후에 디스크 동기화
- insecure : 인증되지 않은 접속도 허용
※ 서버-클라이언트간 계정 매핑은 UID를 기준으로 한다.

Default 
root 
root_squasfi 
all_squasfi

root_squash no_root_squash 같이 쓰는게 아님

NFS 클라이언트 - mount

명령
mount –t nfs NFS서버IP:/공유디렉토리 /마운트할디렉토리
ex) mount 192.168.10.31:/home/pub /home/pub
보통 같은 디렉토리에 해둔다.

일반 mount와 동일하다.
재귀적인 mount는 불허된다.

 fstab에 등록
부팅시에 자동으로 마운트 된다.

사전에 rpcbind(postmap)이 실행되어 있어야 한다.

NFS – ex
# cat exports
/ master(rw) trusty(rw,no_root_squash)


/home/down 192.168.3.10(rw) 192.168.3.11(ro)
ro 읽을 수만 있음

/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)
150 사용자와 100그룹에 매핑시켜라 1000 이하 계정이기 때문에 아무것도 못할 확률이 높음 근데 rw 잇는거면 이렇게 쓰면 안된다는 것을 말한다.

/pub (ro,all_squash)


cat exports
/home/a1 192.168.1.12(rw,no_root_squash)
/home/a2 192.168.1.12(rw,all_squash)
/home/a3 192.168.1.12(rw,no_all_squash)
/home/a4 192.168.1.12(rw,all_squash,root_squash)
/home/a5 192.168.1.12(rw,all_squash,no_root_squash)
/home/a6 192.168.1.12(rw,no_all_squash,root_squash)
/home/a7 192.168.1.12(rw,no_all_squash,no_root_squash)
/home/a8 192.168.1.12(rw,anonuid=##,anongid=##)
각 사용자의 디렉토리를 client에서 마운트해서 접근 권한을 확인한다.
뒤에 붙은 것을 해석해야한다.

[root@li10 ~]# ll /home/a1
-rw-r--r-- 1 root root 1 5 17 10:50 root.txt
-rw-r--r-- 1 st01 st 1 5 17 10:54 st01.txt
-rw-r--r-- 1 503 st 1 5 17 10:57 st03.txt
[root@li10 ~]# ll /home/a2
-rw-r--r-- 1 nfsnobody nfsnobody 1 5 17 10:50 root.txt
-rw-r--r-- 1 nfsnobody nfsnobody 1 5 17 10:55 st01.txt
-rw-r--r-- 1 nfsnobody nfsnobody 1 5 17 10:57 st03.txt
[root@li10 ~]# ll /home/a3
-rw-r--r-- 1 nfsnobody nfsnobody 1 5 17 10:50 root.txt
-rw-r--r-- 1 st01 st 1 5 17 10:55 st01.txt
-rw-r--r-- 1 503 st 1 5 17 10:57 st03.txt
[root@li10 ~]# ll /home/a4
-rw-r--r-- 1 nfsnobody nfsnobody 1 5 17 10:50 root.txt
-rw-r--r-- 1 nfsnobody nfsnobody 1 5 17 10:55 st01.txt
-rw-r--r-- 1 nfsnobody nfsnobody 1 5 17 10:57 st03.txt
[root@li10 ~]# ll /home/a5
-rw-r--r-- 1 nfsnobody nfsnobody 1 5 17 10:50 root.txt
-rw-r--r-- 1 nfsnobody nfsnobody 1 5 17 10:55 st01.txt
-rw-r--r-- 1 nfsnobody nfsnobody 1 5 17 10:57 st03.txt
[root@li10 ~]# ll /home/a6
-rw-r--r-- 1 nfsnobody nfsnobody 1 5 17 10:50 root.txt
-rw-r--r-- 1 st01 st 1 5 17 10:55 st01.txt
-rw-r--r-- 1 503 st 1 5 17 10:57 st03.txt
[root@li10 ~]# ll /home/a7
-rw-r--r-- 1 root root 1 5 17 10:51 root.txt
-rw-r--r-- 1 st01 st 1 5 17 10:55 st01.txt
-rw-r--r-- 1 503 st 1 5 17 10:57 st03.txt

사용자 계정관리를 잘해야함.


댓글 없음:

댓글 쓰기