Nis/NFS > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

Nis/NFS 정보

기타 Nis/NFS

본문

Nis/NFS

24.1  NIS(Network Information Service)
passwd나 group 등의 네트웍 정보 파일들을 하나의 서버에서 관리할 수 있도록 하여 서버에서 제공하는 새로운 정보를 여러 시스템에서 받을 수 있도록 하는 것이다.
즉, 중요한 관리 파일들의 중앙 제어와 자동 배포를 제공하는 관리 데이터베이스이다.
NIS는 여러 표준 UNIX 파일들을 데이터베이스로 변환해서 네트워크를 통해 질의될 수 있게 해준다. 이 데이터베이스를 NIS 맵이라 한다.
어떤 맵들은 /etc/passwd와 /etc/group같은 파일에서 만들어지고 또는 네트워크 관련 파일에서 만들어지기도 한다.
[root @edu00 linux]#ypcat -x
Use "ethers"    for map "ethers.byname"
Use "aliases"   for map "mail.aliases"
Use "services"  for map "services.byname"
Use "protocols" for map "protocols.bynumber"
Use "hosts"     for map "hosts.byname"
Use "networks"  for map "networks.byaddr"
Use "group"     for map "group.byname"
Use "passwd"    for map "passwd.byname"
이 중에서 인증과 관련있는 /etc/group과 /etc/passwd를 이용해서 사용자 인증 서버를 구축한다.

24.1.2 NIS 서버와 클라이언트에서의 공통 사항
[root @edu00 linux]#vi /etc/host.conf
--------------------------------------
# NIS는 보안상 외부 네트워크에서의 접속을 허용하지 않기 때문에 DNS를 사용하지
# 않는 것으로 되어있다.
# DNS를 사용한다면 다음 사항을 설정
order hosts, bind
multi on
----------------------------------------

 


[root @edu00 linux]#vi /etc/hosts
---------------------------------------------
# 편리와 보안을 위해 각각의 서버, 클라이언트의 호스트들을 등록한다.
127.0.0.1  localhost.localdomain localhost
211.170.43.65 one.edu00.net  NIS-server
211.170.43.80 two.edu00.net  NIS-client1
211.170.43.81 three.edu00.net  NIS-client2
211.170.43.82 four.edu00.net  NIS-client3
211.170.43.83 five.edu00.net  NIS-client4
211.170.43.84 six.edu00.net  NIS-client5
211.170.43.85 seven.edu00.net  NIS-client6
---------------------------------------------------
[root @edu00 linux]#rpm -qa | grep yp
yp-tools*  --> 클라이언트
ypbind* --> 클라이언트
ypserv*  --> 서버
----------------------------
패키지가 없다면 설치
[root @edu00 linux]#rpm -Uvh ypserv-version.i386.rpm
[root @edu00 linux]#rpm -Uvh ypbind-version.i386.rpm
[root @edu00 linux]#rpm -Uvh yp-tools-version.i386.rpm
--------------------------
[root @edu00 linux]#nisdomainname dabang  
: NIS를 사용하는 시스템들의 그룹을 나타내는 이름, hostname과 구별
[root @edu00 linux]#nisdomainname
dabang
[root @edu00 linux]#vi /etc/sysconfig/network  
: 부팅시 자동 인식
--------------------
NETWORKING=yes
FORWARD_IPV4=false
HOSTNAME=one.edu00.net

 


GATEWAY=211.170.43.65
NISDOMAINNAME=dabang
----------------------------
[root @edu00 linux]#vi /etc/rc.d/init.d/ypserv 
: 확인
-------------------------------
....
# getting the YP-Domainname
. /etc/sysconfig/network
...
------------------------------
 
24.1.3 NIS 서버
NIS는 'nisdomainname'을 사용해서 /var/yp/(NIS도메인명)이란 디렉토리를 만들고 그 안에 NIS 맵들을 저장한다.
여기서는 /var/yp/daband이란 디렉토리가 만들어질 것이다.
    
[root @edu00 linux]#vi /var/yp/Makefile
: shadow 패스워드를 인식하도록 설정
---------------------------------
# If you don't want some of these maps built, feel free to comment them out from
# this list.
all: passwd group hosts rpc services netid protocols netgrp mail
shadow publickey  # networks ethers bootparams printcap amd.home
# auto.master auto.home auto.local passwd.adjunct
# timezone locale netmasks
-------------------------------------
[root @edu00 linux]#useradd two three four five six seven gamcho
[root @edu00 linux]#passwd two three four five six seven gamcho
[root @edu00 linux]#ntsysv
: ypserv를 부팅시에 시작하도록 설정

 

 

[root @edu00 linux]#/etc/rc.d/init.d/portmap start
[root @edu00 linux]#/etc/rc.d/init.d/ypserv start
[root @edu00 linux]#/etc/rc.d/init.d/yppasswdd start
[root @edu00 linux]#make -C /var/yp
: error가 뜬다면 해당 파일을 만들어 준다.
-------------------------------
...
gmake[1]:***No rule to make target '/etc/netgroup', needed by 'netgroup'. Stop.
make:  *** [target] Error 2
.....
--------------------------
[root @edu00 linux]#touch /etc/netgroup
[root @edu00 linux]#make -C /var/yp  
--------------------------
...
gmake[1]:***No rule to make target '/etc/publickey', needed by
 'publickey.byname'. Stop.
make:  *** [target] Error 2
......
--------------------------
[root @edu00 linux]#touch /etc/publickey
[root @edu00 linux]#make -C /var/yp
: 변경된 정보 적용
[root @edu00 linux]#vi /etc/crontab
: 사용자가 패스워드 변경시 설정 적용
-----------------------------
# NIS 정보 갱신 --> 한시간 마다
00 * * * * root make -C /var/yp > /dev/null 2>&1
------------------------------
패스워드가 바뀔 때마다 관리자가 make -C /var/yp 할 필요 없다.

 

 


[ 보안 설정 1 ]
[root @edu00 linux]#vi /var/yp/securenets
-------------------------------------
# 클라이언트 제한 설정
# 클라이언트 위조 방지
# localhost에서의 접속을 허용한다.(필수)
host 127.0.0.1
# 255.255.255.255 127.0.0.1과 동일한 결과
#
# C 클래스 전체
255.255.255.0 211.170.43.0
-------------------------------------

[ 보안 설정 2 ]
[root @edu00 linux]#vi /etc/hosts.allow
--------------------------
ypserv: 211.170.43.0
--------------------------

[root @edu00 linux]#vi /etc/hosts.deny
--------------------------
ypserv: ALL
--------------------------

24.1.4. NIS 클라이언트
클라이언트들은 네트워크상의 NIS 서버를 찾기 위해 ypbind를 사용한다.
nisdomainname을 사용해서 ypbind는 그 도메인에 브로드캐스트하는 방법으로 서버에 질의하게 된다.
처음으로 응답하는 서버가 클라이언트에 대해 서비스를 하게 된다. 즉, 가장 빨리 응답하는 서버가 가장 낮은 부하량을 가진다는 이론을 바탕으로 한다.
[root @edu00 linux]#vi /etc/yp.conf
-------------------------------

 


# 같은 네트워크상에 실수로 ypserv를 실행시킨 시스템이 있거나 NIS 서버로 위장된
# 시스템이 존재할 경우 클라이언트가
# 부적당하게 연결될 가능성이 있다.
# 해당 클라이언트가 서비스를 받을 서버를 설정할 수 있다.
# /etc/yp.conf - ypbind configuration file
# Valid entries are
#
# domain NISDOMAIN server HOSTNAME
#  Use server HOSTNAME for the domain NISDOMAIN.
#
# domain NISDOMAIN broadcast
#  Use  broadcast  on  the local net for domain NISDOMAIN
#
# ypserver HOSTNAME
#  Use server HOSTNAME for the  local  domain.  The
#  IP-address of server must be listed in /etc/hosts.
#
server NIS-server
ypserver NIS-server
domain dabang
# domain   nislinux     broadcast       *domain으로 이동했을 때 어떤 NIS 서버를
# 사용해야 할 지 모를 때
--------------------------------------------
[root @edu00 linux]#ntsysv
: 초기 부팅시에 ypbind가 시작되어야 한다.
[root @edu00 linux]#/etc/rc.d/init.d/ypbind start
Binding to the NIS domain...   [ OK ]
dabang for an NIS domain server: .one.edu00.net

점검 사항--
1) /etc/yp.conf에서 서버의 IP 주소
2) nisdomainname이 서버와 클라이언트에서 동일한가

 


3) ypbind가 작동중인가(ps -ax | grep ypbind)
4) NIS 서버에서 클라이언트로 ypserv가 허용되어 있는가

[root @edu00 linux]#ypwhich
: 클라이언트가 서버에 연결되어 있는지 확인
.one.edu00.net

[root @edu00 linux]#ypcat hosts
: /etc/hosts 파일의 내용을 서버로부터 서비스 받는다.
127.0.0.1  localhost.localdomain localhost
211.170.43.65 one.edu00.net  NIS-server
211.170.43.80 two.edu00.net  NIS-client1
211.170.43.81 three.edu00.net  NIS-client2
211.170.43.82 four.edu00.net  NIS-client3
211.170.43.65 one.edu00.net  NIS-server
211.170.43.83 five.edu00.net  NIS-client4
211.170.43.84 six.edu00.net  NIS-client5
211.170.43.85 seven.edu00.net  NIS-client6

[root @edu00 linux]#ping -c3 NIS-server6
[root @edu00 linux]#telnet 0
login:three
Password:
No directory /home/three !
Logging in with home =" / "
---> NFS 사용하여 디렉토리 마운트

24.1.5 테스트
[root @edu00 linux]#yp.cat hosts.byname
[root @edu00 linux]#ping
[root @edu00 linux]#rpcinfo -u server_hostname ypserv
[root @edu00 linux]#rpcinfo -p localhost

 


24.1.6 명령어 확인
[root @edu00 linux]#man ypcat 
[root @edu00 linux]#man makedbm
[root @edu00 linux]#man rpcinfo
[root @edu00 linux]#man yppoll
[root @edu00 linux]#man ypmatch
[root @edu00 linux]#man yppush
[root @edu00 linux]#man ypset
[root @edu00 linux]#man ypwhich
[root @edu00 linux]#man ypxfr
[root @edu00 linux]#man rpc.ypxfrd
[root @edu00 linux]#man ypinit

24.1.7  NIS 클라이언트 프로그램
ypbind NIS 도메인과 서버에 대한 정보를 찾고 저장, /var/yp/binding에 저장
ypwhich NIS 클라이언트에 의해 사용된 NIS 서버에 대한 이름
ypcat NIS 데이타베이스에 규정된 키값
yppoll
ypmatch
yppasswd

24.1.8 NIS 서버 프로그램
makedbm /etc/passwd같은 아스키 데이타베이스를 NIS 데이터베이스로 translate
yppush
ypserv  NIS 서버 데몬
yppasswdd

24.2 NFS 서버 설정

24.2.1 nis/nfs와 연계
nis를 연결한 시스템을 위해서 /home과 /var/spool/mail을 공유해서 사용자 계정과 메일을 공유할 수 있다.

 


/etc/exports 파일에 NFS 클라이언트들을 적어준다.
도메인네임 혹은 IP 주소로 설정할 수 있다.
[root @edu00 linux]#vi /etc/exports
-------------------------------------------
/home  wind.edu00.net(rw) gamcho.edu00.net(rw)
/var/spool/mail wind.edu00.net(rw) gamcho.edu00.net(rw)

or
/home  211.170.43.124(rw) 211.170.43.123(rw)
/var/spool/mail 211.170.43.124(rw) 211.170.43.123(rw)

or
/home  *.edu00.net(rw)
/var/spool/mail *.edu00.net(rw)

or
/home  211.170.43.0/255.255.255.0(rw)
/var/spool/mail 211.170.43.0/255.255.255.0(rw)
-----------------------------------------
[root @edu00 linux]#ntsysv
: 부팅시에 nfs 관련데몬이 시작하도록 설정
[root @edu00 linux]#/etc/rc.d/init.d/portmap restart
[root @edu00 linux]#/etc/rc.d/init.d/nfs start
[root @edu00 linux]#/usr/sbin/exportfs
: /etc/exports 파일 변경 후 설정 적용

[root @edu00 linux]#rpcinfo -p 

[ 보안 설정 ]
portmap을 rpc.nfsd와 결합하여 사용하면 특정한 권한이 없어도 NFS 서버의 파일에
접근할 수 있다.
[root @edu00 linux]#vi /etc/hosts.deny

 


--------------------
portmap: ALL
--------------------
[root @edu00 linux] #vi /etc/hosts.allow
-------------------
portmap: 211.170.43.0/255.255.255.0
------------------- 

24.2.1.1 NFS 클라이언트 설정
[root @edu00 linux]#showmount
NFS 서버의 export된 파일 시스템이나 디렉토리에 대한 정보를 볼 수 있다.
NFS 서버의 호스트명이나 IP를 인자로 써서 이 명령어를 실행시키면 어떤 호스트가 export된 파일시스템이나 디렉토리에 접근 권한이 있는지 볼 수 있다.

[root @edu00 linux]#showmount -e NIS-server
: NFS 서버의 export 목록을 본다.
Export list for NIS-server:
/home  *.edu00.net
/var/spool/mail 211.170.43.0/255.255.255.0

[root @edu00 linux]#showmount -a NIS-server
: 어떤 클라이언트가 어떤 파일시스템이나 디렉토리를 export할 수 있는지 확인

[root @edu00 linux]#mkdir /mnt/nfs
[root @edu00 linux]#mkdir /mnt/nfsmail
[root @edu00 linux]#mount -t nfs NIS-server:/home  /mnt/nfs
[root @edu00 linux]#mount -t nfs NIS-server:/var/spool/mail /mnt/nfsmail
: NFS 서버로부터 디렉토리나 파일시스템을 import하기 위해 mount명령어를 사용한다.

: 부팅시마다 마운트(NIS와 연동하여 사용자의 홈디렉토리와 메일 디렉토리를 마운트)
[root @edu00 linux]#vi /etc/fstab
----------------------------------------

 


/dev/hda1  / ext2 defaults 1 1
NIS-server:/home /mnt/nfs nfs defaults 1 2
NIS-server:/var/spool/mail /mnt/nfsmail nfs defaults 1 2
/dev/cdrom  /mnt/cdrom iso9660 noauto,owner,ro 0 0
.....
-------------------------------------------
[root @edu00 linux]#cd /mnt/nfs
[root @edu00 nfs]#ls
[root @edu00 nfs]#cd ..
[root @edu00 /mnt]#umount /mnt/nfs
[root @edu00 /mnt]#ls
         
24.2.2 기본 설정
 
24.2.2.1 기본 서버 설정
[root @edu00 home]#useradd nfstest
[root @edu00 home]#passwd nfstest
[root @edu00 home]#chmod 777 nfstest
[root @edu00 home]#cd /home/nfstest
[root @edu00 nfstest]#touch aa
[root @edu00 nfstest]#vi /etc/exports
-------------------------------------------------
/home/nfstest 211.170.43.0/255.255.255.0(rw) 192.168.1.0/24(ro)
/home/linux  211.170.43.*(ro) 192.168.1.0/255.255.255.0(rw)
/   211.170.43.119(rw,no_root_squash)
/home/data  li*.localhost.localdomain(rw)
/home/pub  *(ro,insecure,all_squash)     
---------------------------------------------------
[root @edu00 nfstest]#exportfs -r
: 파일 변경 후 적용
[root @edu00 nfstest]#exportfs –v
: 공유 디렉토리를 list

 


[root @edu00 nfstest]#exportfs –a
: 공유 디렉토리를 모두 list
[root @edu00 nfstest]#service portmap start
: or /etc/rc.d/init.d/portmap start도 가능
[root @edu00 nfstest]#service nfs start
[root @edu00 nfstest]#service nfslock start
[root @edu00 nfstest]#showmount -a
[root @edu00 nfstest]#showmount -e edu00.net

24.2.2.2 클라이언트 설정
[root @edu00 nfstest]#cd /mnt
[root @edu00 /mnt]#mkdir nfs
[root @edu00 /mnt]#mount -t nfs 211.170.43.짝ip:/home/nfstest  /mnt/nfs
[root @edu00 /mnt]#cd /mnt/nfs
[root @edu00 nfs]#ls
aa
[root @edu00 nfs]#cd
[root @edu00 /root]#umount /mnt/nfs
[root @edu00 root]#cd /mnt/nfs
[root @edu00 nfs]#ls

24.2.2.3 테스트
[root @edu00 linux]#showmount -e host(edu00.net)
 어느 클라이언트가 어느 디렉토리를 마운트해서 사용하고 있는지에 대한 정보
   
[root @edu00 linux]#showmount -a
: host:dir형식

[root @edu00 linux]#showmount -d
: 디렉토리 이름만

[root @edu00 linux]#showmount -e localhost

 


[root @edu00 linux]#rpcinfo -p

24.3 개요
 
24.3.1 UDP를 사용

24.3.2  /etc/hosts
서버와 클라이언트로 사용될 호스트 등록

24.3.3 지원하는 파일 시스템
[root @edu00 linux]#cat /proc/filesystems
          ext2
nodev    proc
          iso9660
nodev    devpts
nodev    usbdevfs
nodev    nfs

24.3.4 서버는 rpc.mountd, rpc.nfsd로 구성
nfs 서비스는 rpc 서비스인다.
그래서 portmap이 필요하다.

24.3.5 /etc/exports
<공유할 디렉토리>     <허가할 클라이언트>(options)
   
<허가할 클라이언트의 이름>
- 컴퓨터(호스트)의 IP 주소
- 인터넷 주소(도메인 이름 형식)
- *와 ? 사용 가능
- "주소/넷마스크" 사용 가능

 

 


<options>
rw : 서버에서 export된 파일 시스템을 클라이언트에서 마운트하게 되면 기본적으로
read-write
ro       : read-only
rx       : read-execute
root_squash, no_root_squash
: 모든 호스트에는 슈퍼 유저(root)가 있다.
즉, NFS 서버에서도 root가 있고, NFS 클라이언트에서도 root 사용자가 있다. 하지만
두 호스트의 root가 반드시 동일할 수는 없다. 클라이언트의 root는 서버에서 root로 행세할 수 없다.
root_squash는 기본값으로 클라이언트의 root는 NFS 파일 시스템에서 nobody로 매핑되도록 한다. 클라이언트의 root는 마운트된 디렉토리에서 마음대로 쓰고 지울 수 없도록 설정하게 된다.
no_root_squash는 클라이언트의 root가 NFS 파일시스템 위에서도 root로 행세하게
된다.
all_squash, no_all_squash
: 기본값은 no_all_squash로 root를 제외한 일반 사용자 계정에 대해서 서버와 클라이언트에 존재하는 동일한 UID에 대해서는 동일한 권리를 갖게 해 준다.
all_squash
: 클라이언트의 모든 UID와 GID에 대해 익명 사용자 ID로 매핑하여 처리
secure
: 설정되는 기본값으로 1023번 이하의 포트를 통해서만 접속을 할 수 있도록 제한
insecure
: 1024번 이상의 포트를 사용해서 클라이언트와 연결하도록 설정
link_relative
: 절대 경로에 해당하는 심볼릭 링크를 상대 경로로 변경하도록 설정
: 서버의 전체 파일 시스템이 클라이언트에 마운트되었을 때 유용
link_absolute
: 모든 심볼릭 링크를 아무런 조치를 취하지 않도록 하는 옵션
map_identity
: 기본 설정 서버에 존재하는 UID와 GID가 클라이언트의 UID와 GID와 동일하다는
가정을 하도록 서버에 영향을 미친다.

 


map_daemon
: 클라이언트와 서버가 동일한 UID와 GID를 공유하지 못하도록 NFS 서버에 영향을
미친다.
map_static
: UID와 GID에 대한 맵을 가지고 있는 파일을 지정할 때 사용
map_nis 
: NIS 서버를 이용해서 UID와 GID에 대한 맵을 사용하도록 설정
anonuid, anongid
: 익명 계정(anonymous account)을 UID와 GID에 대해서 지정할 수 있도록 하는 옵션
: 파일 시스템을 누구나 마운트하여 사용할 수 있도록 허용

24.3.6 NFS 클라이언트에서 마운트하기
[root @edu00 linux]#mount < -t nfs > server:/directory  /mounting_directory
[root @edu00 linux]#mount nadream:/pub /mnt/nadream_nfs/pub
[root @edu00 linux]#mount -t nfs -o timeo=20, rsize=1024, wsize=1024
 nfs_server:/public  /mnt/public
: 2초 동안 NFS 서버에서 응답이 없으면 클라이언트의 화면에 경고 메세지
: rsize와 wsize는 각각 1MB씩 버퍼링을 하도록 지정

24.3.7 부팅시에 활성화
[root @edu00 linux]#vi fstab
: mount at boot time
--------------------------------------
server1:/home/nfstest  /mnt/nfs nfs defaults 0 0
192.168.1.0/24:/home/nfstest  /mnt/nfs nfs  defaults 0 0
--------------------------------------

 

[이 게시물은 관리자님에 의해 2011-10-31 17:32:05 Linux에서 이동 됨]
추천
0

댓글 0개

전체 5,352
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT