실습 내용

1. NFS 서버 : 192.168.10.131
   NFS 클라이언트 : 192.168.10.133

2. 서버와 클라이언트에 각각 아래와 같은 사용자와 그룹 생성한다.
 - 서버
group : nfstest(1400)
user : nfstest1, nfstest2
nfstest1 gid# : 1400, uid# : 1401
nfstest2 gid# : 1400, uid# : 1402

 - 클라이언트
group : nfstest(1400)
user : nfstest1, nfstest2
nfstest1 gid# : 1400, uid# : 1401
nfstest2 gid# : 1400, uid# : 1403

3. 파일 생성 및 테스트
TEST1 : /nfstest/a1 192.168.10.133(rw, no_root_squash)
TEST2 : /nfstest/a2 192.168.10.133(rw, all_squash)
TEST3 : /nfstest/a3 192.168.10.133(rw, no_all_squash)
TEST4 : /nfstest/a4 192.168.10.133(rw, all_squash,root_squash)
TEST5 : /nfstest/a5 192.168.10.133(rw, all_squash,no_root_squash)
TEST6 : /nfstest/a6 192.168.10.133(rw, no_all_squash,root_squash)
TEST7 : /nfstest/a7 192.168.10.133(rw, no_all_squash,no_root_squash)
TEST8 : /nfstest/a8 192.168.10.133(rw, anonuid=1401,anongid=1400)


1. /etc/exports 설정파일 수정 및 사용자 생성

1) 서버에서 /etc/exports 설정파일 수정 및 권한 부여

vi /etc/exports 환경설정파일에 디렉토리 권한 부여

/home/a1 192.168.10.133(rw,no_root_squash)
/home/a2 192.168.10.133(rw,all_squash)
/home/a3 192.168.10.133(rw,no_all_squash)
/home/a4 192.168.10.133(rw,all_squash,root_squash)
/home/a5 192.168.10.133(rw,all_squash,no_root_squash)
/home/a6 192.168.10.133(rw,no_all_squash,root_squash)
/home/a7 192.168.10.133(rw,no_all_squash,no_root_squash)
/home/a8 192.168.10.133(rw,anonuid=1401,anongid=1400)

 

2) 사용자 생성

서버에서 사용자 생성

 

클라이언트에서 사용자 생성

 

2. 서버, 클라이언트에 디렉토리 생성 및 마운트

1) 서버 디렉토리 생성

ls -al /home

 

서버에서 쓰기 권한을 주기 위해 모든 디렉토리 권한을  777로 변경한다.

 

2) 클라이언트 디렉토리 생성

ls -al /home

 

쓰기 권한을 주기 위해 모든 디렉토리 권한을  777로 변경

 

nfs.service 재시작

 

3) 마운트하기

df로 마운트 확인

 

3. 클라이언트 각 계정으로 파일 생성 후 서버에서 확인

1) 클라이언트 각 계정에서 파일 생성

root - /home/a*/root.txt
nfstest1 - /home/a*/test1.txt
nfstest2 - /home/a*/test2.txt

root

nfstest1

nfstest2

 

2) 서버 확인

TEST1 : /home/a1 192.168.10.133(rw, no_root_squash)

클라이언트의 root 서버의 root와 일치시켜 서버측에서 소유자가 root라 나온다.

일반 유저는 디폴트값 no_all_squash 이므로 서버 사용자와 클라이언트 사용자를 일치시킨다.

nfstest1의 uid는 서버와 클라이언트에 둘다 생성되어있는 1401 uid이므로 nfstest1으로 나오지만

클라이언트의 nfstest2의 uid는 1403으로 서버에 없는 uid이므로 숫자로 나오게 된다.


TEST2 : /home/a2 192.168.10.133(rw, all_squash)

all_squash는 모든 일반 유저인 nfstest1과 nfstest2 모두 nobody를 뜻하는 nfsnobody로 소유권이 변경되었다.

디폴트값 root_squash로 인해 클라이언트 root가 생성한 root.txt 또한 nobody로 매핑되었다.


TEST3 : /home/a3 192.168.10.133(rw, no_all_squash)

no_all_squash라 하여 서버와 클라이언트의 사용자를 일치시켜 nfstest1과 nfstest2(1403)가 나오게 되었다.

nfstest2는 uid/gid가 다르므로 클라이언트에서 생성한 소유권으로 나오게 된다.

디폴트값 root_squash로 인해 클라이언트 root가 생성한 root.txt 또한 nobody로 매핑되었다.


TEST4 : /home/a4 192.168.10.133(rw, all_squash,root_squash)

일반 유저를 all_squash로 하여 nfstest1과 nfstest2가 생성한 파일을 nobody로 매핑 시킨다.

디폴트값 root_squash로 인해 root 또한 nobody로 매핑 시킨다.


TEST5 : /home/a5 192.168.10.133(rw, all_squash,no_root_squash)

no_root_squash로 클라이언트의 root와 서버의 root를 일치시켜 소유권이 root로 나오게 된다.

하지만 root.txt 파일을 all_squash로 인해 모든 사용자가 nobody로 매핑된다.

root.txt , test1.txt , test2.txt 모두 nobody로 매핑된다.


TEST6 : /home/a6 192.168.10.133(rw, no_all_squash,root_squash)

no_all_squash라 하여 서버와 클라이언트의 사용자를 일치시켜 nfstest1과 nfstest2가 나온다.

nfstest2는 uid/gid가 다르므로 클라이언트에서 생성한 소유권으로 나오게 된다.

root_squash로 인해 클라이언트의 root를 nobody로 매핑한다.


TEST7 : /home/a7 192.168.10.133(rw, no_all_squash,no_root_squash)

 

no_all_squash라 하여 서버와 클라이언트의 사용자를 일치시켜 nfstest1과 nfstest2가 나오게 되었다.

nfstest2는 uid/gid가 다르므로 클라이언트에서 생성한 소유권으로 나오게 된다.

클라이언트의 root와 서버의 root를 일치시켜 소유권이 root로 나오게 된다.

 

TEST8 : /home/a8 192.168.10.133(rw, anonuid=1401,anongid=1400)

디폴트 값 no_all_squash를 통해 서버와 클라이언트의 사용자를 일치시켜 nfstest1과 nfstest2가 나오게 되었다.

nfstest2는 uid/gid가 다르므로 클라이언트에서 생성한 소유권으로 나오게 된다.

다른 디폴트 값 root_squash로 인해 클라이언트의 root를 nobody로 매핑해야 하지만

anonuid=1401, anongid=1400 은 서버 측과 클라이언트 측 모두 nfstest1의 uid와 gid가 동일한 것이므로

nobody가 아닌 nfstest1의 소유권으로 나오게 된다.

 

결과

  all_squash no_all_squash
root_squash root 포함 모든 사용자 nobody 매핑 root만 nobody 매핑
서버, 클라이언트 사용자 일치
no_root_squash root 포함 모든 사용자 nobody 매핑 root 와 사용자 모두 일치

 

NFS 서비스 구성

NFS 서버 : 192.168.10.131

NFS 클라이언트 : 192.168.10.133

 

다른 사람과 테스트

클라이언트 192.168.10.123 에서 192.168.10.131로 접근 허용

클라이언트에서 192.168.10.133 에서 192.168.10.141로 접근

 

직접 테스트는 클라이언트에서 서버로 마운트한다.

 

1. NFS 서버에서 nfs가 설치 확인

보통 설치되어 있다.

 

2. 서버에서 마운트할 디렉토리 /home/pub를 생성

 

확인하기위해 /home/pub에 a.txt를 생성한다.

 

3. /home/pub 디렉토리에 other 에 권한 rw를 준다.

 

4. vi /etc/exports에 /home/pub를 read only로 설정한다.

 

nfs.service를 재시작한다.

 

 

5. 클라이언트 192.168.10.133 컴퓨터에서 192.168.10.131 컴퓨터로 마운트해본다.

 

NFS

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

 

 

 

 

 

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


관련 파일

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

 

NFS 서버 실행

# systemctl start nfs.service
• 관련 패키지인 nfs-server.service는 자동으로 실행된다.

 

NFS 서버 - exports

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

 

NFS 서버 – exports 옵션

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

  일반 유저 root
Default no_all_squash root_squash
설정 all_squash no_root_squash

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

 

NFS 클라이언트 - mount

• 명령
mount –t nfs NFS서버IP:/공유디렉토리 /마운트할디렉토리
ex) mount 192.168.10.31:/home/pub /home/pub
 - 일반 mount와 동일하다.
 - 재귀적인 mount는 불허된다.

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

 

NFS – ex 예

# cat /etc/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)

 

 

NFS 실습

 

+ Recent posts