다음 이전 차례

6. NIS를 설치하기 위해 필요한 것들은 무엇인가?

6.1 여러분이 Server, Slave혹은 Client인지 결정하라.

이 문제에 답하기 전에, 다음 두가지를 고려해야 한다.

  1. 여러분의 머쉰은 존재하는 NIS 서버와 함께하는 네트워크의 일원이 될 것 이다.
  2. 여러분은 아직 네트워크에 NIS 서버가 없다.

첫 번째 경우에는, 단지 ypbind, ypswitch, ypcat, yppoll, ypmatch 같은 클라이 언트 프로그램만을 필요로 한다. 가장 중요한 프로그램은 ypbind이다. 이 프로그 램은 항상 실행 중에 있어야 한다. 그것은 그 프로그램이 항상 프로세스의 리스 트에 있어야 한다는 말이다. 이것은 데몬 프로세스로 시스템 시작 파일에 의해 시작되어야 한다. (예로, /etc/init.d/nis, /sbin/init.d/ypclinet, /etc/rc.d/ init.d/ypbind, /etc/rc.local)여러분의 시스템은 ypbind가 시작되자 마자 NIS의 클라이언트가 되는 것이다.

두 번째 경우에, NIS 서버가 존재하지 않을 때, 여러분은 분명 NIS 서버 프로그 램(보통 ypserv라 불림)이 필요할 것이다. NIS세팅하기 부분에서 Peter Eriksson과 Thorsten Kukuk에 의해 만들어진 "ypserv" 를 이용하 여 여러분의 리눅스 머쉰에 NIS를 어떻게 설치하는지를 설명할 것이다. 버전 0. 14부터는 4.1부분에서 언급한 바 있는 master-slave개념이 지원된 다는 것을 염 두해 두어라.

독일의 Tobias Reber가 만든 yps라는 NIS 서버 프로그램도 master-slave 개념 을 지원하지만, 오래전부터 지원하지 않은 다른 제약들이 있다.

6.2 소프트웨어

시스템 라이브러리인 "/usr/lib/libc.a" (버전 4.4.2이후의 것) 혹은, 공유라이 브러리인 "/lib/libc.so.x"는 NIS 클라이언트, 서버 프로그램을 성공적으로 컴 파일 하기 위한 시스템 콜을 모두 가지고 있다. GNU C 라이브러리 2(glibc2)에 대해서는 /lib/libnsl.so.1을 필요로한다.

어떤 이들은 NIS가 버전 4.5.21이후의 "/usr/lib/libc.a"와만 작동된다고 하기 때문에, 안전하게 작동하길 원한다면 옛날 버전의 libc들을 쓰지 않는게 좋다. NIS 클라이언트 소프트웨어는 다음의 장소에서 얻을 수 있다.

Site                    Directory                       File Name

ftp.kernel.org          /pub/linux/utils/net/NIS        yp-tools-2.2.tar.gz
ftp.kernel.org          /pub/linux/utils/net/NIS        ypbind-mt-1.4.tar.gz
ftp.kernel.org          /pub/linux/utils/net/NIS        ypbind-3.3.tar.gz
ftp.kernel.org          /pub/linux/utils/net/NIS        ypbind-3.3-glibc5.diff.gz
ftp.uni-paderborn.de    /linux/local/yp                 yp-clients-2.2.tar.gz

소프트웨어를 구했을 때, 소프트웨어에 포함된 인스트럭션을 읽고 따르길 바란 다. yp-clients 2.2는 libc4와 libc5 에서 5.4.20까지를 위한 것이다. libc 5.4 .21과 glibc 2.x는 yp-tools 1.4.1과 그 이후 버전을 필요로 한다. 새로나온 yp -tools 2.2는 모든 리눅스의 libc에서 작동된다. 단, NIS 코드에 버그가 있어서 , 여러분은 5.4.21 - 5.4.35 버전의 libc는 사용하면 안된다. 대신 5.4.36 이후 버전을 사용하는게 좋다. 그렇지 않으면 대부분의 YP프로그램은 작동하지 않을 것이다. ypbind 3.3도 역시 모든 라이브러리에서 작동한다. 만약 gcc 2.8.x혹은 그 이후 버전,egcs 혹은 glibc 2.x를 사용한다면, ypbind-3.3-glibc5.diff patc h를 ypbind-3.3에 추가해 줘야한다. yp-clients 2.2에서 나온 ypbind를 사용하지 말라. ypbind-mt는 새로나온 멀티 쓰레드 데몬이다. 이것은 Kernel 2.2와 glibc 2.1혹은 이후 버전을 필요로 한다.

6.3 ypbind 데몬

소프트웨어를 성공적으로 컴파일을 했으면, 이제 인스톨을 할 준비가 된 것이 다. ypbind 데몬의 적당한 디렉토리는 /usr/sbin 이다. 어떤 이들은 NYS를 이용 하는 시스템에서는 ypbind가 필요 없을 것이라고 말할 수도 있다. 이것은 틀린 것이다. ypwhich와 ypcat은 항상 ypbind를 필요로 한다.

설치 단계의 가장 첫번째로 이것을 해야한다. 다른 바이너리들(ypwhich, ypcat , yppasswd, yppoll, ypmatch)은 보통 /usr/bin과 같은 다른 모든 유저들이 접 근 가능한 곳에 있어야 한다.

새로운 버전의 ypbind는 /etc/yp.conf라는 설정파일을 가지고 있다. 여러분은 그 파일에서 NIS서버를 하드코드해 줄 수 있다. 좀 더 상세한 내용은 manual pa ge의 ypbind(8)을 참조하기 바란다. NYS를 위해서도 이 파일이 필요하다. 예를들면:

        ypserv votager
        ypserv defiant
        ypserv ds9

만약 시스템에서 NIS없이 호스트 네임을 알아낼 수 있다면 그냥 그 이름을 사용 하면 되지만, 그렇지 않은 경우에는 IP address를 사용해야 한다. ypbind 3.3은 버그가 있어서, 위 예의 마지막인 ypserv ds9만을 사용해야 한다. 모든 다른 것 들은 무시된다. ypbind-mt는 이것을 수정하여 사용한다.

스타트 업 파일에서 실제로 적용해 보기전에, ypbind를 테스해 보는 것은 좋다. ypbind를 테스트 해 보기 위해 다음과 같이 할 수 있다.

이제 여러분은 ypcat등과 같은 NIS클라이언트 프로그램들을 실행시킬 수 있다. 예를 들어 "ypcat passwd.byname"은 여러분에게 전체 NIS 패스워드 데이터베이 스를 제공해 줄 것이다.

중요사항 : 만약 여러분이 테스트를 그냥 건너뛰었다면, domain 네임을 세팅하 는 것과, 다음 디렉토리 만드는 것을 확실히 하라.

        /var/yp

이 디렉토리는 ypbind가 성공적으로 수행되기 위하여 "반드시" 존재해야 한다.

domainnmae이 올바르게 세팅되었는지를 보기위해, yp-tools 2.2의 /bin/ypdomai nname 을 사용하라. 이것은 보다 엄격한 yp_get_default_domain()함수를 사용 한다. 이것은 리눅스에 기본으로 설정되어 많은 문제를 일으키는 (none) domain name을 허용하지 않는다.

이제 테스트가 되었다면, 여러분은 부팅시 ypbind가 수행되어 여러분의 머쉰이 NIS 클라이언트가 될 수 있도록 시작 파일을 수정하길 원할 지도 모른다. ypbin d가 시작되기 전에 domainname이 세팅된다는 것을 확실히 알아 두자.

바로 그거다. 머쉰을 리부트하고, ypbind가 실제로 시작되었는지 부트 메시지 를 살펴보아라.

6.4 Traditional NIS에서의 NIS세팅하기

호스트 lookup을 위해 /etc/host.conf 파일의 lookup order 줄에 "nis" 를 붙여 넣어라. 자세한 내용을 위하여 man페이지의 "resolv+.8"을 참조하라.

여러분 NIS클라이언트의 /etc/passwd파일에 다음 줄을 추가하여라.

+::::::

여러분은 +와 -문자들을 사용하여 사용자들을 포함/제외 혹은 변경할 수 있다. 만약 guest유저를 사용하고 싶다면, 단지 -guest를 /etc/passwd파일에 넣어주면 된다. "linux"라는 유저에게 ksh과 같은 다른 쉘을 사용하게 하고 싶다해도 아 무 문제 없다. 단지 "+linux::::::/bin/ksh" ( ""는 제외하고 )을 /etc/passwd 에 추가하면 된다. 변경하고 싶은 않은 필드에 대해서는 그냥 빈칸으로 놓아 두 면 된다. 여러분은 또한 사용자들을 관리하기 위해 Netgroup을 사용 할 수 있다.

예를 들어, miquels와 dth, ed 그리고 모든 sysadmin netgroup의 모든 멤버들에 게만 로긴 접근을 허용하지만, 다른 모든 유저들의 계정 데이터를 사용가능한 상태로 남겨 두기 위해서는 다음과 같이 하면 된다.

        +miquels:::::::
        +ed:::::::
        +dth:::::::
        +@sysadmins::::::
        -ftp
        +:*::::::/etc/NoShell 

리눅스에서는 위의 예제와 같이 패스워드 필드를 중첩 할 수 있다. "ftp" 로긴 을 제거 했기 때문에, 이것은 더이상 알려지지 않아 anonymous ftp는 더이상 작 동하지 않을 것이다.

netgroup는 다음과 같다.

sysadmins (-,software,) (-,kukuk,)

중요사항 : netgroup의 기능은 libc 4.5.26부터 만들어졌기 때문에, 4.5.26 이 전 버전을 사용하게 된다면, ypbind가 살아 있는 한 NIS 패스워드 데이터베이스 에 있는 모든 유저들이 여러분의 리눅스 머쉰에 로긴 할 수 있다!!!

6.5 NYS에서의 NIS세팅하기

NIS 설정 파일인 /etc/yp.conf에서 필요한 설정은 단지 올바른 서버를 가리키 는 것이다. 또한 Name Services Switch 설정 파일( /etc/nsswitch.conf )도 올 바르게 셋업 되어 있어야 한다.

여러분은 ypbind를 설치해야 한다. libc가 이것을 필요로 하지는 않지만, NIS(Y P) 툴들은 이것을 필요로 한다.

여러분이 사용자 포함/제외의 기능(+/-guest/+@admins)을 사용하길 원한다면, n sswitch.conf 파일에서 "passwd: compat"과 "group :compat"을 사용해야 한다. "shadow: compat"이 없다는 것을 확실히 알아 두자. 이런 경우에 그것 대신 "sh adow: files nis"를 사용한다.

NYS 소스들은 libc 5 소스들의 일부분이다. 설정을 할 때, 처음에 "Values corr et"의 물음에 "NO"라고 하고, "Build a NYS libc from nys"라는 물음에는 "YES" 라고 답하라.

6.6 glibc 2.x에서의 NIS세팅하기

glibc는 "전통적인 NIS"를 사용한다. 그래서 ypbind를 사용해야할 필요가 있는 것이다. Name Services Switch설정 파일( /etc/nsswitch.conf ) 파일이 올바르게 셋업 되어 있어야 한다. 만약 여러분이 passwd, 쉐도우 혹은 group에 대하여 co mpat 모드를 사용한다면 파일 맨 마지막에 "+"를 추가해 줘야 한다. 그러면 유저 의 포함/제외 기능을 사용할 수 있다. 설정은 솔라리스 2.x에서 하는 것과 정확 하게 일치한다.

6.7 nsswitch.conf 파일에 대해서

/etc/host.conf가 호스트를 찾는 방법을 결정하는 것과 같이, Network Service switch파일 /etc/nsswitch.conf는 어떤 정보가 요구되었을 때, lookup하는 순서 를 결정한다. 예를 들면 다음 라인

        hosts: files nis dns

host를 lookup(찾는)하는 기능은 먼저 NIS lookup에 뒤이은 /etc/hosts 파일을 찾아보고 마지막으로 도메인 네임 서비스( /etc/resolv.conf와 named )를 통한 다. 이 때, 실패했을 경우에는 에러를 리턴한다. 이 파일은 모든 유저에게 읽기 권한이 주어져야 한다! 여러분은 man-page의 nsswitch.5혹은 nsswitch.conf.5에 서 좀 더 많은 정보를 얻을 수 있을 것이다.

NIS를 위한 /etc/nsswitch.conf 의 좋은 예이다.

#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
#   nisplus or nis+     Use NIS+ (NIS version 3)
#   nis or yp       Use NIS (NIS version 2), also called YP
#   dns         Use DNS (Domain Name Service)
#   files           Use the local files
#   db          Use the local database (.db) files
#   compat          Use NIS on compat mode
#   [NOTFOUND=return]   Stop searching if not found so far
#

passwd:         compat
group:          compat

# For libc5, you must use shadow: files nis
shadow:         compat

passwd_compat: nis
group_compat: nis
shadow_compat: nis

hosts:          nis files dns

services:   nisplus [NOTFOUND=return] files
networks:   nisplus [NOTFOUND=return] files
protocols:  nisplus [NOTFOUND=return] files
rpc:        nisplus [NOTFOUND=return] files
ethers:     nisplus [NOTFOUND=return] files
netmasks:   nisplus [NOTFOUND=return] files
netgroup:   nisplus
bootparams: nisplus [NOTFOUND=return] files
publickey:  nisplus [NOTFOUND=return] files 
automount:  files nisplus
aliases:    nisplus [NOTFOUND=return] files

passwd_compat, group_compat 그리고 shadow_compat은 glibc 2.x에서만 지원된 다. 만약 /etc/nsswitch.conf에 쉐도우에 대한 규칙들이 없다면, glibc는 look up을 위해 passwd 규칙을 사용할 것이다. glibc를 위해 hesoid같은 다른 looku p 모듈들이 있다. 좀더 많은 정보를 위해, glibc 문서를 참조하기 바란다.

6.8 NIS에서의 쉐도우(Shadow) 패스워드

NIS에서의 쉐도우 패스워드는 항상 좋지 않은 아이디어이다. 쉐도우가 주는 보안 을 잃을 뿐만 아니라, 이것은 아주 적은 몇몇의 리눅스 C 라이브러리에서만 지원 된다. NIS에서의 쉐도우 패스워드를 피하는 좋은 방법은 오직 로컬 시스템의 유 저만 /etc/shadow에 넣는 것이다. 이렇게 함으로써 여러분은 root 로긴시 쉐도우 를 이용할 수 있고, 일반 NIS 유저들에게는 보통의 passwd 방법을 사용할 수 있 다. 이것으로 모든 NIS클라이언트와 함께 작동하는 이점을 얻을 수 있다.

Linux

NIS에서 쉐도우 패스워드를 지원하는 리눅스 libc는 GNU C Library 2.x밖에 없 다. 리눅스 libc 5는 이것을 지원하지 못한다. 리눅스 libc 5가 NYS가 가능한 코드와 함께 컴파일 되었지만, 그 코드는 어떤 경우에 있어서 심각하게 깨져버 리고, 모든 올바른 쉐도우 엔트리에 대하여 작동하지 않는다.

Solaris

솔라리스는 NIS를 통한 쉐도우 패스워드를 지원하지 않는다.

PAM

PAM은 유난히 pam_pwdb/libpwdb에서 NIS를 통한 패스워드를 지원하지 않는다. 이것은 RedHat 5.x 유저들에게 있어서 큰 문제이다. 만약 glibc와 PAM을 가지 고 있다면, 여러분은 /etc/pam.d/* 엔트리들을 변경할 필요가 있다. 모든 pam_p wdb 규칙들을 pam_unix_* 모듈들로 교체해라. pam_unix_auth.so 모듈의 버그 때 문에, 이것은 언제나 작동하지는 않는다.

/etc/pam.d/login 파일의 예는 다음과 유사하다:

#%PAM-1.0
auth       required     /lib/security/pam_securetty.so
auth       required     /lib/security/pam_unix_auth.so
auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_unix_acct.so
password   required     /lib/security/pam_unix_passwd.so
session    required     /lib/security/pam_unix_session.so

인증을 위하여 여러분은 pam_unix_auth.so 모듈이 필요하다. 계정을 위해서는 p am_unix_acct.so가 필요하고 패스워드를 위해서 pam_unix_passwd.so 그리고 세 션처리를 위해 pam_unix_session.so모듈이 필요하다.


다음 이전 차례