NIS Server 设定流程
开始设定吧!在我的系统当中,假定我的网络状况如下:
网域为 192.168.10.0/24
NIS Server 的 IP 为 192.168.10.30,对应的主机名称为 server.cluster
NIS 的领域名称设定为 cluster
在 NIS Server 端以 root 身份登入后,进行下面的工作:
1.启动 portmap 并设定开机时启动:这个应该不难吧!使用:
[root@test root]# /etc/rc.d/init.d/portmap start
[root@test root]# netstat -tl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:sunrpc *:* LISTEN
# 如果看到 sunrpc 的话,就表示启动成功了!
[root@test root]# chkconfig --level 35 portmap on
# 上面这一行在设定 portmap 在 run-level 为 3, 5 时开机启动! portmap 就启动了!
2.启动 time 与 time-udp :
由于 time 与 time-upd 是在 NIS 运作时所需要的 daemon ,所以也必须要启动他啦!启动的方式也很简单,就是利用 xinet 这个 super daemon 来进行即可!
[root@test root]# vi /etc/xinetd.d/time
# 找到底下这一行: disable = yes
# 将他改成 disable = no
# 储存后离开
[root@test root]# vi /etc/xinetd.d/time-udp
# 同样的将 disable = yes 改成 disable = no 即可!
[root@test root]# /etc/rc.d/init.d/xinetd restart
[root@test root]# netstat -utl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:time *:* LISTEN
tcp 0 0 *:sunrpc *:* LISTEN
udp 0 0 *:time *:*
udp 0 0 *:sunrpc *:*
注意喔!目前至少也要有上面四个 LISTEN 的 port 才行喔!分别是 UDP 与 TCP 封包的啦!
3.建立 NIS 的领域名称 ( nisdomainname )
在 NIS 的系统当中,他的领域名称 (domain name) 是与 DNS 没有绝对关系的,由于这个领域名称会常被使用到,因此我们需要将他建立起来!建立起来的方法很简单,直接执行一个指令,并修改一个档案即可!
1. 建立 NIS 的领域名称 (我这里是设定为 cluster ):
[root@test root]# nisdomainname cluster
[root@test root]# vi /etc/rc.d/rc.local
# 将底下这一行加入这个档案的最后一行内: /bin/nisdomainname cluster
2. 设定好网络参数:[root@test root]# vi /etc/sysconfig/network
# 加入底下这一行: NISDOMAIN=cluster
5.建立网络信任群组:
这个 /etc/netgroup 档案可以记录在我们网域里面被信任的群,这个档案的内容当中,每一行都有三个字段,分别以逗号『,』隔开,意义为:主机,使用者账号,领域名称
事实上,如果这个档案是『空的』的话,那么代表着『全部的主机、账号与领域名称都接受』的意思,因为我们已经在 /etc/ypserv.conf 里头设定好了关于安全的项目了,所以这个档案只要建立即可(本来是不存在的!):[root@test root]# touch /etc/netgroup
6.启动 ypserv 这个 daemon ,并且设定开机时启动:
好了!在接下来就是要启动了!启动有两个 daemons ,启动的方式为:1. 启动啰!
[root@test root]# /etc/rc.d/init.d/ypserv start
[root@test root]# /etc/rc.d/init.d/yppasswdd start
2. 观察一下是否真的有动作?
[root@test root]# rpcinfo -u localhost ypserv
program 100004 version 1 ready and waiting
program 100004 version 2 ready and waiting
[root @test root]# rpcinfo -u localhost yppasswdd
program 100009 version 1 ready and waiting
# 这个 rpcinfo 就是在观察与 RPC Server 有关的 program 目前的状况!
# 因此可以用他来观察你的 ypserv 喔!
3. 设定开机时启动:
# 你可以使用 ntsysv ,这里我们使用 chkconfig 啰!
[root@test root]# chkconfig --level 35 ypserv on
[root@test root]# chkconfig --level 35 yppasswdd on
7.制作数据库、并重新启动 ypserv 与 yppasswd :
好了,既然 NIS Server 主要是要提供数据库给大家参考用的,所以当然要制作数据库啰!然后,我们又将这些数据库读入快取当中,所以数据库制作完毕之后,一定要重新启动 ypserv 与 yppasswdd 才行!
1. 制作数据库:
[root@test root]# /usr/lib/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers. server.cluster 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: server.cluster
next host to add: <==在这里按下[ctrl + d]跳出
The current list of NIS servers looks like this:
server.cluster
Is this correct? [y/n: y] y
We need a few minutes to build the databases...
Building /var/yp/cluster/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/cluster'
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/cluster'
server.cluster has been set up as a NIS master server.
Now you can run ypinit -s server.cluster on all slave server.
# 这个动作是每次修改使用者数据后一定要做的动作!,就是重新制作数据库,
# 然后并且需要重新启动 ypserv 与 yppasswdd 喔!
2. 重新启动服务:
[root@test root]# /etc/rc.d/init.d/ypserv restart
[root@test root]# /etc/rc.d/init.d/yppasswdd restart
这个动作的重点是在 /var/yp 这个目录当中,制作了多个的等待 NIS Clients 查寻的数据库!请注意的是,每次在 NIS server 上面更动使用者的数据时,一定需要重新做这个步骤喔!
留意一下有否错误﹐有则根据信息做适当修改﹐无则继续。例如﹐如果它响应说 "No rule to mak target xxxxxx, needed by yyyyyyyy."﹐通常是在 /etc 下面找不到档案而已﹐用 touch /etc/xxxxxxx 就可以解决之。
NIS Client 的设定流程
请留意的是,底下的设定都是在 Client 端喔!不要在主机端作这些设定了!^_^ 1.启动 portmap 并设定开机时启动:
不论是 RPC Server 还是 RPC Client ,反正只要是 RPC 的相关服务要应用,就一定要有 portmap 的辅助才行!所以,启动并设定开机时启动吧!
[root@client root]# /etc/rc.d/init.d/portmap start
[root@client root]# netstat -tl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:sunrpc *:* LISTEN
如果看到 sunrpc 的话,就表示启动成功了!
[root@test root]# chkconfig --level 35 portmap on
上面这一行在设定 portmap 在 run-level 为 3, 5 的时候就开机时启动!
2.设定 NIS Server 的 IP 对应主机名称:
请看上面 Server 设定之前的假设,我的 NIS Server 的 IP 与主机名称记录在 Client 端的 /etc/hosts 上面 [root@client root]# vi /etc/hosts
# 要有底下这一行喔! 192.168.10.30 server.cluster
3.设定 NIS 的 domain 与 NIS 的主机:
NIS Server 与 Client 的 NIS domain 一定要相同,所以我们必须要花一点时间来将这个咚咚搞定:1. 建立 NIS domain name:
[root@client root]# nisdomainname cluster
[root@client root]# vi /etc/rc.d/rc.local
# 加入底下这一行:
/bin/nisdomainname cluster
[root@client root]# vi /etc/sysconfig/network
# 加入底下这一行:NISDOMAIN=cluster
2. 建立 NIS 查寻的主机名称 [root@client root]# vi /etc/yp.conf
# 加入这两行:
domain cluster
ypserver server.cluster
# 还是要记得,那个 cluster 是你的 NIS 的 domain ,至于 server.cluster
# 则是 NIS Server 的主机名称,我这里是使用内部私有 IP ,所以名称可以随便
# 我喜欢来选择的喔!
4.修改密码验证的方式:
密码验证的方式是一定要修改的,不然你的系统怎么知道要去哪里使用什么方式查寻账号、密码数据呢?!所以您至少需要更改两个档案喔!
1. 密码文件的修改:
[root@client root]# vi /etc/passwd
# 还记得这个档案吗?这个档案总共有七个字段,而每个字段都以分号『:』隔开,
# 相关的信息请参考基础学习篇里面的账号管理章节。由于我们要将数据
# 设定以 NIS Server 的数据库来验证,因此,
# 在这个档案的最后面加入这一行:
+::::::
# 注意喔!在 + 之后连续加六个『 : 』,并且中间没有空格符!
2. 查寻密码的程序:
# 因为有很多方式来查寻密码,需要修改 /etc/nsswitch.conf 这个档案才行
[root@client root]# vi /etc/nsswitch.conf
# 找到相关的参数,并改成底下这样:
passwd: files nis nisplus
shadow: files nis nisplus
group: files nis nisplus
hosts: files nis dns
# 这个档案在设定一些信息的查寻程序!那个 files 指的是本机的相关档案,
# 至于 nis 则是透过 NIS 来进行查寻,至于 nisplus 则是 NIS+ 这是比较新
# 版的 NIS 啦!不过,官方网站上面说,目前这个发展的计划已经暂停了!
# 1. passwd: 就是使用者相关信息查寻,分别为 /etc/passwd, nis 与 nisplus
# 2. shadow: 就是使用者密码的查寻, /etc/shadow, nis 及 nisplus
# 3. group: 就是使用者的群组信息查寻, /etc/group, nis 及 nisplus
# 4. hosts: 就是主机名称与IP对应的查寻,/etc/hosts, nis 及 /etc/resolv.conf
5.启动 ypbind 与设定开机启动:
这样几乎就设定完成了!而我们前面说过, NIS Client 也需要启动 ypbind 这个 daemon 的,所以就给他启动吧1. 直接手动启动 ypbind 吧:
[root@client root]# /etc/rc.d/init.d/ypbind start
[root@client root]# rpcinfo -p localhost
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100007 2 udp 735 ypbind
100007 1 udp 735 ypbind
100007 2 tcp 738 ypbind
100007 1 tcp 738 ypbind
# 至少要有上面几个信息才是对的喔!不过,需要记得的是,那个 port number
# 是系统随机启动的,所以 port number 每次都会不太一样啊!
# 记得要经常用 rpcinfo 去检查一下 RPC Server 相关的服务才行!
2. 设定开机时启动:
[root@client root]# chkconfig --level 35 ypbind on
基本上,上面的动作就已经设定好了一部 NIS Client 主机了!而且已经可以跑啰!不过,我们毕竟不知道到底目前我们的 NIS Client 主机使用的 NIS Server 主机里面的哪些数据,并且如何去确认我们的数据库与设定值都没有问题呢?!呵呵!所以底下我们就来谈一谈那个 yp-tools 提供的相关好用的工具程序来检验啰!
3.Configure NIS client
①# cp /etc/nsswitch.nis /etc/nsswitch.conf
②# vi /etc/hosts :添加Master server hostname 和 IP
③#domainname testnis
④#vi /etc/defaultdomain
testnis
⑤#ypinit –c :添加yp master server and slave server
⑥# /usr/lib/netsvc/yp/ypstart
#ypwhich –m :查看master server的数据库信息,如果看到说明NIS client 成功
NIC Client 端检验 NIS 设定:yptest, ypwhich, ypcat
设定好了 NIS Client 之后,先以 netstat 与 rpcinfo 检验一下是否成功的启动之后,接下来就是要测试到底我们的 NIS Client 与 NIS Server 之间沟通的情况如何了!此时就需要使用到 NIS 提供的 yp-tools 这个套件,里面的几个小小的执行程序来动作了:
o yptest :主要在测试 yp 的设定内容、数据库内容等等所有 NIS 相关的数据测试;
o ypwhich:主要在测试 NIS Client 与 Server 之间沟通的数据库 (database) 到底是哪几个档案;
o ypcat :主要在取得 NIS Server 上面的使用者密码信息!
分别谈一谈每个程序的用途与说明吧!
[root@client root]# yptest
Test 1: domainname
Configured domainname is "cluster"
Test 2: ypbind
Used NIS server: server.cluster
Test 8: yp_maplist
rpc.bynumber
rpc.byname
hosts.byaddr
hosts.byname
group.byname
passwd.byname
ypservers
passwd.byuid
Test 9: yp_all
test test:dkoUW2XHV30sEV5gLM4NapyuhBcpVs.:500:500::/home/test:/bin/bash
[root@client root]# ypwhich
server.cluster
[root@clent root]# 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"
[root@client root]# 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"
# 主要的功能就是『列出数据库』啰!与 ypwhich -x 相同功能!
# 所以我们有 ethers, aliases......passwd 等数据库名称与文件名!
[root@client root]# ypcat [数据库名称或功能]
# 这个指令可以用来取得 NIS Server 上面各个数据库的内容!
# 举例来说,我们想要知道 passwd ( 密码数据 ) 的所有使用者内容,就需要:
[root@client root]# ypcat passwd (或 ypcat passwd.byname )
test:dkoUW2XHV30sEV5gLM4NapyuhBcpVs.:500:500::/home/test:/bin/bash
# 如果是想要知道 hosts 的内容 (NIS Server 主机上面 /etc/hosts 的内容):
[root@client root]# ypcat hosts
127.0.0.1 localhost localhost.localdomain
192.168.10.30 server.cluster
# 反正就是加上数据库,你就可以取得 NIS server 主机上面的数据库内容啦!
修改使用者密码 ( 需要有 root 身份 ): yppasswd, ypchfn, ypchsh
好了,既然 NIS Client 已经可以正式的来 run 了,那么还可能有什么大问题呢!?最大的问题在于....我能不能在 NIS Client 端修改各个账号的密码呢?答案是『能!』但是不怎么方便~因为,我们要修改的是 NIS Server 端的数据库喔!也就是说,我们在 NIS Client 端登入之后,要修改自己这个账号的密码,其实改到的是 NIS Server 的数据库密码啊!而要修改数据库密码时,需要使用 root 的身份,所以一定需要 root 的密码~如此一来,实在是不太方便~如果真的要修改的话,那么可以使用底下三个小指令来进行修改,不过,不怎么建议这样做就是了!
o yppasswd :与 passwd 指令相同功能;
o ypchfn :与 chfn 相同功能;
o ypchsh :与 chsh 相同功能。
无论如何,我是不太建议大家使用这些指令去修改数据库的内容啦!比较建议这样做: 1.登入到 NIS Server 主机里面去,进行 useradd 或者是 passwd 修改账 号与密码等等的更动;
2.使用 /usr/lib/yp/ypinit -m 重新制作数据库档案!