NIS에 대하여
1. NIS에 대하여
(1) 개요: 1980년대 중반 Sun Microsystems사에서는 두 가지 protocol을 내놓았는데 하나는 NFS
(Network File System)이고 또 다른 하나가 NIS(Network Information System)이다. NIS는
말 그대로 네트워크정보를 가지고 이것을 제공해주는 서비스를 말한다. 여러 대의 서버를
운영하고 있고 각각의 로그인이 필요한 경우 사용자는 각 서버에 대해 모두 사용자계정과
패스워드를 가지고 있어야 한다. NIS는 하나의 사용자계정과 패스워드, 그룹 등을 공유하
여 다른 시스템에 제공하는 서비스를 말한다.
(2) 역사: NIS의 최초 버전은 YP(Yellow Pages)라 불리우는데, 이것은 British Telecom의 등록
상표이며, NIS version 1이라고 부른다. 그 이후 Sun Microsystems 에서 NIS 2와 NIS 3을
개발하였다. NIS 3 은 NIS+ 라고 불리우며 기존의 NIS에 보안을 강화한 것으로 RPC 에서
데이터의 암호화와 인증을 지원한다. 그러나 NIS+는 서버 운영하기에 매우 복잡하여 현재
대부분 NIS 2 를 사용한다.
2. NIS 서버구성하기
(1) 개요: NIS를 사용하기 위해서는 서버와 클라이언트에서 공통적으로 해 주어야할 작업들이 있다.
NIS는 기본적으로 DNS를 사용하지 않으므로 /etc/host.conf 파일 수정등의 작업이 필요하
다.
(2) NIS 구성을 위한 공통작업
1) /etc/host.conf 파일 수정
ㄱ. 설명: DNS를 이용하지 않게 하기 위해 DNS보다 NIS를 먼저 참조하도록 설정한다.
ㄴ. 예
[root@nis root]# cat /etc/host.conf
order hosts,nis,bind
multi on
2) /etc/hosts 파일 등록
ㄱ. 설명: 각각의 서버와 클라이언트 호스트들을 등록하여 좀 더 원할하게 사용할 수 있다.
물론 DNS서버를 사용하는 경우 이 파일의 설정이 필요없다.
ㄴ. 예
[root@linux245 root]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 linux245 localhost.localdomain localhost
203.247.50.245 nis.test.co.kr
203.247.50.246 nis_client.test.co.kr
(3) NIS 서버 구성하기
1) 패키지의 설치
ㄱ. 설명: NIS 서버용 프로그램은 ypserv이다. RHEL ES 3.0 기준으로 설치된 패키지는
ypserv-2.8.1.i386.rpm 이다.
ㄴ. 주요데몬
a. ypserv : NIS 서버 데몬이다.
b. yppasswdd : NIS 클라이언트에서 패스워드를 변경하도록 해주는 데몬이다.
c. ypxfrd : NIS서버와 클라이언트간의 맵핑 속도를 높여주는 데몬이다.
2) NIS 도메인 네임결정하기
ㄱ. 설명: NIS에서 사용할 도메인이름을 결정해야 한다. nisdomainname 이라는 명령어를 이용하
여 지정해도 되지만 부팅시에도 적용하려면 /etc/sysconfig/network 파일에 등록하도록
한다.
ㄴ. 예
a. 명령어사용
[root@linux245 root]# nisdomainname test.co.kr
=> NIS 도메인이름을 test.co.kr 이라고 지정하였다. 확인하려면 인자없이 nisdomainname
입력하면 된다.
b. /etc/sysconfig/network 파일에 한라인 추가
NISDOMAIN=test.co.kr
3) 테스트 계정 생성
ㄱ. 설명: 테스트할 계정을 생성한다.
ㄴ. 예
useradd testuser
passwd testuser
4) 서버 시작하기
ㄱ. 설명: 서버로 사용하기 위해서는 /etc/rc.d/init.d 디렉토리에 있는 ypserv와 yppasswdd를
작동시켜야 한다.
ㄴ. 예
/etc/rc.d/init.d/ypserv start
/etc/rc.d/init.d/yppasswdd start
ㄷ. 참고: 부팅시에도 적용하려면 ntsysv 라는 명령실행후 ypserv와 yppasswdd 를 선택하도록
한다.
5) 서버의 작동확인
ㄱ. 설명: 정상적으로 데몬이 작동중인지 확인한다.
ㄴ. 예
[root@linux245 root]# ps -aux |grep yp
root 7683 0.0 0.2 1472 604 ? S 00:59 0:00 ypserv
root 7708 0.0 0.1 1636 488 ? S 01:00 0:00 rpc.yppasswdd
root 7738 0.0 0.2 4628 640 pts/1 S 01:03 0:00 grep yp
6) 정보갱신
ㄱ. 설명: 서버에서 사용자 추가등 설정한 내용이 변경되면 해당 정보를 갱신시켜야 한다.
ㄴ. 방법: 2가지 방법중 하나를 한다.
a. cd /var/yp ; make
b. make -C /var/yp
ㄷ. 참고
a. make 작업을 수행하면 /var/yp 디렉토리에 지정한 nis서버이름으로 디렉토리(예를 들면 nis
.test.co.kr)가 생성되고 그 디렉토리안에 관련정보를 가지고 있는 맵파일들이 생성된다.
b. 서버에서 사용자가 새롭게 추가되면 추가된 정보를 지속적으로 갱신시켜줘야 한다. 이 경우
클론을 사용해서 주기적으로 업데이트하도록 한다.
예) [root@linux245 root]# cat /etc/crontab
0 * * * * root make -C /var/yp > /dev/null 2>&1
=> 한시간 간격으로 업데이트하도록 설정한 예이다.
(4) NIS 클라이언트 구성하기
1) 패키지의 설치: NIS 클라이언트로 사용하기 위해서는 ypbind와 yp-tools 라는 패키지가 설치
되어 있어야 한다. RHEL ES 3.0 버전에는 ypbind-1.12-1.i386.rpm과
yp-tools-2.8-1.i386.rpm 패키지가 설치되어 있다.
2) NIS 도메인 이름 설정하기
ㄱ. 설명: 서버 구성시 지정한 NIS 도메인이름을 지정한다. nisdomainname이라는 명령어를 사용
해도 되고, 부팅시마다 적용시키기 위해 /etc/sysconfig/network 파일에 등록시킨다.
ㄴ. 예
a. 명령어사용
[root@linux245 root]# nisdomainname test.co.kr
=> NIS 도메인이름을 test.co.kr 이라고 지정하였다. 확인하려면 인자없이 nisdomainname
입력하면 된다.
b. /etc/sysconfig/network 파일에 한라인 추가
NISDOMAIN=test.co.kr
3) NIS 서버와 nisdomain 설정
ㄱ. 설명: /etc/yp.conf 파일에 지정한다.
ㄴ. 예
server nis.test.co.kr
ypserver nis.test.co.kr
domain test.co.kr
4) ypbind 시작
ㄱ. 설명: NIS 클라이언트는 ypbind라는 데몬을 작동시켜야 한다. 또한 ntsysv라는 명령어를
실행시켜 부팅시에도 작동하도록 선택한다.
ㄴ. 예
/etc/rc.d/init.d/ypbind start
(5) NIS 클라이언트에서 사용하기
1) 인증변경
ㄱ. 설명: NIS 서버를 통한 인증을 받도록 설정을 변경해야 한다.
ㄴ. 방법 : authconfig(또는 setup명령후에 Authentication configuration 선택)후에 NIS 사용을
선택하고 ‘도메인’과 ‘서버’를 지정한다.
ㄷ. 설정예
도메인: test.co.kr
서버: nis.test.co.kr
2) 로그인해보기
ㄱ. NIS 클라이언트에서 telnet localhost 명령을 내린다.
ㄴ. 서버에 생성된 계정인 testuser로 로그인한다.
3) 확인: 인증이 성공하면 다음과 같이 로그인된다.
예)
Red Hat Enterprise Linux ES release 3 (Taroon)
Kernel 2.4.21-4.EL on an i686
login: nisman
Password:
No directory /home/testuser!
Logging in with home = “/”.
-bash-2.05b$
=> 일반적으로 리눅스에서 로그인하게 되면 ‘/home/계정’디렉토리로 접근하게 되는데,
NIS는 인증만을 해주므로 사용자 홈디렉토리가 존재하지 않아 위와 같은 메시지가 나타나고
로그인하게 된다. 이러한 경우 NFS와 autofs를 사용하여 외부에서 홈디렉토리도 가져오거나
아니면 NIS클라이언트에 해당 사용자의 홈디렉토리와 환경설정파일을 부여할 수도 있다.
4) 참고: NIS 클라이언트에서 홈디렉토리생성하여 복구하기
ㄱ. 설명: NIS 서버는 NIS 클라이언트에게 계정과 패스워드 관련정보만을 제공한다. 따라서 일
반 로컬사용자처럼 사용하려면 사용하고자할 디렉토리를 생성하고 권한을 부여해야
한다.
ㄴ. 방법: 서버에 지정된 사용자가 testuser인 경우
a. 디렉토리 생성
mkdir /home/testuser
b. 환경파일 복사해오기
cp /etc/skel/.* /home/testuser
c. 소유권 변경
chown -R testuser.testuser /home/testuser
3. NIS 관련명령어
(1) nisdomainname
1) 설명: NIS 도메인이름을 보여주거나 지정하는 명령이다.
2) 사용법
nisdomainname [NIS 도메인이름]
3) 사용예
ㄱ. [root@linux245 root]# nisdomainname
test.co.kr
=> 현재 설정된 NIS 도메인이름을 보여준다.
ㄴ. [root@linux245 root]# nisdomainname test.co.kr
=> NIS 도메인을 test.co.kr로 지정한다.
(2) ypwhich
1) 설명: NIS 클라이언트에서 사용하는 명령어로 NIS 서버의 이름과 관련 맵파일을 보여준다.
2) 사용법
ypwhich [option]
3) option
-m : NIS 서버관련 맵파일을 보여준다.
4) 사용예
ㄱ. [root@linux246 root]# ypwhich
nis.test.co.kr
=> NIS서버의 보여준다.
ㄴ. [root@linux246 root]# ypwhich -m
=> NIS 서버관련 맵파일을 보여준다.
(3) ypcat
1) 설명: NIS 클라이언트에서 사용하는 명령어로 NIS 서버의 데이타베이스라고 할 수 있는 맵파일
의 내용을 확인하는 명령이다.
2) 사용법
ypcat 맵파일
=> NIS 서버의 맵파일 정보를 보여준다. 맵파일의 확인은 ‘ypwhich -m’ 명령을 이용한다.
3) 사용법
ㄱ. [root@linux246 root]# ypcat hosts.byname
=> 호스트관련정보를 보여준다.
ㄴ. [root@linux246 root]# ypcat passwd.byname
=> NIS 서버의 사용자관련 정보를 보여준다.
(4) yppasswd
1) 설명: NIS 클라이언트에서 NIS 서버에 등록된 사용자의 패스워드를 변경하는 명령이다. 물론
변경하려면 NIS 서버의 root 패스워드도 알아야 한다.
2) 사용법
yppasswd 사용자계정
3) 사용예
ypasswd testuser
(5) ypchsh
1) 설명: NIS 클라이언트에서 NIS 서버에 등록된 사용자의 쉘을 변경하는 명령이다.
2) 사용법
ypchsh 사용자계정
3) 사용예
ypchsh testuser
(6) ypchfn
1) 설명: NIS 클라이언트에서 NIS 서버에 등록된 사용자의 정보를 변경하는 명령이다.
2) 사용법
ypchfn 사용자계정
3) 사용예
ypchfn testuser
* 참고: NIS 통한 인증이 가능한 서비스
NIS로 telnet, samba, ssh(openssh 3.6버전이상) 등이 가능하다. RHEL 3에 설치되어 있는
openssh는 패치를 해야만 NIS를 통한 인증이 가능하다.