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자체로 표현된다.
◎ 개요
- 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자체로 표현된다.
댓글
댓글 쓰기