Contents

리눅스 NFS 서버

   Mar 23, 2023     6 min read

기본 구성

사진첨부

방법

  • 퍼미션 설정

L11)

# cd /var/named
# chown root.named x.com.zone*
# chmod 777 x.com.zone*
# service named restart



결과

> ping 192.168.20.1
> ping 192.168.20.2
> ping 192.168.20.3
> ping 192.168.30.1

http:// www.x.com



사진첨부

사진첨부

NFS (Network File System)

  • NFS는 1985년 썬 마이크로시스템즈가 처음 개발했다. 원래는 디스크가 없는 클라이언트를 위한 대체 파일 시스템으로 개발했으나 우수한 프로토콜 덕분에 범용 파일 공유 시스템으로 발전했다.
  • NFS는 상태 정보를 저장하지 않으므로 어느 클라이언트가 마운트 했었는지 기억할 수없다. 이를 위해 NFS서버는 마운트 요청이 성공적으로 받아들여졌을 때 쿠키를 부여하는 방법을 사용한다. 쿠키는 NFS 서버에 마운트된 디렉토리를 인식해 클라이언트가 사 용하게 만든다.
  • 마운트를 해제하고 다시 마운트를 하면 쿠키가 갱신된다. 부팅을 다시 하더라도쿠키가 갱신되지 않는 이유는 서버에 문제가 생기더라도 예전 상태로 돌아갈 수 있어야하기 때문이다.
  • 현재 NFS는 리눅스와 유닉스 시스템 간의 파일 공유를 위해서만 사용하며, 윈도우 사용자는 CIFS/삼바를 사용해야 한다.
  • portmap은 NIS나 NFS 같은 RPC 기반 서비스에서 사용하는 동적 포트 할당 데몬이다.

사진첨부

NFS 서버 명령어

# rpm -qa nfs-utils
# rpm -qa portmap

# yum -y install *nfs*

# vi /etc/exports

/share 192.168.239.182(rw,sync) 

# mkdir /share
# chmod 707 /share/

# /etc/init.d/portmap start
# /etc/init.d/nfs start

# rpcinfo -p localhost

# exportfs -a
# exportfs -r
# exportfs -v



명령어내용
-a/etc/exports 파일을 읽어 들인다.
-r/etc/exports 파일을 다시 읽어 들인다.
-v현재의 공유 목록을 출력한다.



NFS 클라이언트 명령어

# rpcinfo -p 서버IP | grep portmap ;portmap서비스 정상동작 확인
# rpcinfo -p 서버IP | grep nfs ;nfs서비스 정상동작 확인

# showmount -e 192.168.239.181

# mkdir /dir1
# mount -t nfs 192.168.239.181:/share /dir1

# cd /dir1
# ls

# touch 11
# ls -al

↓ 참고 ↓
# vi /etc/fstab
[서버IP]:[공유 폴더] [마운트 폴더] nfs defaults 1 2
192.168.189.181:/share /dir1 nfs defaults 1 2

# init 6 // 재부팅



Ex. NFS 서버, 클라이언트

사진첨부

NFS 서버 방법

# rpm -qa nfs-utils
# rpm -qa portmap

# yum -y install *nfs*

# vi /etc/exports
/sales 192.168.10.20(rw,sync)

# mkdir /sales
# touch /sales/1.txt
# touch /sales/1.txt
# chmod 707 /sales/

# /etc/init.d/portmap start
# /etc/init.d/nfs start
# service portmap restsart
# service nfs restart


# exportfs -a
# exportfs -r
# exportfs -v



NFS 클라이언트 방법

# rpcinfo -p 192.168.10.1 | grep portmap
# rpcinfo -p 192.168.10.1 | grep nfs

# showmount -e 192.168.10.1

# mkdir /dir1
# mount -t nfs 192.168.10.1:/sales /dir1
# df -h

# cd /dir1
# ls -l

# touch 3.txt
# ls -l



사진첨부

[공유할 디렉토리] [접근할 호스트 IP 또는 이름 (접근권한)]

  • ex1. /share 라는 폴더를 192.168.6.200 컴퓨터에서 읽기만 허용하기
/share 192.168.6.200(ro)



  • ex2. /share2 라는 폴더를 192.168.6.x 모든 컴퓨터에서 읽기/쓰기 허용하기
/share2 192.168.6.0/255.255.255.0(rw)
/share4 192.168.10.*(rw)



  • ex 3. /share3 라는 폴더를 john.com 도메인 아래의 모든 호스트에게 읽기만 허용하기
/share3 *.john.com(ro)



명령어내용
rw읽기, 쓰기 가능
ro읽기만 가능
secure클라이언트 마운트 요청시 포트를 1024 이하로 한다.
noaccess액세스 거부
root_squash익명계정으로 연결 허용
no_root_squashroot 계정으로 연결 허용
sync파일시스템이 변경되면 즉시 동기화 한다.
all_squash익명계정으로 연결 허용
no_all_squash서버에 동일한 계정이 있으면 동일한 계정으로 연결 허용 (root=nonfsroot :nonfsroot / user1=user1:user1)



NFS 서버 접속하는 컴퓨터 제한하는 파일

  • /etc/hosts.deny
  • /etc/hosts.allow

  • ex. 모든 컴퓨터의 NFS 접속을 거부하되 192.168.6.0 컴퓨터만 접속 허용하기
# vi /etc/hosts.deny
portmap: ALL

# vi /etc/hosts.allow
portmap: 192.168.6.0/255.255.255.0



리눅스 서버 간 공유접근

  • NFS 퍼미션은 네트워크로 접근할 경우만 적용되며, 리눅스 표준 퍼미션은 무조건 적용된다.
  • 네트워크로 접근하는 경우 NFS 퍼미션과 표준 퍼미션 중 가장 제한적인 퍼미션이 적용됨.

Ex.

사진첨부

  • 방법

L9)

# vi /etc/exports
/share1 192.168.10.20(rw,root_squash)

# mkdir /share1

# chmod 707 /share1

# cd /share1
# touch 1

# service portmap restart
# service nfs restart



L10)

# vi /etc/exports
/share1 192.168.10.20(rw,no_root_squash)

# mkdir /share2

# chmod 707 /share2

# cd /share2
# touch 2

# service portmap restart
# service nfs restart



L11)

# vi /etc/exports
/share1 192.168.10.20(ro)

# mkdir /share3

# chmod 707 /share3

# cd /share3
# touch 3

# service portmap restart
# service nfs restart



L7)

# mkdir /dir1
# mkdir /dir2
# mkdir /dir3

# mount -t nfs 192.168.20.1:/share1 /dir1
# mount -t nfs 192.168.20.2:/share2 /dir2
# mount -t nfs 192.168.20.3:/share3 /dir3

# cd /dir1
# touch 11

# cd /dir2
# touch 22

# cd /dir3
# touch 33



L9, 10, 11)

# service nfs restart



  • 재부팅해도 똑같이 마운트 되게

L8)

# vi /etc/fstab
[서버IP]:[공유 폴더] [마운트 폴더] nfs defaults 1 2
192.168.20.1:/share1 /dir1 nfs defaults 1 2
192.168.20.2:/share2 /dir2 nfs defaults 1 2
192.168.20.3:/share3 /dir3 nfs defaults 1 2

# init 6 // 재부팅



사진첨부

사진첨부

Ex. 윈도우와 리눅스 서버 간 NFS 공유

사진첨부

  • W200813)
    파일서비스 -> 네트워크 파일 시스템용 서비스 설치하기
    -> mount \1.1.1.2\share1 G:
    -> 탐색기에서 확인

-> umount G:

  • L9)
# vi /etc/exports
/share1 192.168.30.1(rw,root_squash) 

# mkdir /share1

# chmod 707 /share1

# cd /share1
# touch 1

# service portmap restart
# service nfs restart



사진첨부

  • W200812)
    파일서비스 -> 네트워크 파일 시스템용 서비스 설치하기
    C:\mount1 -> NFS 공유하기: 권한 -> 루트 액세스 허용

사진첨부

  • L10)
# mkdir /dir1

# mount -t nfs 192.168.10.100:/sales /mount1

# cd /mount1
# touch 1.txt



Ex.

사진첨부