社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 851阅读
  • 0回复

NIS服务器(三)

楼层直达
级别: 管理员
发帖
27808
飞翔币
1567
威望
888
飞扬币
129967
信誉值
0

 4. /etc/yp.conf
# vi /etc/yp.conf
# 这个是 ypbind 的主要配置文件,主要语法是:
# domain [NIS域名] server [主机名称]
# 或者是通过广播,适合用于大网域有多部 NIS 服务器时:
# domain [NIS域名] broadcast
domain vbirdnis 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 也是无法登入的。 这样说,可以了解吧!
4.3 NIS client 端的检验: yptest, ypwhich, ypcat
  如何确定 NIS client 已经连上 NIS server 呢?你可以利用 id 这个指令直接检查 NIS server 有的,但是 NIS client 没有的帐号,如果有出现该帐号的相关 UID/GID 信息时,那表示有连接上。 除此之外,我们还可以通过 NIS 提供的相关检验功能来检查。下面分别来看一下:
  利用 yptest 检验数据库之测试: 
  直接输入 yptest 即可检查相关的测试资料,如下所示:
# yptest
Test 1: domainname
Configured domainname is "vbirdnis"
Test 2: ypbind
Used NIS server: master.vbirdnis
Test 3: yp_match
WARNING: No such key in map (Map passwd.byname, key nobody)
....中间省略....
Test 8: yp_maplist
hosts.byname
group.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 去检查看看有没有设置错误。根据屏幕显示的信息去一个一个修改错误才行。 
4.4 使用者参数修改: 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
Changing NIS account information for nistest on master.vbirdnis. 
Please enter old password:  <==这里输入旧密码
Changing NIS password for nistest on master.vbirdnis.
Please enter new password:  <==这里输入新密码
Please retype new password: <==再输入一遍
The NIS password has been changed on master.vbirdnis.
  这样就更新了 NIS server 上面的 /etc/shadow 以及 /var/yp/vbirdnis/passwd.by* 的数据库, 很简单,一下子就同步化了。不过,如果要让使用者使用 yppasswd 的话,他可能不太能适应, 不要紧,你可以通过修改 alias 或者是置换掉 /usr/bin/passwd 这个程序即可! 
5、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,soft 192.168.1.2:/home /home
# 如果这个命令没有问题,可以将他加入 /etc/rc.d/rc.local 中。
  这样一来,您的 NIS Clients 就具有和 NIS Server 主机一模一样的家目录。现在您可以立刻登入试试。
  事实上,现阶段由于个人电脑的相关设备不但便宜,而且运算效能并不比一般大型电脑慢, 因此很多人就在想:『那我可否将许多个人电脑通过网络串接起来,让好几台个人电脑同步运作一个程序, 那么该程序就能够在很短的时间内运算出结果』呵呵!这就是所谓的群集式个人电脑 (PC cluster) 。
  要实作 PC cluster 需要很多软件的配合,操作系统也是一个很重要的参数。目前较常使用的当然就是 Linux 。 不过我们知道 Linux 系统的运作需要用到使用者的相关参数,例如 UID, GID 等等,所以, 在 PC cluster 当中的每一台 Linux 的帐号密码以及『文件系统 (filesystem) 』都需要相同才行。 为何档案系统需要相同呢?因为你得要让每部主机都使用到相同的一个程序吧?所以, 这就需要 NIS 与 NFS 的同步配合。
  由于『预测』这个东西越来越重要,比如说气象预报、空气品质预报等等, 而预测需要一个很庞大的模式来进行模拟的工作,这么庞大的模拟工作需要大量的运算, 在学校单位要买一部很贵的大型主机实在很不容易!不过,如果能够串接十部双核心的个人电脑的话, 那么可能只需要不到 20 万便能够组成相当于具有 20 颗 CPU 的大型主机的运算能力了! 所以说,在未来 PC cluster 是一个可以发展的课题。
6、命令对应资料
  前面总共讲到 NIS master server, NIS slave server, NIS client 这三个软件, 偏偏每个软件所需要启动的服务以及可使用的命令都不相同, 所以这里帮大家整理一下几个常见的指令:
  
  NIS Master
  所需要启动的服务   ypserv
  使用者能够修改密码  yppasswdd
  数据库传输服务    ypxfrd、yppush
  数据库测试读取
  数据库的建立     ypinit -m
  NIS slave
  所需要启动的服务   ypserv、ypbind
  使用者能够修改密码  
  数据库传输服务    ypxfr
  数据库测试读取    yptest、ypwhich、ypcat
  数据库的建立     ypinit -s server
  NIS client
  所需要启动的服务   ypbind
  使用者能够修改密码  yppasswd、ypchfn、ypchsn
  数据库传输服务    
  数据库测试读取    yptest、ypwhich、ypcat
  数据库的建立     
7、重点回顾
  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 给所有的主机挂载使用; 
8、参考资料
  Study Area 之 NIS 服务器架设:http://www.study-area.org/linux/servers/linux_nfs.htm 
  NIS 官方网站:http://www.linux-nis.org/ 
  NIS HOW-TO:http://www.linux-nis.org/nis-howto/HOWTO/index.html 
  NIS 服务器:http://linux.vbird.org/linux_server/0430nis.php