리눅스

09. 리눅스 - NFS 실습 2 (exports의 설정)

코골면서 딩가딩가 2024. 3. 4. 12:58

실습 내용

1. NFS 서버 : 192.168.10.141
    NFS 클라이언트(일반유저) : 192.168.10.142

 

2. 서버와 클라이언트에 각각 아래와 같은 사용자와 그룹 생성한다.
 - 서버(Server)
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.142(rw, no_root_squash)
TEST2 : /nfstest/a2 192.168.10.142(rw, all_squash)
TEST3 : /nfstest/a3 192.168.10.142(rw, no_all_squash)
TEST4 : /nfstest/a4 192.168.10.142(rw, all_squash,root_squash)
TEST5 : /nfstest/a5 192.168.10.142(rw, all_squash,no_root_squash)
TEST6 : /nfstest/a6 192.168.10.142(rw, no_all_squash,root_squash)
TEST7 : /nfstest/a7 192.168.10.142(rw, no_all_squash,no_root_squash)
TEST8 : /nfstest/a8 192.168.10.142(rw, anonuid=1401,anongid=1400)

 

exports 옵션에 따른 차이점

 

 

[제어판]-[프로그램]-[프로그램 기능]에서 NFS용 클라이언트 설정

 

1. /etc/exports 에서사용자 생성

2) 사용자 생성

서버에서 사용자 생성

groupadd 1400

useradd

nfstest1 gid : 1400, uid : 1401
nfstest2 gid : 1400, uid : 1402

 

비밀번호 12 로 설정

 

클라이언트(일반유저)에서도 사용자 생성

groupadd 1400

useradd

nfstest1 gid : 1400, uid : 1401
nfstest2 gid : 1400, uid : 1403 (uid를 서버와 다르게해서 test를 해볼예정이다.)

비밀번호 12 로 설정

 

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

a1~a8 디렉토리 생성후 확인

 

서버에서 쓰기 권한을 위해 모든 디렉토리에 권한부여

 

2) 클라이언트(일반유저) 디렉토리 생성

 

ls -al /home

 

동일하게 권한부여

 

nfs 재시작

3) 마운트하기

 

3. 클라이언트(일반유저) 계정으로 txt파일 생성 후 서버에서 확인

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

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

 

1) 파일생성

 

[root]

 

[nfstest1]

 

[nfstest2]

 

 

2)TEST해보기

 

[a1]

ll /home/a1

 

no_root_squash : 클라이언트의 root와 서버의 root를 일치시킨다.

rw : 읽기 쓰기 허용

 

- 클라이언트(일반유저) root.txt는 서버에서 마운트하여 만들었기때문에 소유자와 소유그룹이 root로 일치하게 나온다.

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

nfstest2의 디폴드값 no_all_squash 이 적용되어 서버 사용자와 클라이언트 사용자를 일치시켜야하지만  uid는 1403으로 서버에 없는 uid이므로 적용이안된다.

 

 

[a2]

ll /home/a2

 

 

all_squash : 모든 사용자를 nobody로 매핑한다.

rw : 읽기 쓰기 허용

 

- 서버에서 all_squash로 설정하여 마운트 했기때문에 클라이언트(일반유저)의 모든 사용자가 nobody로 매핑되는것을 볼수있다.

 

[a3]

ll /home/a3

 

no_all_squash : 서버의 사용자와 클라이언트의 사용자를 일치시킨다.

rw : 읽기 쓰기 허용

 

- 서버의 사용자와 클라이언트의 사용자를 일치시키기때문에 nfstest1 과 1403으로 나왔다.

root는 nfstest2의 uid가 다르므로 디폴드값인 root_squash로 인해 nobody로나온다.

 

[a4]

ll /home/a4

 

all_squash : 모든 사용자를 nobody로 매핑한다.

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

rw : 읽기 쓰기 허용

 

- 클라이언트(일반 유저)를 all_squash로 하여 nfstest1과 nfstest2가 생성한 파일을 nobody로 매핑 시킨다.

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

 

 

[a5]

ll /home/a5

 

all_squash : 모든 사용자를 nobody로 매핑한다.

no_root_squash : 클라이언트의 root와 서버의 root를 일치시킨다.

rw : 읽기 쓰기 허용

 

-  모든 사용자가 nobody로 매핑되며 클라이언트의 root와 서버의 root를 일치시키기때문에 모두 nobody로나온다.

 

 

[a6]

ll /home/a6

 

no_all_squash : 서버의 사용자와 클라이언트의 사용자를 일치시킨다.

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

rw : 읽기 쓰기 허용

 

- 서버의 사용자와 클라이언트의 사용자를 일치시키기때문에 nfstest1 과 1403으로 나왔다.

root는 nfstest2의 uid가 다르므로 디폴드값인 root_squash로 인해 nobody로나온다.

 

 

[a7]

ll /home/a7

 

no_all_squash : 서버의 사용자와 클라이언트의 사용자를 일치시킨다.

no_root_squash : 클라이언트의 root와 서버의 root를 일치시킨다.

rw : 읽기 쓰기 허용

 

- 서버의 사용자와 클라이언트의 사용자를 일치시키기때문에 nfstest1 과 1403으로 나왔다.

no_root_squash 로 인해 클라이언트의 root와 서버의 root를 일치시킨다.

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

 

[a8]

ll /home/a8

 

 

anonuid=uid, anongid=gid  : nobody로 매핑 될 경우, 계정과 그룹을 지정한다.

rw : 읽기 쓰기 허용

 

- anonuid=1401, anongid=1400 으로 서버와 클라이언트 모두 nfstest1의 uid/gid는 동일해서 nobody가 아닌 nfstest1로나오지만, nfstest 2는 uid/gid가 달라서 클라이언트에서 생성한 소유권으로 나와 1403으로 나오게된다.