서버 구성 요소NFS는 서버와 클라이언트 간의 구별을 명확히 해야 한다. 서버와 클라이언트 간의 요구 사항이 전혀 다르기 때문이다. 서버는 rpc.mounted, rpc.nfsd 라는 두 가지 서버로 구성되어 있다. 설정 파일은 /etc/exports 이다. 클라이언트들이 mount하여 사용할 수 있도록 몇몇 디렉토리 이하를 허용하는 작업을 export한다고 표현한다. 현재 NFS 설정의 유일한 파일이다.
확인 사항NFS는 RPC(Remote Procedure Call)라는 것을 사용하기 때문에 port mapper라는 특별한 서버가 먼저 떠 있는 상태여야 한다.
#rpcinfo -P
프로그램 버전 원형 포트
100000 2 tcp 111 rpcbind
...........
rpcinfo 명령을 사용하여 rpcbind가 등록되어 있는지, 그리고 mountd와 nfs가 등록되어 있는지 확인한다.
레드햇 계열에서 port mapper를 실행하고 중지하는 스크립트는 /etc/rc.d/init.d/portmap이며 NFS 스크립트는 같은 디렉토리의 nfs이다.
특정 호스트의 포트 맵핑 상황을 알고 싶을 때는 rpcinfo -p 다음에 host name 또는 IP 주소를 적어 주면 된다.
설정설정 파일은 전술한 바와 같이 /etc/exports 이다. exports 파일의 형식은 오리지널 SunOS의 형식과 비슷하지만, 몇 가지 옵션에서 차이가 난다.
<export할 디렉토리> <허가할 클라이언트>(옵션...)
기본 형식은 우선 가장 좌측에 허용할 디렉토리 이름이 오고, 그 다음 마운트할 수 있는 권한을 갖는 클라이언트 이름이 따른다.
괄호 안에는 몇 가지 옵션을 적는다.
# 문자로 시작하는 것은 주석이며 설정행이 여러 줄일 때는 중간행의 끝에 역슬래쉬 무자를 적는데 이는 매우 일반적인 유닉스 설정 파일의 통례이므로 그리 어렵진 않다.
클라이언트 이름은 하나의 호스트 IP 주소 또는 도메인 이름 형식으로 적을 수 있다. 또는 *.cs.foo.edu 와 같은 와일드 카드 문자인 *, ?등을 사용할 수 있다. 이렇게 적어주면 cs.foo.edu 도메인의 모든 호스트를 가리키게 되므로 a.cs.foo.edu, b.cs.foo.edu 등의 도메인 이름을 가진 호스트들은 앞에 주어진 디렉토리를 마운트하여 사용할 수 있다. 그러나 a.b.cs.foo.edu 와 같은 이름의 호스트는 해당되지 않는다. 즉, 와일드 카드 문자는 도트(.)를 포함하지 않는다.
'address/netmask' 표기법을 사용할 수도 있다. 192.168.1.0/24 는 192.168.1이라는 C클래스에 해당하는 모든 호스트를 나타낸다.
ro : 읽기 전용으로만 마운트하도록 강제한다. 기본적으로 읽기/쓰기를 허용하며 rw를 명시적으로 적어주어도 된다.
noaccess : NFS 마운트를 허용하지 않을 때 적는다. 보통 디렉토리 이하의 마운트를 허용하면서도 특정 디렉토리 이하는 제외시키고자 할 때 사용된다.
root_squash, no_root_squash : NFS 서버에도 root 사용자가 있을 것이고, NFS 클라이언트에도 root가 있을 것이다. 그러나 두 root가 같은 root가 될 순 없다. NFS 클라이언트의 root가 NFS 서버의 root 권한을 가질 수 없다. 따라서 기본값은 root_squash로 클라이언트 root는 nobody와 같은 사용자로 맵핑되어 버린다. 서버와 클라언트의 root 사용자를 일치하도록 하려면 no_root_squash라고 적으면 된다.
all_squash, no_all_squash : 기본값은 no_all_squash로서 root를 제외한 일반 사용자 ID에 대해서는 서버와 클라이언트 UID가 동일한 사용자이며 동일한 권한을 갖는다고 생각한다. 이는 root에 대한 기본 처리값과 반대이다. 그러나 all_squash를 해버리면 모든 UID, GID를 무조건 익명 사용자 ID로 매핑해 버린다.
설정 예
/ mater(rw) trusty(rw,no_root_squash)
/projects proj*.local.domain(rw)
/usr *.local.domain(ro) @trusted(rw)
/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)
/pub (ro,insecure,all_squash)
/pub/private (noaccess)
변경된 설정 내용을 반영시키려면 NFS 데몬들을 다시 띄워야 한다. 또는 HUP 시그널을 보내면 된다.
#/etc/rc.d/init.d/nfs stop
#/etc/rc.d/init.d/nfs start
'IT > 리눅스마스터1급' 카테고리의 다른 글
pam (0) | 2018.01.17 |
---|---|
시스템 튜닝 (0) | 2018.01.16 |
네트워크 관련 명령어 (0) | 2018.01.16 |
tcpdump 명령어 (0) | 2018.01.16 |
FTP명령어 (0) | 2018.01.16 |