09. 리눅스 - NFS 실습 2 (exports의 설정)
실습 내용
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으로 나오게된다.