免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1436 | 回复: 0
打印 上一主题 下一主题

NIS服务器架设 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-28 15:48 |只看该作者 |倒序浏览
NIS服务器简介
NIS(Network Information Service)也被成为SUN Yellow Pages,简称yp。主要功能是向客户端提供身份验证,类似于微软的域控制器。NIS不能为用户提供默认的目录空间,通常需要NFS提供所需磁盘空间,这非常像微软的漫游配置文件。
NIS提供的主要数据项:

  • /etc/passwd  提供用户账号、UID、GID、默认目录、shell等。
  • /etc/group  提供用户组数据,与GID对应。
  • /etc/hosts  提供主机名与IP的对应。
  • /etc/services  提供服务与端口的对应。
  • /etc/protocols  协议定义。

NIS Master/Slave架构
                                                  +----------------+
                                                  
|    ------>      |
                                                  |    Master  Slave  Client
                                   IP---> (30)    (31)   (200)
NIS Server(Master/Slave)运作流程:

  • NIS Master先将本身的账号密码等相关文件制作成数据库文件(放在/var/yp/`nisdomainname`)。
  • NIS Master可以主动告诉NIS Slave来更新。
  • NIS Slave也可以主动前往NIS Master取得更新后的数据库文件。
  • 如有账号密码等变动时需要重新制作数据库文件并重新同步。
当NIS客户端有查询需求时

  • 会先查询本机的/etc/passwd、/etc/shadow等文件。
  • 若客户端主机找不到需要的信息时,才开始向整个NIS网段广播以查找NIS服务器。
  • 每台NIS Server都可以响应,先响应者优先。
由于客户端会优先查找本地验证文件,所以在客户端(包括NIS Slave端)应将普通账号(大于500的账号)拿掉,只保留root和系统所需账号。

NIS Master server端配置
# 显示计算机名
[root@master ~]# hostname
master
# 在/etc/rc.d/rc.local中加入下面行,设置主机启动是设置nisdomainname
[root@master ~]# cat /etc/rc.d/rc.local
nisdomainname tech.net
# 配置计算机名和NISDOMAIN
[root@master ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=master
GATEWAY=
192.168.0.1
NISDOMAIN=
tech.net
# 设置/etc/hosts
[root@master ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1
               localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.0.30
            
master.tech.net
master
192.168.0.31
            
slave.tech.net
  slave
192.168.0.200
           
client.tech.net
client
# 检查rpm包安装情况,NIS Server需要portmap、ypserv两个rpm包
[root@master ~]# rpm -qa |grep portmap
portmap-4.0-65.2.2.1
[root@master ~]# rpm -qa |grep ypserv
# 安装ypserv包
[root@master ~]# yum -y install ypserv
...省略...
Downloading Packages:
(1/1): ypserv-2.19-3.i386 100% |=========================| 134 kB    01:12
...省略...
Running Transaction
  Installing: ypserv                       ######################### [1/1]
Installed: ypserv.i386 0:2.19-3
Complete!
# 配置ypserv,主配置文件为/etc/ypserv.conf(主要配置客户端查询NIS Server权限)
[root@master ~]# vi /etc/ypserv.conf
...省略...
# Should we do DNS lookups for hosts not found in the hosts table ?
# This option is ignored in the moment.
dns: no  #使用/etc/hosts文件进行解析
# How many map file handles should be cached ?
files: 30  #加载多少个数据库到缓存中,小环境下30个足够了
# Should we register ypserv with SLP ?
slp: no  # 不使用SLP
# After how many seconds we should re-register ypserv with SLP ?
slp_timeout: 3600
# xfr requests are only allowed from ports
127.0.0.0/255.255.225.0
         : *     : *     : none
192.168.0.0/255.255.255.0
       : *     : *     : none
*                               : *     : *     :deny
# 创建/etc/netgroup,用于记录网段里被信任的群组,文件为空表示全部主机,账号和域被信任。(较新的Linux可能不检查此文件)。
# 格式:,,

[root@master ~]# touch /etc/netgroup
# 启动portmap服务,NIS服务依赖于portmap服务
[root@master ~]# /etc/init.d/portmap start
# 启动NIS服务
[root@master ~]# /etc/init.d/ypserv start
启动 YP 服务器的服务:                                     [确定]
# 启动yppasswdd服务,当NIS客户端使用yppasswd修改密码或其他信息时会用的此服务
[root@master ~]# /etc/init.d/yppasswdd start
启动 YP 口令服务:                                         [确定]
# 查看NIS服务在RPC中的注册情况
[root@master ~]# rpcinfo -p localhost
   程序 版本 协议   端口
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100004    2   udp    847  ypserv
    100004    1   udp    847  ypserv
    100004    2   tcp    850  ypserv
    100004    1   tcp    850  ypserv
    100009    1   udp    856  yppasswdd
[root@master ~]# rpcinfo -u localhost ypserv
程序 100004 版本 1 就绪并等待
程序 100004 版本 2 就绪并等待
# 添加一个用户
[root@master ~]# useradd nisuser
[root@master ~]# passwd nisuser
Changing password for user nisuser.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
# 建立数据库
[root@master ~]# /usr/lib/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers.  
master.tech.net
is in the list of NIS server hosts.  Please continue to add
the names for the other hosts, one per line.  When you are done with the
list, type a .
        next host to add:  
master.tech.net
        next host to add:
The current list of NIS servers looks like this:
master.tech.net
Is this correct?  [y/n: y]  y
We need a few minutes to build the databases...
Building /var/yp/
tech.net/ypservers.
..
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/
tech.net
'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
Updating rpc.byname...
Updating rpc.bynumber...
Updating services.byname...
Updating services.byservicename...
Updating netid.byname...
Updating protocols.bynumber...
Updating protocols.byname...
Updating mail.aliases...
gmake[1]: Leaving directory `/var/yp/
tech.net
'
master.tech.net
has been set up as a NIS master server.
Now you can run ypinit -s
master.tech.net
on all slave server.
# 更新完数据库后需要重新启动NIS服务和yppasswdd服务
[root@master ~]# /etc/init.d/ypserv restart
停止 YP 服务器的服务:                                     [确定]
启动 YP 服务器的服务:                                     [确定]
[root@master ~]# /etc/init.d/yppasswdd restart
停止 YP 口令服务:                                         [确定]
启动 YP 口令服务:                                         [确定]
# ypinit通过/var/yp/Makefile来建立数据库,如果仅修改了用户账号参数,那么仅有/etc/passwd修改过,我们可以仅针对这个文件进行更新。
[root@master ~]# cd /var/yp
[root@master yp]# make passwd
# 如果有Salve服务器,我们需要修改/var/yp/Makefile脚本将数据库推送(push)到其他Salve服务器上
[root@master ~]# vi /var/yp/Makefile
# If we have only one server, we don't have to push the maps to the
# slave servers (NOPUSH=true). If you have slave servers, change this
# to "NOPUSH=false" and put all hostnames of your slave servers in the file
# /var/yp/ypservers.
NOPUSH=false   #将原来的true改为false
# 将Slave服务器名加入
/var/yp/ypservers
[root@master ~]# vi /var/yp/ypservers
master.tech.net
slave.tech.net
# 启动
ypxfrd服务用于同步数据库到Slave服务器
[root@master ~]# /etc/init.d/ypxfrd start
启动 YP 映射图服务器:                                     [确定]
# 设置服务开机自动启动
[root@master ~]# chkconfig --level 2345 portmap on
[root@master ~]# chkconfig --level 2345 ypserv on
[root@master ~]# chkconfig --level 2345 yppasswdd on
[root@master ~]# chkconfig --level 2345 ypxfrd on
# NIS Master可以使用下面命令向Slave推送数据库
[root@master ~]# yppush -h slave.tech.net passwd.*
# NIS的主要目录结构

NIS Slave server端配置
# NIS Slave server端配置类似于NIS Master server端配置
[root@slave ~]# hostname
slave
[root@master ~]# cat /etc/rc.d/rc.local
nisdomainname tech.net
[root@slave ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=slave
GATEWAY=
192.168.0.1
NISDOMAIN=
tech.net
[root@slave ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1
               localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.0.30
            
master.tech.net
master
192.168.0.31
            
slave.tech.net
  slave
192.168.0.200
           
client.tech.net
client
[root@slave ~]# rpm -qa |grep portmap
portmap-4.0-65.2.2.1
[root@slave ~]# rpm -qa |grep ypserv
# NIS Slave server端启动ypbind以便于和ypserv连机
[root@slave ~]# rpm -qa |grep ypbind
ypbind-1.19-8.el5
[root@slave ~]# rpm -qa |grep yp-tools
yp-tools-2.9-0.1
# 安装ypserv包
[root@master ~]# yum -y install ypserv
...省略...
Downloading Packages:
(1/1): ypserv-2.19-3.i386 100% |=========================| 134 kB    01:12
...省略...
Running Transaction
  Installing: ypserv                       ######################### [1/1]
Installed: ypserv.i386 0:2.19-3
Complete!
# 拷贝NIS Master server端配置到NIS Slave server端
[root@slave ~]# scp root@master.tech.net:/etc/ypserv.conf /etc/ypserv.conf
The authenticity of host 'master.tech.net (192.168.0.30)' can't be established.
RSA key fingerprint is 6e:15:10:11:6f:3b:ee:1c:b5:f2:19:80:11:bb:39:02.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'master.tech.net' (RSA) to the list of known hosts.
root@master.tech.net's password:
ypserv.conf                                                                           100% 1856     1.8KB/s   00:00
[root@slave ~]# touch /etc/netgroup
[root@slave ~]# /etc/init.d/portmap start
启动 portmap:                                             [确定]
[root@slave ~]# /etc/init.d/ypserv start
启动 YP 服务器的服务:                                     [确定]
# 初始化NIS数据库
[root@slave ~]# /usr/lib/yp/ypinit -s master.tech.net
We will need a few minutes to copy the data from master.tech.net.
Transferring group.byname...
Trying ypxfrd ... success
...省略...
slave.tech.net's NIS data base has been set up.
If there were warnings, please figure out what went wrong, and fix it.
At this point, make sure that /etc/passwd and /etc/group have
been edited so that when the NIS is activated, the data bases you
have just created will be used, instead of the /etc ASCII files.
# 检查NIS数据库同步情况
[root@slave ~]# ypcat -h localhost passwd.byname
nisuser:$1$IIC1WZtt$te4kw1YnDk9Quu0Psr6it.:500:500::/home/nisuser:/bin/bash
[root@slave ~]# ls /usr/lib/yp/ypxfr_*
/usr/lib/yp/ypxfr_1perday  /usr/lib/yp/ypxfr_1perhour  /usr/lib/yp/ypxfr_2perday
# 设置NIS Slave server自动同步数据库
[root@slave ~]# crontab -e
0 * * * * /usr/lib/yp/ypxfr_1perhour
0 0 * * * /usr/lib/yp/ypxfr_1perday
0 6,18 * * * /usr/lib/yp/ypxfr_2perhour

# 默认的脚本有点问题,需要修改三个脚本

[root@slave ~]# vi /usr/lib/yp/ypxfr_1perhour
# 找到下面行
$YPBINDIR/ypxfr $map
# 修改为
$YPBINDIR/ypxfr $map -h master.tech.net
# 下面两脚本修改类似上面,加入-h master.tech.net
[root@slave ~]# vi /usr/lib/yp/ypxfr_1perday
[root@slave ~]# vi /usr/lib/yp/ypxfr_2perday
# 设置服务开机自动启动
[root@master ~]# chkconfig --level 2345 portmap on
[root@master ~]# chkconfig --level 2345 ypserv on
注:NIS Slave server端同时也是NIS Master server的客户端,所以也要进行下面的客户端设置,如启动ypbind。
NIS 客户端配置
客户端需要ypbind和yp-tools两个rpm包,一般默认会安装。
# 使用authconfig命令行进行配置
[root@slave ~]# authconfig --enablenis --nisdomain=tech.net  --nisserver=master.tech.net --update
停止 portmap:                                             [确定]
启动 portmap:                                             [确定]
关联到 NIS 域:                                             [确定]
监听 NIS 域服务器。
# 也可以使用GUI图形界面来配置
[root@slave ~]# authconfig-gtk  #CentOS5使用此命令
# 勾选“启用NIS支持”
# 点击配置NIS按钮,输入NIS域和NIS服务器


[root@slave ~]# authconfig  #CentOS4使用此命令


# 查看相关配置文件修改情况
# authconfig会自动配置好需要配置的文件,并将ypbind设为开机自动启动。
#
/etc/nsswitch.conf与主机验证功能顺序有关,一般是先使用本机验证,不成功再使用NIS验证
[root@slave ~]# cat /etc/nsswitch.conf
...省略...
passwd:     files nis
shadow:     files nis
group:      files nis

#hosts:     db files nisplus nis dns
hosts:      files nis dns
...省略...
# CentOS的认证机制
[root@slave ~]# cat /etc/sysconfig/authconfig
...省略...
USENIS=yes
# 许多登陆使用的PAM认证,让PAM模块支持NIS验证
[root@slave ~]# cat /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so
account     required      pam_unix.so
account     sufficient    pam_succeed_if.so uid nis nullok try_first_pass use_authtok
password    required      pam_deny.so
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
# ypbind的配置文件,一般设置用于验证的NIS主机名
[root@slave ~]# cat /etc/yp.conf
...省略...
domain tech.net server master.tech.net  # Slave应该配置master.tech.net为其验证服务器
domain tech.net broadcast  # 如果使用Master/Salve架构可以设置为broadcast,通过广播来发现NIS服务器
# 验证能够通过id命令查询到本机不存在的用户的ID信息(说明NIS设置没问题)
[root@slave ~]# id nisuser
uid=500(nisuser) gid=500(nisuser) groups=500(nisuser)
# 用yptest检查数据库
[root@slave ~]# yptest
Test 1: domainname
Configured domainname is "tech.net"
Test 2: ypbind
Used NIS server: master.tech.net
Test 3: yp_match
WARNING: No such key in map (Map passwd.byname, key nobody)  # 因为早期nobady的UID为65534,但在CentOS中nobody的UID为99,所以有一个警告,此错误可以忽略
# 使用id查看nobody的UID、GID

Test 4: yp_first
nisuser nisuser:$1$IIC1WZtt$te4kw1YnDk9Quu0Psr6it.:500:500::/home/nisuser:/bin/bash
Test 5: yp_next
Test 6: yp_master
master.tech.net
Test 7: yp_order
134515616
Test 8: yp_maplist
group.byname
protocols.bynumber
protocols.byname
services.byname
ypservers
passwd.byuid
passwd.byname
hosts.byaddr
rpc.bynumber
netid.byname
group.bygid
hosts.byname
rpc.byname
services.byservicename
mail.aliases
Test 9: yp_all
nisuser nisuser:$1$IIC1WZtt$te4kw1YnDk9Quu0Psr6it.:500:500::/home/nisuser:/bin/bash
1 tests failed
# 显示NIS Server Name
[root@slave ~]# ypwhich
master.tech.net
# 显示NIS Client与Server间沟通的数据库有那些
[root@slave ~]# ypwhich -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"
# 使用ypcat读取数据库内容
# ypcat [-h NISServer] [数据库名称]

[root@slave ~]# ypcat passwd.byname
nisuser:$1$IIC1WZtt$te4kw1YnDk9Quu0Psr6it.:500:500::/home/nisuser:/bin/bash
# 用户参数修改,yppasswdd可以接受来自于NIS客户端的密码修改

  • yppasswd与passwd功能相同,修改用户密码。
  • ypchfn与chfn功能相同
  • ypchsh与chsh功能相同,修改登陆shell。

NIS与NFS配合
# 通常在NIS服务器上创建的用户其主目录会放到NIS服务器的/home下,NIS客户端并没有用户的主目录,这样用户登陆时就会有问题,可以通过NFS将
NIS Server的/home目录挂载到客户端
# 在NIS上共享/home目录,并启动NFS服务
[root@master ~]# cat /etc/exports
/home   192.168.0.0/24(rw,sync,no_root_squash) *.tech.net(rw,sync,no_root_squash)
[root@master ~]# /etc/init.d/nfs start
# 在客户端挂载/home目录
[root@client ~]# vi /etc/rc.d/rc.local
mount -t nfs -o rw,bg,soft,rsize=32768,wsize=32768 192.168.0.30:/home /home


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/26560/showart_1913147.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP