Day21-NFS

2019. 12. 19. 14:06Security/리눅스

* NFS

- 파티션을 공유하도록 제공하는 서비스로 대부분의 유닉스에서 사용.

- NFS server는 클라이언트를 UID로 인식하기 때문에 UID가 일치하지 않으면 NFS는 작동하지 않음.

- samba는 서버가 리눅스 클라이언트는 윈도우고, NFS는 서버와 리눅스 모두 유닉스이다.

- 10.33에서 10.31에 되어있는 디렉토리를 마운트해서 사용한다. 

 

설치

#rpm -qa | grep nfs-utils
#rpm -qa | grep rpcbind
nfs는 리눅스를 설치할때 무조건 같이 설치되기때문에 위의 명령어로 설치 되어있는지 확인해본다.

 

#systemctl start nfs.service 또는 ntsysv에서 체크해준다.

 

export

형식 :  [export 할 디렉토리] [허가할 클라이언트][(옵션)]

서버쪽에서 공유를 허용할 디렉토리를 설정하는 파일.

허가할 클라이언트 지정은 주소/넷마스크의 표현 형식으로 사용가능
ex) 203.228.182.0/24 --> 203.228.182네트워크의 모든 주소

※ 서버-클라이언트간 계정 매핑은 UID를 기준으로 한다.

 

ro : 읽기 전용

rw : 읽기 쓰기 허용
root_squash : 클라이언트의 root를 nobody로 매핑(가지고 있는 권한이 없음) 
no_root_squash : 클라이언트의 root와 서버의 root를 일치시킨다.
all_squash : 모든 사용자를 nobody로 매핑
no_all_squash : 서버의 사용자와 클라이언트의 사용자를 일치시킨다.
All_squash와 no_all_squash 설정에서 root는 어떻게 매칭되는지 확인한다.

mount

mount –t nfs NFS서버IP:/공유 디렉토리 /마운트 할 디렉토리
ex) mount 192.168.10.31:/home/pub /home/pub

 

 

# cat exports
/                    master(rw) trusty(rw, no_root_squash)
/home/down    192.168.3.10(rw) 192.168.3.11(ro)
/home/joe        pc001(rw,all_squash, anonuid=150, anongid=100)  
/pub               (ro, all_squash)

 

/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=##) // ##에 각각 uid, gid 번호

 

서버와 클라이언트에 공통 계정과 공통 uid, 공통 gid를 만들어 놓고 실습해봐야 한다. 

 

[실습] server(192.168.10.204)와 client(192.168.10.202)에서 nfs 테스트 해보기

1. server와 client에 gid가 1100번인 nfs 그룹 생성

#groupadd -g 1100 nfs

 

2. server와 client에 uid가 1101인 계정 nfs1 생성 후에 확인

#useradd -g 1100 -u 1101 nfs1

#cat /etc/passwd | grep nfs

 

3. server와 client의 /home에 a1~a8까지 폴더 생성

4. server의 /etc/exports에

#/home/a1 192.168.10.202(rw,no_root_squash)
#/home/a2 192.168.10.202(rw,all_squash)
#/home/a3 192.168.10.202(rw,no_all_squash)
#/home/a4 192.168.10.202(rw,all_squash,root_squash)
#/home/a5 192.168.10.202(rw,all_squash,no_root_squash)
#/home/a6 192.168.10.202(rw,no_all_squash,root_squash)
#/home/a7 192.168.10.202(rw,no_all_squash,no_root_squash)
#/home/a8 192.168.10.202(rw,anonuid=1101,anongid=1100)

의 내용 추가

 

띄어쓰기를 해서는 안 된다

 

5. a1~a8에 접속할때 root 또는 other로 접속하기 때문에 퍼미션을 변경해준다

#chmod -R 757 a1~a8

 

6. nfs 재시작

systemctl restart nfs.service

 

7. client에서 mount –t nfs NFS서버IP:/공유 디렉토리 /마운트 할 디렉토리의 형태로 마운트 해준다.

#mount -t nfs 192.168.10.204:/home/a1 /home/a1

#mount -t nfs 192.168.10.204:/home/a2 /home/a2

#mount -t nfs 192.168.10.204:/home/a3 /home/a3

#mount -t nfs 192.168.10.204:/home/a4 /home/a4

#mount -t nfs 192.168.10.204:/home/a5 /home/a5

#mount -t nfs 192.168.10.204:/home/a6 /home/a6

#mount -t nfs 192.168.10.204:/home/a7 /home/a7

#mount -t nfs 192.168.10.204:/home/a8 /home/a8

 

8. 각각 폴더의 권한 확인

a1 : no_root_squash

root와 nfs1, bst15에서 모두 접속한 계정 소유로 파일 생성 

 

a2 : all_squash

root, nfs1, bst15 모두 nfsnobody 소유로 파일 생성

 

a3 : no_all_squash

root는 nfsnobody로 나머지는 각자 계정 소유로 파일이 생성된다.

 

a4 : all_squash, root_squash

모두 nfsnobdy 소유로 파일이 생성된다.

 

a5 : all_squash, no_root_squash 

모두 nfsnobdy 소유로 파일이 생성된다.

 

a6 : no_all_squash, root_squash

root는 nfsnobody로 나머지는 각자 계정 소유로 파일이 생성된다.

 

a7 : no_all_squash, no_root_squash 

root와 nfs1, bst15에서 모두 접속한 계정 소유로 파일 생성 

 

a8 : anonuid=1101, anongid=1100

모든 계정이 지정해준 uid와 gid로 계정을 생성해준다. 

 

 

'Security > 리눅스' 카테고리의 다른 글

netstat 간단한 정리  (0) 2020.03.16
Day22-SSH  (0) 2020.01.21
DAY20-samba(2)  (0) 2019.12.17
DAY19-samba  (0) 2019.12.16
Day18-DNS 복습  (0) 2019.12.13