mg沙漠高达改:局域网NIS配置

来源:百度文库 编辑:偶看新闻 时间:2024/05/02 02:23:49

假设如下局域网:

Server:         192.168.1.1                master.figo.com

Client:          192.168.1.100             client.figo.com

Slave:           192.168.1.50              slave.figo.com

Domain name:    figo.com

NISServer 端的设定:

l        设定NIS 的域名 (NIS domain name)

因为所有的 NIS server/client 都需要设定NIS 域名称。设置的方式很简单, 直接以 nisdomainname 这个命令来设置即可。(其实 nisdomainname 与ypdomainname 及 domainname

都是一模一样的命令。你只要记住一个命令名称即可。请自行 man domainname )

#nisdomainname [NIS 域名称]

若没有加上域名称,则会显示出目前的 NIS 域;

#nisdomainname figo.com

#nisdomainname

figo.com <==瞧!已经设定了 NIS 域名。

如果确定每次开机时都需要启动这个 NIS 域名的话,直接写到 /etc/rc.d/rc.local :

#vi /etc/rc.d/rc.local

#加入下面这一行:

/bin/nisdomainnamevbirdnis

若是想要在启动 NIS 时就自动设定好 NIS 域名,可以利用 /etc/sysconfig/network 这个文件,写成如下所示的:

#vi /etc/sysconfig/network

#加入下面这一行:

NISDOMAIN=vbirdnis

如此一来,你的服务器就会在开机时,或者是在启动 NIS 相关服务时,就能够自行设定好NIS 域名。

 

主要配置文件 /etc/ypserv.conf

这个配置文件就是 NIS 服务器最主要的配置文件。内容其实很简单,你可以保留预设值即可。

#vi /etc/ypserv.conf

dns:no

#NIS 服务器的使用时机绝大部分都是在局域网络内而已,所以不需要 DNS 系统

#只要 /etc/hosts 设定正确即可。

files:30

#预设会有 30 个数据库被读入记忆体当中,因为我们的帐号档案其实不多, 30 个已经足够使用了!slp: no

slp_timeout:3600

#这两个与 SLP 服务有关,因为我们仅使用单纯的 NIS ,所以不需要启动。

xfr_check_port:yes

# 这个与 master/slave 有关,将同步更新的数据库比对所使用的端口,

#放置于小于 1024 的端口内。

#下面则是设定限制客户端或 slave server 查询的权限,利用冒号隔成四部分,分别为:

#[主机名称/IP] : [NIS域] : [可用数据库名称] : [安全限制]

#[主机名称/IP]   :可以使用 network/netmask 如:192.168.1.0/255.255.255.0

#[NIS域名]   :例如本案例中的 vbirdnis

#[可用数据库名称]:就是由 NIS 制作出来的数据库名称;

#[安全限制]      :包括没有限制 (none)、仅能使用<1024 (port) 及拒绝 (deny)

#一般来说,你可以依照我们的网段来设定成为下面的模样:

127.0.0.0/255.255.255.0  : * : * : none

192.168.1.0/255.255.255.0: * : * : none

*                       : * : * : deny

#星号 (*) 代表任何资料都接受的意思。上面三行的意思是,开放 lo 内部介面、

#开放内部 LAN 网域,且杜绝所有其他来源的 NIS 请求。

# 如果上面这三行权限相关的设定无法让你的 NIS 顺利的生效时,

#你可以先将上面三行注解,然后加入底下这一行:

*                          : * : * : none

#这样应该就能够让 NIS 顺利的连接。

 

l        设置主机名称(/etc/hosts) 与建立信任群组(/etc/netgroup)

在 /etc/ypserv.conf 的设置当中我们谈到 NIS 大部分是给局域网络内的主机使用的, 所以当然就不需要 DNS 的设置了。不过,由于 NIS 使用到很多的主机名称, 所以你一定要设置好 /etc/hosts 对应,否则会无法成功连接 NIS

!这个很重要,绝大部分的朋友无法达成 NIS server/client 的连接都是这里出问题而已。依据本案例的设置值,你应该这样做:

# vi /etc/hosts

192.168.1.1   master.figo.com

192.168.1.100 client.figo.com

注意:如果你的主机名称与 NIS 的主机名称不同,那么在这个文件当中还是需要将你的主机名称给设置进来! 否则在后面数据库的设定时,肯定会发生问题。当然,你也可以直接在 /etc/sysconfig/network 当中直接重新设定主机名称,然后重新开机,或者是利用

hostname这个命令重新设置你的主机名称也可以。

除了这个设置之外,有时你可能需要设置 /etc/netgroup ,虽然比较新的 distributions 都可以略过这个档案的检查了,不过建议您还是可以了解一下。这个 /etc/netgroup

文件可以记录在我们网域里面被信任的群,这个文件的内容当中,每一行都有三列,分别以逗号『,』隔开,意义为:

,,
主机,使用者帐号,域名

事实上,如果这个文件是『空白』的,那么代表着『全部的主机、帐号与域名称都接受』的意思,因为我们已经在 /etc/ypserv.conf 里头设置好了关于安全的项目,所以这个文件只要建立即可(缺省是不存在的):

#touch /etc/netgroup

 

l        启动所有相关的服务

这包括 RPC, ypserv 以及yppasswdd。不过,如果你的 RPC 本来就已经启动的话,那就不要重新启动 portmap。

#/etc/init.d/portmap start

#/etc/init.d/ypserv start

#/etc/init.d/yppasswdd start

 注意,主要的 NIS 服务是 ypserv ,不过,如果要提供 NIS 客户端的密码修改功能的话, 最好还得要启动 yppasswdd 这个服务。在启动完毕后,我们可以利用 rpcinfo 来检查看看:

# rpcinfo -p localhost

program vers proto   port

100000    2   tcp   111  portmapper

100000    2   udp   111  portmapper

100004    2   udp   942  ypserv

100004    1   udp   942  ypserv

100004    2   tcp   945  ypserv

100004    1   tcp   945  ypserv

100009    1   udp   950  yppasswdd

#rpcinfo -u localhost ypserv

program100004 version 1 ready and waiting

program100004 version 2 ready and waiting

 要出现上述的画面才表示正确的启动了 ypserv。 若需要开机立即启动 ypserv ,请使用 chkconfig 来处理。

 

l        建立数据库

 在完成了上面的所有步骤后,接下来我们得要开始将主机上面的帐号文件转成数据库文件。 转换的动作直接通过 /usr/lib/yp/ypinit 这个命令来处理。整个步骤如下:

# /usr/lib/yp/ypinit –m

Atthis point, we have to construct a list of the hosts which will run servers. master.figo.com is in the list ofserver hosts.  Please continue to add the names for the other hosts, oneper line.  When you are done with the list, type a .

       next host to add:  master.vbirdnis  <==这个地方系统会主动捕捉到

       next host to add:                  <==按下 [ctrl]-d

Thecurrent list ofservers looks like this:

master.figo.com

Isthis correct?  [y/n: y] y

Weneed a few minutes to build the databases...

Building/var/yp/vbirdnis/ypservers...

Running/var/yp/Makefile...

gmake[1]:Entering directory `/var/yp/vbirdnis‘

Updatingpasswd.byname...

....中间省略....

gmake[1]:Leaving directory `/var/yp/vbirdnis‘

master.vbirdnishas been set up as amaster server.

Nowyou can run ypinit -s master.vbirdnis on all slave server.
要注意出现的信息中,在告知你可以直接输入 [ctrl]-d 以结束的那个位置,你的主机名称会主动的被捕获到,注意!这个主机名称务必需要在 /etc/hosts 可以被找到IP 的对应, 否则会出现问题。另外,在执行 ypinit -m时,出现如下的错误,那肯定就是有些资料没有被建立。

gmake[1]:*** No rule to make target `/etc/aliases‘, needed by

`mail.aliases‘. Stop.

gmake[1]:Leaving directory `/var/yp/vbirdnis‘

make:*** [target] Error 2

Errorrunning Makefile.

Pleasetry it by hand.

#touch /etc/aliases

#解决方法很简单!缺少什么档案,就 touch 就是了!

#/usr/lib/yp/ypinit –m

#然后再重新执行一次即可!

如果是如下的错误,那可能是因为:

你的 ypserv 没有顺利启动,请利用 rpcinfo 检查看看;

你的主机名称没有对应好,请检查 /etc/hosts

gmake[1]:Entering directory `/var/yp/vbirdnis‘

Updatingpasswd.byname...

failedto send ‘clear‘ to local ypserv: RPC: Program not

registeredUpdatingpasswd.byuid...

failedto send ‘clear‘ to local ypserv: RPC: Program not

registeredUpdatinggroup.byname...

....

 

建立了数据库后,你必需要通知 ypserv 与yppasswdd 这两个服务,告知数据库已经被更改了, 所以你可以这样做:

#/etc/init.d/ypserv restart

#/etc/init.d/yppasswdd restart

注意:如果你的使用者密码有变动过,那么你就得要重新制作数据库,重新启动 ypserv 及yppasswdd。

 

l         slave server 及数据库有关的一些设置 (optional)

当我们执行了 ypinit -m 之后,所有的主机上面的帐号相关文件会被转成数据库文件, 这些数据库会被放置到/var/yp/"nisdomainname" 当中,我们的 nisdomainname 是 figo.com ,所以被建立的数据库通通被放置到

/var/yp/figo.com/目录中。您可以自行去检查看看。

事实上,我们的 ypinit 其实是通过/var/yp/Makefile 来进行数据库的建立的, 所以,我们当然也就可以借由该文件内的功能来处理某些特定文件的更新。 举例来说,若你仅修改了一个使用者的帐号参数而已,所以仅有 /etc/passwd 有被变更过,

那么如何仅针对这个档案进行数据库的更新呢?你可以这样做:

#cd /var/yp

#make passwd

Updatingpasswd.byname...

Updatingpasswd.byuid...

这样做就能够更新了,只不过更新后的数据库会被放置到 /var/yp 当中,而不是/var/yp/figo.com中, 或许你还得需要手动移动一下该文件。

再者,如果你有 slave 服务器,总是需要进行 master/slave 的同步化吧? 那如何告知我们的 master 服务器将数据库提供给 slave 呢?这个时候就得要修改 /var/yp/Makefile 。
您可以自行进入该文件内查阅一些资料,不过,基本上你只要改一个地方就好了:

#vi /var/yp/Makefile

#找到底下这一行:

NOPUSH=true

#将他改成这样:

NOPUSH=false

这个设定值可以将数据库给它『送 (push)』到其它的slave 服务器上。接下来,你必需要告知 master 要送出去的数据库是给哪部服务器?所以,你还得要修改这里:

#vi /var/yp/ypservers

master.figo.com

slave.figo.com

#增加上头这一行!

 

你可以将所有的 slave 服务器都加到/var/yp/ypservers 文件中,只要记得该服务器的 IP 必需要在/etc/hosts 内可以找到对应才行。如果你要提供 master/slave 服务器的数据库文件传输时,那么还需要启动 ypxfrd

这个服务。这个服务可以让 slave 服务器主动连接上 ypxfrd 来更新数据库, 可以免除系统管理员自己手动更新。启动方式如下:

#/etc/init.d/ypxfrd start

 

做到这里,您的 NIS Master 服务器已经配置完成。接下来,您就可以准备处理 slave 服务器,或是直接处理 NIS client 端,此外,如果您的 master 机器想要直接将某些特定的数据库直接传给 slave 主机的话, 那么可以使用yppush

这个命令。例如下列范例:

 

#yppush -h slave.figo.com passwd.*

 

如果 master/slave 的数据库不匹配的话,那么该 passwd.byname 及 passwd.byuid 就会同步更新。 也就是说,您得先要制作数据库,然后再利用 yppush 来处理数据库的同步, 亦即是:

先以 useradd username 或passwd username 等制作出 master 上面的实体用户;

  再以 make 或者直接以/usr/lib/yp/ypinit -m 来制作出最新的数据库;

利用 yppush 这个命令功能来进行数据库的传输。

 

如此一来,您就不需要进行 slave 上面的其他数据库处理,方便又简单。

 

NIS slave的设定与启动 (optional)

 

我们知道由于 NIS 服务器预设还是会先搜索自己的 /etc/passwd, /etc/shadow 等信息,因此你最好先将 NIS slave 的帐号与密码资料作个简单的修订,让他保留在比较干净的帐号资料,例如仅有系统帐号 (UID 小于500内的系统帐号) 就是一个不错的环境。这样可以避免 UID 重复出现的问题 (在 /etc/passwd 及NIS 的环境中都出现相同的 UID ,但其相关参数却并相同时,可能有困扰)。

 

NIS slave 的设置要比NIS master 简单很多,事实上,很多设置都一样。你甚至可以复制 NIS master 的很多配置文件。在你处理完 NIS slave 服务器的帐号密码相关文件后,接下来你可以这样设定:

 

l       设定域名

同样的, NIS slave 也需要设定相同的域名,设定方式可以参考前一小节的介绍,我们这里很快的介绍一遍:

1. 直接建立域名称

#nisdomainname figo.com

 

2. 开机立即启动此域名称

#vi /etc/rc.d/rc.local

#加入下面这一行:

/bin/nisdomainnamefigo.com

3. 预设在启动 ypserv 时,设定NIS 域名

#vi /etc/sysconfig/network

#加入底下这一行:

NISDOMAIN=figo.com

 

l       主要配置文件/etc/ypserv.conf

这个配置文件也是很简单的,可以与前面的 NIS master 相同即可。在这个例子中,我是直接在该文件加入这三行。

#vi /etc/ypserv.conf

127.0.0.0/255.255.255.0  : * : * : none

192.168.1.0/255.255.255.0: * : * : none

*                       : * : * : deny

 

/etc/hosts 及/etc/netgroup

 

这两个文件不陌生吧?直接设置就行。

#touch /etc/netgroup

#vi /etc/hosts

192.168.1.1   master. figo.com

192.168.1.50  slave. figo.com

192.168.1.100 client. figo.com

 

l       启动所有服务及建立数据库

还记得吧?我们需要 portmap 与ypserv ,至于 yppasswdd 这个功能主要是在修改主控服务器 (master) 上面的帐号密码,而 slave 只是在取得master 的数据库而已,本身并不具备修改数据库的能力的, 所以 slave 当然就不需要yppasswdd,所以你可以这样设定:

#/etc/init.d/portmap start

#/etc/init.d/ypserv start

 

那如何取得来自 master 服务器的数据库文件呢?还是一样得要通过 /usr/lib/yp/ypinit 这个程序, 只是它的命令下达会变成这样:

 

#/usr/lib/yp/ypinit -s master.figo.com

参数:

-s:后面接预计取得的 master 主机名称!

Wewill need a few minutes to copy the data from master.figo.com.

Transferringhosts.byname...

Tryingypxfrd ... not running

 

Transferringservices.byname...

Tryingypxfrd ... not running

....中间省略....

 

虽然使用上面的命令事实上会出现有错误的信息,就是『Trying ypxfrd ... not running』的信息, 但事实上数据库的转移还是成功的!你可以使用下面这个命令来测试一下数据库是否正确:

 

#ypcat -h localhost passwd.byname

 

如果有正确的输出帐号/密码资料的话,那就是 OK 的!如此一来,您的 NIS slave 就启动OK 啦! 不过,由于您的 master 服务器可能随时都会有帐号/密码的改变,所以你其实是可以使用 ypxfrd 这个服务来帮助数据库在 master/slave间转移。如果你有在 master 服务器启动ypxfrd ,那么你可以在 slave 的计划任务上这样处理:

#vi /etc/crontab

#在最后加入以 ypxfr 传输资料的 script

20   * * * * root /usr/lib/yp/ypxfr_1perhour

40   6 * * * root /usr/lib/yp/ypxfr_2perday

556,18 * * * root /usr/lib/yp/ypxfr_2perday

#事实上,这三个程序只是利用 /usr/lib/yp/ypxfr 来进行数据库的更新,

 

不过实际进行时,似乎有点小问题,或许需要修改一下上述三个档案, 我们以/usr/lib/yp/ypxfr_1perhour 为例来说明一下好了:

#vi /usr/lib/yp/ypxfr_1perhour

#找到这一行:

  $YPBINDIR/ypxfr$map

#将他改成这样:

  $YPBINDIR/ypxfr$map -h master.figo.com

Tips:

事实上,如果 master 服务器有启动ypxfrd ,那么下达 ypinit -s master.figo.com 时, 就不会有错误信息。

如此一来,系统将会针对不同的数据库来与 master 服务器进行比对,若发现 master 的资料较新时,则会进行更新。当然,您也可以直接通过系统管理员执行 ypinit -s master.figo.com来处理。此外,直接利用 master 机器上的yppush也是个不错的思考方向!

 

启动 ypbind ,让slave 也可以查询帐号/密码

 

如果你的 slave 并没有启动ypbind 的话,那么 slave 将无法以master 所提供的帐号来登入。 所以接下来,你必须要启动 ypbind 这个查询的功能,好让我们的 slave 服务器也可以针对我们自己的 NIS 域(vbirdnis) 进行查询。 至于ypbind 的启动方式则请参考下一小节的 NIS client 设置方式。

至此为止,你就已经具有一台 NIS master 及多部NIS slave 的服务器。接下来就来看看 NIS client。

 

NISClient 端的设定

我们知道网络连接是双向的,所以 NIS server 提供数据库文件,NIS client 当然也需要提供一些连接的软件。 这个连接的软件就是ypbind。此外,如同图一的介绍,在 NIS client 端有登入需求时, NIS client 基本上还是先搜寻自己的/etc/passwd, /etc/group 等文件后才再去找 NIS server 的数据库! 所以NIS client 最好能够将本身的帐号密码删除到仅剩下系统帐号,亦即 UID, GID 均小于500 以下的帐号即可,如此一来既可让系统执行无误,也能够让登入者的信息完全来自 NIS server ,环境比较单纯。

NISclient 端所需要的软件仅有:

ypbind

yp-tools

 

NIS client 的设定与启动

启动 NIS client 的设置就简单很多!最主要是加入 NIS domain 中,然后再启动 ypbind 即可。 整个设定过程是:

l       设定好 NISdomain 以及/etc/hosts 主机名对应

设定 NIS domain 就利用nisdomainname 来处理即可:

 

1.     直接建立域名称

# nisdomainname vbirdnis

2.     开机立即启动此域名

# vi /etc/rc.d/rc.local

# 加入下面这一行:

/bin/nisdomainname vbirdnis

3.     预设在启动 ypbind 时,设定NIS 域名

# vi /etc/sysconfig/network

# 加入下面这一行:

NISDOMAIN=vbirdnis

 

然后则是主机名称与 IP 的对应配置文件,非常重要!

# vi /etc/hosts

192.168.1.1    master.figo.com

192.168.1.50   slave.figo.com

192.168.1.100  client.figo.com

这样就OK!继续下一步。

l       启动 ypbind 来连结至 NIS server

要启动ypbind 必须要设定很多的配置文件,实在很麻烦~不过不要紧, RHEL4 提供给我们一个工具『authconfig』, 通过这个工具我们可以很快的将 ypbind 设定起来。你只要在终端机环境下执行 authconfig 命令就能够设定了。设定的方式如下所示:

系统原本就会有 MD5 及 Shadow 的加密编码,您只要选择上图的 NIS 项目,然后按下 Next 便进入到如下所示画面:



 

在你输入了正确的 NIS 域名称 (Domain) 以及正确的主机名称 (就是主控主机) ,并且按下 OK 后,你的RHEL4 就会自动的帮你启动 portmap 以及ypbind 这两个程序, 同时还会自动的使用 chkconfig 的功能帮您在开机时自动启动portmap 及 ypbind 。这样你就启动了 ypbind !很简单吧!

  如果你真的想要手动处理的话,那么你必须要手动的修改下面这些文件:

/etc/nsswitch.conf (修改许多主机验证功能的顺序)

/etc/sysconfig/authconfig(RHEL4 的认证机制)

/etc/pam.d/system-auth (许多登入所需要的 PAM 认证过程)

/etc/yp.conf (即是ypbind 的配置文件)

 

事实上, authconfig 命令也是在处理这些文件。 我们就来谈一谈这个小细节。

1.     /etc/nsswitch.conf

# vi /etc/nsswitch.conf

# 这个文件的内容有相当多,不过如果你只想要进行登入验证,可以这样:

passwd:     files

shadow:     files

group:      files

hosts:      files

# 只要加入 nis 即可!这几个设置的意义是:

# 1. passwd: 就是使用者相关信息查找,分别为 /etc/passwd, nis

# 2. shadow: 就是使用者密码的查找, /etc/shadow, nis

# 3. group:  就是使用者的群组信息查找, /etc/group, nis

# 4. hosts:  就是主机名称与IP对应的查找,/etc/hosts, nis 及/etc/resolv.conf

2.     /etc/sysconfig/authconfig

# vi /etc/sysconfig/authconfig

USENIS=no

# 这个文件的内容很好修改!只要将上面 NIS 部分改成yes 即可:

USENIS=yes

3.     /etc/pam.d/system-auth

# vi /etc/pam.d/system-auth

# 这个部分也很重要!且容易忘记!修改 PAM 的配置文件找到如下一行:

password    sufficient   /lib/security/$ISA/pam_unix.so nullok

use_authtok md5 shadow

# 上面可是同一行,将它改成:

password    sufficient   /lib/security/$ISA/pam_unix.so nullok

use_authtok md5 shadow

4.     /etc/yp.conf

# vi /etc/yp.conf

# 这个是 ypbind 的主要配置文件,主要语法是:

# domain [NIS域名]server [主机名称]

# 或者是通过广播,适合用于大网域有多部 NIS 服务器时:

# domain [NIS域名]broadcast

domain figo.com broadcast

这样设置完成后,再启动 ypbind 即可:

# /etc/init.d/portmap start

# /etc/init.d/ypbind start

你可以手动处理,也可以直接使用 authconfig。 这里建议您可以直接使用 authconfig 比较容易些。

另外,那些手动处理的文件当中, /etc/nsswitch.conf 是很重要的,因为它规范了 Linux 本机要使用某些服务时,例如帐号/密码的资料、 主机名称的对应资料、port number 对应服务名称的资料等等,这些资料的搜索顺序!更多的资料请自行进入该文件内查阅。

至于其他两个配置文件, /etc/sysconfig/authconfig, /etc/pam.d/system-auth 则是与使用者帐号的验证有关,这是 RHEL (Red Hat 系统) 所惯用的配置文件,如果没有修改设置的话,那么顺利启动 ypbind也是无法登入的。 这样说,可以了解吧!

NIS client 端的检验:yptest, ypwhich, ypcat

如何确定NIS client 已经连上 NIS server 呢?你可以利用 id 这个指令直接检查 NIS server 有的,但是NIS client 没有的帐号,如果有出现该帐号的相关 UID/GID 信息时,那表示有连接上。 除此之外,我们还可以通过 NIS提供的相关检验功能来检查。下面分别来看一下:

l       功能检验

利用yptest 检验数据库之测试:

直接输入 yptest 即可检查相关的测试资料,如下所示:

# yptest

Test 1: domainname

Configured domainname is"vbirdnis"

Test 2: ypbind

Used

Test 3: yp_match

WARNING: No such key in map (Mappasswd.byname, key nobody)

....中间省略....

Test 8: yp_maplist hosts.bynamegroup.byname passwd.byuid group.bygid

passwd.byname hosts.byaddr ....中间省略....

Test 9: yp_all

....中间省略....

1 tests failed

从这个测试中我们可以发现一些错误,重点在第九个步骤 yp_all 必须要有列出您 NIS server 上面的所有帐号信息,如果有出现帐号相关信息的话,那么应该就算验证成功了!比较有问题的是第三步骤, 他会出现在 passwd.byname 当中找不到nobody的字样。这是因为早期的 nobody 之UID 都设定在 65534 ,但RHEL4 则将 nobody 设定为系统帐号的 99 ,所以不会被记录, 也就出现这一个警告。不过,这个错误是可忽略的。

利用ypwhich 检验数据库数量

单纯使用ypwhich 的时候显示的是『NIS Client 的domain』名称,而当加入 -x 这个参数时, 则是显示『NIS Client 与Server 之间沟通的数据库有哪些?』你可以这样测试:

# ypwhich –x

Use "hosts"    for map "hosts.byname"

Use "group"    for map "group.byname"

Use "passwd"   for map "passwd.byname"

....以下省略....

由上面我们可以很清楚的就看到相关的文件,这些数据库文件则是放置在我的 NIS Server 的/var/yp/vbirdnis/* 里面。

利用ypcat 读取数据库内容

除了yptest 之外,你还可以直接利用 ypcat 读取数据库的内容,一般作法是:

# ypcat [-h nisserver] [数据库名称]

参数:

-h nisserver :如果有设定的话,指向某一部特定的 NIS 服务器,

              如果没有指定的话,就以 ypbind 之设定为主;

数据库名称:亦即在 /var/yp/vbirdnis/ 内的文件名。例如 passwd.byname

范例:读出passwd.byname 的数据库内容

# ypcat passwd.byname

这三个命令在进行 NIS Client 端的检验时,是相当有用的。尤其是刚架设好 NIS Client 时,一定要使用 yptest 去检查看看有没有设置错误。根据屏幕显示的信息去一个一个修改错误才行。

 

l       使用者参数修改:yppasswd, ypchfn, ypchsh

好了,完成了上述的设置后,你的 NIS server/client 的帐号已经同步。不过,还有个挺大的问题,那就是.... 使用者如何在 NIS client 修改他自己的登入参数,例如密码、shell 等等? 因为 NIS client
是借由数据库来取得使用者的帐号密码,那如何在 NIS 客户端处理帐号密码的修改?

这也是为何我们需要在 NIS server 启动yppasswdd 这个服务的主要目的。 因为 yppasswdd 可以接收NIS client 端传来的密码修改,借此而处理 NIS server 的/etc/passwd, /etc/shadow , 然后yppasswdd 还能够重建密码数据库,让 NIS server 同步更新数据库。

那该如何下达命令呢?通过 yppasswd, ypchsh,ypchfn 来处理即可。这三个命令的对应是:

yppasswd :与passwd 命令相同功能;

ypchfn :与chfn 相同功能;

ypchsh :与chsh 相同功能。

因为功能相当,所以这里仅说明一下 yppasswd 而已。假设你已经登入 NIS client 那台主机, 并且是以 nistest 这个使用者登入的,记住,这个使用者相关资料仅在 NIS server 上。 接下来,这个使用者可以下达 yppasswd ,如下所示:

$ yppasswd

Changingaccountinformation for nistest on master.vbirdnis.

Please enter old password: <==这里输入旧密码

Changingpasswordfor nistest on master.vbirdnis.

Pleaseenter new password:  <==这里输入新密码

Pleaseretype new password: <==再输入一遍

Thepasswordhas been changed on master.vbirdnis.

这样就更新了 NIS server 上面的/etc/shadow 以及 /var/yp/vbirdnis/passwd.by* 的数据库, 很简单,一下子就同步化了。不过,如果要让使用者使用 yppasswd 的话,他可能不太能适应, 不要紧,你可以通过修改 alias或者是置换掉/usr/bin/passwd 这个程序即可!

 

l       NIS NFS 的设定与群集电脑运用

不知道您有没有发现一件事情,那就是:我们的 NIS Server 设定的使用者家目录是在 /home 下面,例如 nistest 这个人的家目录在 /home/nistest (这个目录在 master.vbirdnis 这部主机上面才有)。问题是,当我们登入 NIS Client 主机时,那么我们取得的家目录资料还是在 /home/nistest ,不过事实上 NIS Client 主机并没有/home/test 这个目录,也就是说:

nistest 这个使用者是在 NIS server 上面建立的,所以有 /home/nistest 这个目录;

在 NIS Client 上面没有真正的 nistest 这个帐号,因为他是由 NIS server 上面取得的,所以自然也就没有 /home/nistest 这个目录在 NIS client 上面。这样会造成什么问题呢?就是你的 nistest 这个使用者,登入 NIS client 的时候,『会找不到自己的家目录』!真是糟糕~而且,因为我们的 NIS client 可能有很多台,要是每次登入 NIS Clients 主机的时候, 所拥有的家目录都是个别 NIS client 上面的目录,那么就没有达到 NIS 的功能。所以, 如果你需要『同一个帐号登入的每个 NIS Client 所拥有的家目录都是相同的』的一个情况,就可以使用 NFS 来加以设定。详细的 NFS 设置我们之前已经提过了, 这里不在赘言,单纯谈一下简单的设置技巧:

在 NIS Server 上面开放/home 这个目录出来;

在 NIS Client 上面,mount NIS 主机的 /home 到自己的/home 里面去!

如此一来,不论登入哪一台 NIS Server 或client ,使用者都是进入到 NIS Server 的/home 里面的家目录。

事实上,使用者的资料除了 /home 之外,像/var/spool/mail 以及 /var/spool/cron 也都是可能会有资料存放的目录,你的 NFS 主机应该也要提供这两个目录才好。 设定的方法也不难,我们就简单的谈一谈吧!

1.     设置 NIS server 主机的NFS 开放目录:

# vi /etc/exports

/home 192.168.1.0/24(rw,async)

# exportfs –rv

exporting 192.168.1.0/24:/home

# /etc/init.d/nfs start

# chkconfig --level 35 nfs on

2.     设置 NIS Client 的mount 资料

# mount -t nfs -o bg,soft192.168.1.2:/home /home

# 如果这个命令没有问题,可以将他加入 /etc/rc.d/rc.local 中。

这样一来,您的 NIS Clients 就具有和 NIS Server 主机一模一样的家目录。现在您可以立刻登入试试。

事实上,现阶段由于个人电脑的相关设备不但便宜,而且运算效能并不比一般大型电脑慢, 因此很多人就在想:『那我可否将许多个人电脑通过网络串接起来,让好几台个人电脑同步运作一个程序, 那么该程序就能够在很短的时间内运算出结果』呵呵!这就是所谓的群集式个人电脑 (PC cluster) 。

 

命令对应功能

前面总共讲到 NIS master server, NISslave server, NIS client 这三个软件, 偏偏每个软件所需要启动的服务以及可使用的命令都不相同, 所以这里帮大家整理一下几个常见的指令:

NIS Master

所需要启动的服务   ypserv

使用者能够修改密码  yppasswdd

数据库传输服务    ypxfrd、yppush

数据库测试读取

数据库的建立     ypinit –m

 

所需要启动的服务   ypserv、ypbind

使用者能够修改密码  

数据库传输服务    ypxfr

数据库测试读取    yptest、ypwhich、ypcat

数据库的建立     ypinit -s server

 

所需要启动的服务   ypbind

使用者能够修改密码  yppasswd、ypchfn、ypchsn

数据库传输服务    

数据库测试读取    yptest、ypwhich、ypcat

数据库的建立     

 

 

重点回顾

Network Information Service (NIS) 也可以称为Sun Yellow Pages (yp),主要是负责在网域中帮助 NIS Client 端查寻帐号与密码以及其他相关网络参数的服务;

NIS server 其实就是提供本身的 /etc/passwd,/etc/shadow, /etc/group, /etc/hosts 等帐号密码资料,以及相关的网络参数等,以提供网域中 NIS Client 的搜索之用;

NIS 为 server/client 架构,当NIS client 有帐号登入需求时,该主机会 (1)先找自己的 /etc/passwd, (2)再前往NIS server 搜索相关帐号资料。

NIS 使用的软件就是 yp 这个软件,主要分为两部份, ypserv 用在 NIS Server,至于ypbind 与 yp-tools 则用在NIS Client 上面。

为加快 NIS 查询的速度,因此 NIS server 会将本机的帐号文件制成传输较快的数据库文件, 并放置于 /var/yp/(nisdomainname)/ 目录当中;

不论是 NIS 或者是 NFS 都是借由RPC Server 所启用的,因此都可以使用 rpcinfo 来查寻NIS 是否已经启动,以及该 daemon 是否已经向portmapper (RPC server) 注册。

在 NIS Server 的设置中,最重要的一个步骤就是将帐号、密码、网络参数等 ASCII 格式文件转成数据库文件 (database file),以提供 NIS client 的查找。而启动 ASCII 转成 database 的程序可以使用
/usr/lib/yp/ypinit -m 或者到 /var/yp 底下执行make 均可。

NIS client 端的设置中,最重要的为 /etc/nsswitch.conf 及/etc/sysconfig/authconfig 里面的设置,另外, RHEL4 的/etc/pam.d/system-auth 也很重要;

由于 NIS 通常使用于内部网域中,因此 /etc/hosts 这个档案的设定相当重要

在 NIS master/slave server 中,建立数据库的方法为 ypinit -m 及 ypinit -s;

在 NIS master/slave server 中,可以借由ypxfrd/ypxfr 以及 yppush 来进行主动的更新数据库;

若想让使用者在任一部 NIS 管辖的主机登入都可以使用同一份家目录,则需开启 NFS 提供/home 给所有的主机挂载使用;