Linux Server - NFS 실습 (1 / 1) : NFS 서버 구축

● NFS 실습


◎ 개요
 - NFS 서버 : 네트워크를 통해 파티션을 공유하도록 제공
 - 서버의 리소스를 제공하는 서비스

◎ 설정

- 기존의 Apache 서버를 클라이언트로 사용
- 기존의 DNS 서버를 NFS 서버로 사용

◎ 유저 디렉토리 옵션

default - root_squash / no_all_squash
a1) no root squash
a2) all squash
a3) no all squash
a4) root squash / all squash
a5) no root squash / all squash
a6) root squash / no all squash
a7) no root squash / no all squash

◎ 실습 순서


1) 서버 - NFS의 설치 확인

[root@DNS-Server ~]# rpm -qa |grep nfs-utils
nfs-utils-lib-1.0.8-7.2.z2.SUL2
nfs-utils-1.0.9-47.SUL2
[root@DNS-Server ~]# rpm -qa |grep portmap
portmap-4.0-65.2.2.1


2) 서버 - 계정 생성

[root@DNS-Server ~]# groupadd -g 800 a
[root@DNS-Server ~]# useradd -g 800 -u 801 a1
..
[root@DNS-Server ~]# useradd -g 800 -u 807 a7
[root@DNS-Server ~]# cat /etc/passwd |grep a
a1:x:801:800::/home/a1:/bin/bash
a2:x:802:800::/home/a2:/bin/bash
a3:x:803:800::/home/a3:/bin/bash
a4:x:804:800::/home/a4:/bin/bash
a5:x:805:800::/home/a5:/bin/bash
a6:x:806:800::/home/a6:/bin/bash
a7:x:807:800::/home/a7:/bin/bash


3) 클라이언트 - 계정 생성

[root@Apache ~]# groupadd -g 800 a
[root@Apache ~]# useradd -g 800 -u 801 ca1
...
[root@Apache ~]# useradd -g 800 -u 807 ca7
[root@Apache ~]# cat /etc/passwd |grep a
ca3:x:803:800::/home/ca3:/bin/bash
ca1:x:801:800::/home/ca1:/bin/bash
ca2:x:802:800::/home/ca2:/bin/bash
ca4:x:804:800::/home/ca4:/bin/bash
ca5:x:805:800::/home/ca5:/bin/bash
ca6:x:806:800::/home/ca6:/bin/bash
ca7:x:807:800::/home/ca7:/bin/bash

- 클라이언트와 서버의 유저를 구분하기 위해 ca*로 생성

* 서버에는 존재하지 않는 UID 800을 가진 ca0 계정을 생성
[root@Apache ~]# useradd -g 800 -u 800 ca0


4) 서버 - export 파일 생성 및 옵션 부여

[root@DNS-Server ~]# cat /etc/exports
/home/a1 192.168.10.172(rw,no_root_squash)
/home/a2 192.168.10.172(rw,all_squash)
/home/a3 192.168.10.172(rw,no_all_squash)
/home/a4 192.168.10.172(rw,all_squash,root_squash)
/home/a5 192.168.10.172(rw,all_squash,no_root_squash)
/home/a6 192.168.10.172(rw,no_all_squash,root_squash)
/home/a7 192.168.10.172(rw,no_all_squash,no_root_squash)

5) 서버 - portmap 실행
# service portmap restart (start)


5-1) 서버 - NFS 서비스 재실행
# service nfs restart


6) 클라이언트 - NFS 서버 마운트

[root@Apache ~]# mount - t nfs 192.168.10.175:/home/a1 /home/a1
[root@Apache ~]# mount - t nfs 192.168.10.175:/home/a2 /home/a2
[root@Apache ~]# mount - t nfs 192.168.10.175:/home/a3 /home/a3
[root@Apache ~]# mount - t nfs 192.168.10.175:/home/a4 /home/a4
[root@Apache ~]# mount - t nfs 192.168.10.175:/home/a5 /home/a5
[root@Apache ~]# mount - t nfs 192.168.10.175:/home/a6 /home/a6
[root@Apache ~]# mount - t nfs 192.168.10.175:/home/a7 /home/a7
[root@Apache ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3            6.6G  1.8G  4.5G    29%  /
/dev/sda1           190M    13M  168M   7%          /boot
tmpfs                 184M        0  184M   0%          /dev/shm
192.168.10.175:/home/a1
                        6.6G         1.7G     4.7G   27%        /home/a1
192.168.10.175:/home/a2
                        6.6G         1.7G     4.7G   27%        /home/a2
192.168.10.175:/home/a3
                        6.6G         1.7G     4.7G   27%        /home/a3
192.168.10.175:/home/a4
                        6.6G         1.7G     4.7G   27%        /home/a4
192.168.10.175:/home/a5
                        6.6G         1.7G     4.7G   27%        /home/a5
192.168.10.175:/home/a6
                        6.6G         1.7G     4.7G   27%        /home/a6
192.168.10.175:/home/a7
                        6.6G         1.7G     4.7G   27%        /home/a7


7) 각 유저 홈 디렉토리 체크 

- 클라이언트의 user는 구분을 위해 ca1 ~ ca7 로 생성하고 UID만 일치시켰다.
- 디렉토리 체크 다음 순서로 진행한다
  1. root 계정으로 파일 생성
  2. 같은 UID 계정으로 파일 생성
  3. 다른 UID 계정으로 파일 생성

7-1) 클라이언트 - 파일 생성 과정
 ex. a1 디렉토리에 만드는 파일들

1. root 계정 접속 - 파일 생성
[root@Apache ~]# vi /home/a1/root-a1

2. 같은 UID user 계정 접속 - 파일 생성
[root@Apache ~]# su - ca1
[ca1@Apache ~]# vi /home/a1/ca1-a1

3. 서버에 있는 다른 UID user 계정 접속 - 파일 생성
[ca1@Apache ~]# su - ca2
[ca2@Apache ~]# vi /home/a1/ca2-a1

4. 서버엔 없는 다른 UID user 계정 접속 - 파일 생성
[ca2@Apache ~]# su - ca0
[ca0@Apache ~]# vi /home/a1/ca0-a1

5. a2 - a7 까지 같은 과정의 반복

ex. 파일 이름 의미 : ca2-a2 = a2 디렉토리에 ca2 계정으로 만든 파일

7-2) 서버 - 디렉토리 확인
[root@DNS-Server ~]# ll /home/a1
합계 16
-rw-r--r-- 1  800 a    12  4월  3 20:58 ca0-a1
-rw-r--r-- 1 a1   a    16  4월  3 19:18 ca1-a1
-rw-r--r-- 1 a2   a    16  4월  3 19:22 ca2-a1
-rwxrwxrwx 1 root root 19  4월  3 19:12 root-a1
[root@DNS-Server ~]# ll /home/a2
합계 16
-rw-r--r-- 1 65534 65534  8  4월  3 20:58 ca0-a2
-rw-r--r-- 1 65534 65534  8  4월  3 19:27 ca2-a2
-rw-r--r-- 1 65534 65534  5  4월  3 19:28 ca3-a2
-rwxrwxrwx 1 65534 65534 17  4월  3 19:15 root-a2
[root@DNS-Server ~]# ll /home/a3
합계 16
-rw-r--r-- 1   800 a     15  4월  3 20:58 ca0-a3
-rw-r--r-- 1 a3    a      9  4월  3 19:28 ca3-a3
-rw-r--r-- 1 a4    a     10  4월  3 19:29 ca4-a3
-rwxrwxrwx 1 65534 65534 17  4월  3 19:15 root-a3
[root@DNS-Server ~]# ll /home/a4
합계 16
-rw-r--r-- 1 65534 65534 16  4월  3 20:58 ca0-a4
-rw-r--r-- 1 65534 65534 14  4월  3 19:29 ca4-a4
-rw-r--r-- 1 65534 65534  8  4월  3 19:29 ca5-a4
-rwxrwxrwx 1 65534 65534 17  4월  3 19:16 root-a4
[root@DNS-Server ~]# ll /home/a5
합계 16
-rw-r--r-- 1 65534 65534 16  4월  3 20:58 ca0-a5
-rw-r--r-- 1 65534 65534 10  4월  3 19:30 ca5-a5
-rw-r--r-- 1 65534 65534 12  4월  3 19:30 ca6-a5
-rwxrwxrwx 1 65534 65534 17  4월  3 19:16 root-a5
[root@DNS-Server ~]# ll /home/a6
합계 16
-rw-r--r-- 1   800 a     18  4월  3 20:58 ca0-a6
-rw-r--r-- 1 a6    a     15  4월  3 19:30 ca6-a6
-rw-r--r-- 1 a7    a     13  4월  3 19:30 ca7-a6
-rwxrwxrwx 1 65534 65534 17  4월  3 19:16 root-a6
[root@DNS-Server ~]# ll /home/a7
합계 16
-rw-r--r-- 1  800 a    14  4월  3 20:58 ca0-a7
-rw-r--r-- 1 a1   a    19  4월  3 19:31 ca1-a7
-rw-r--r-- 1 a7   a    15  4월  3 19:31 ca7-a7
-rwxrwxrwx 1 root root 17  4월  3 19:16 root-a7

- 각 디렉토리는 위처럼 파일이 생성 됨을 확인할 수 있다.
- 유저와 그룹이 65534로 표현되는 것은 Anonymous/Guest 계정을 의미한다고 한다.


8) 정리

8-1) a1 디렉토리 (no_root_squash)
 - root를 정상 인식한다. (no_root_squash)
 - ca1과 ca2를 같은 UID인 a1과 a2로 정상 인식한다. (default : no_all_squash)
 - ca0는 서버엔 존재하지 않는 UID기 때문에 UID자체로 표현된다.

8-2) a2 디렉토리 (all squash)
 - root를 Guest로 인식한다. (default : root_squash)
 - ca2와 ca3를 Guest로 인식한다. (all_squash)

8-3) a3 디렉토리 (no all squash)
 - root를 Guest로 인식한다. (default : root_squash)
 - ca3와 ca4를 같은 UID인 a3와 a4로 정상 인식한다. (no_all_squash)
 - ca0는 서버엔 존재하지 않는 UID기 때문에 UID자체로 표현된다.

8-4) a4 디렉토리 (root squash / all squash)
 - root를 Guest로 인식한다. (root_squash)
 - ca4와 ca5를 Guest로 인식한다. (all_squash)

8-5) a5 디렉토리 (no root squash / all squash)
 - root를 Guest로 인식한다? (no_root_squash)
  → no_root_squash는 root를 인식해야한다고 생각했는데 Guest로 인식을 하고 있다.
 - ca4와 ca5를 Guest로 인식한다. (all_squash)

8-6) a6 디렉토리 (root squash / no all squash)
 - root를 Guest로 인식한다. (root_squash)
 - ca6와 ca7를 같은 UID인 a6와 a7로 정상 인식한다. (no_all_squash)
 - ca0는 서버엔 존재하지 않는 UID기 때문에 UID자체로 표현된다.

8-7) a7 디렉토리 (no root squash / no all squash)
 - root를 정상 인식한다. (no_root_squash)
 - ca7와 ca1를 같은 UID인 a7와 a1로 정상 인식한다. (no_all_squash)
 - ca0는 서버엔 존재하지 않는 UID기 때문에 UID자체로 표현된다.

댓글

이 블로그의 인기 게시물

Linux Server - FTP 실습 (2 / 2) : 사용자 제한 ( ftpuser / user_list )

전자서명 개념

3.27 (화) - Network (패킷 통신 - 4가지 지연)