리눅스 NFS
NFS란 네트워크를 통해 파티션을 공유하도록 제공하는 서비스입니다.
유닉스 계열의 거의 모든 시스템에서 공유 가능합니다. (윈도우와 리눅스 간은 불가능)
설정 파일은 /etc/exports 하나밖에 없습니다.
NFS는 사용하기가 굉장히 까다롭습니다.
서버-클라이언트간 계정 매핑은 UID를 기준으로 하기 때문에
만약 UID만 같은 다른 계정이 접근한다면 권한을 획득하게 됩니다.
(예를 들면 여러 유닉스 시스템이 있을 때)
그렇기 때문에 유저를 생성할 때 반드시 계획을 세우고 만들어야 합니다.
명령어는 클라이언트 측에서 입력하면 됩니다. 형식은 다음과 같습니다.
mount –t nfs NFS서버IP:/공유디렉토리 /마운트할디렉토리
mount –t nfs 192.168.10.102:/home/a1 /home/a1
- exports 옵션
- ro : 읽기 전용
- rw : 읽기 쓰기 허용
- root_squash : 클라이언트의 root를 nobody로 매핑
- no_root_squash : 클라이언트의 root와 서버의 root를 일치시킨다.
- all_squash : 모든 사용자를 nobody로 매핑
- no_all_squash : 서버의 사용자와 클라이언트의 사용자를 일치시킨다.
이번 실습에선 여러가지 경우의 수를 두고 접근 권한을 테스트하겠습니다.
server ip : 192.168.10.102
client ip : 192.168.10.103
/etc/exports 설정
/home/a1 192.168.10.103(rw,no_root_squash)
/home/a2 192.168.10.103(rw,all_squash)
/home/a3 192.168.10.103(rw,no_all_squash)
/home/a4 192.168.10.103(rw,all_squash,root_squash)
/home/a5 192.168.10.103(rw,all_squash,no_root_squash)
/home/a6 192.168.10.103(rw,no_all_squash,root_squash)
/home/a7 192.168.10.103(rw,no_all_squash,no_root_squash)
테스트
*계정이 서버에만 있을 때
/home/a1 192.168.10.103(rw,no_root_squash)
root 접근 가능
/home/a2 192.168.10.103(rw,all_squash)
root 접근 불가능
/home/a3 192.168.10.103(rw,no_all_squash)
root 접근 불가능
/home/a4 192.168.10.103(rw,all_squash,root_squash)
root 접근 불가능
/home/a5 192.168.10.103(rw,all_squash,no_root_squash)
root 접근 불가능
/home/a6 192.168.10.103(rw,no_all_squash,root_squash)
root 접근 불가능
/home/a7 192.168.10.103(rw,no_all_squash,no_root_squash)
root 접근 가능
*아이디 uid 같은 계정이 서버랑 클라이언트 양쪽에 다 있을 때
/home/a1 192.168.10.103(rw,no_root_squash)
root 접근 가능, a1접근 가능
/home/a2 192.168.10.103(rw,all_squash)
root 접근 불가능, a2접근 불가능
/home/a3 192.168.10.103(rw,no_all_squash)
root 접근 불가능, a3접근 가능
/home/a4 192.168.10.103(rw,all_squash,root_squash)
root 접근 불가능, a4접근 불가능
/home/a5 192.168.10.103(rw,all_squash,no_root_squash)
root 접근 불가능, a5접근 불가능
/home/a6 192.168.10.103(rw,no_all_squash,root_squash)
root 접근 불가능, a6접근 가능
/home/a7 192.168.10.103(rw,no_all_squash,no_root_squash)
root 접근 가능, a7접근 가능
*id는 같지만 uid가 틀릴 때
/home/a1 192.168.10.103(rw,no_root_squash)
root 접근 가능, a1접근 가능
/home/a2 192.168.10.103(rw,all_squash)
root 접근 불가능, a2접근 불가능
/home/a3 192.168.10.103(rw,no_all_squash)
root 접근 불가능, a3접근 불가능
/home/a4 192.168.10.103(rw,all_squash,root_squash)
root 접근 불가능, a4접근 불가능
/home/a5 192.168.10.103(rw,all_squash,no_root_squash)
root 접근 불가능, a5접근 불가능
/home/a6 192.168.10.103(rw,no_all_squash,root_squash)
root 접근 불가능, a6접근 불가능
/home/a7 192.168.10.103(rw,no_all_squash,no_root_squash)
root 접근 가능, a7접근 불가능
*id는 다르지만 uid가 같을 때 (클라이언트 계정은 b#)
/home/a1 192.168.10.103(rw,no_root_squash)
root 접근 가능, a1접근 불가능
/home/a2 192.168.10.103(rw,all_squash)
root 접근 불가능, a2접근 불가능
/home/a3 192.168.10.103(rw,no_all_squash)
root 접근 불가능, a3접근 가능
/home/a4 192.168.10.103(rw,all_squash,root_squash)
root 접근 불가능, a4접근 불가능
/home/a5 192.168.10.103(rw,all_squash,no_root_squash)
root 접근 불가능, a5접근 불가능
/home/a6 192.168.10.103(rw,no_all_squash,root_squash)
root 접근 불가능, a6접근 가능
/home/a7 192.168.10.103(rw,no_all_squash,no_root_squash)
root 접근 가능, a7접근 가능
퍼미션을 확인할 때는 파일을 생성하고 소유자를 확인해 보면 됩니다.
계정관리를 해야 하는 이유를 이 테스트로 알 수 있습니다.
*아이디 uid 같은 계정이 서버랑 클라이언트 양쪽에 다 있을 때
*id는 다르지만 uid가 같을 때 (클라이언트 계정은 b#)
이 두 가지 경우의 결과가 똑같은 것을 확인할 수 있습니다.