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

NIS服务器(一)

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

1. 准备工作2. NIS 的由来与功能
  2.1 NIS 的主要功能
  2.2 NIS 的运作流程
3. NIS server 端的设定
  3.1 所需要的软件
  3.2 NIS 的软件结构
  3.3 一个实作案例
  3.4 NIS master 的设定与启动
  3.5 NIS slave 的设定与启动 (optional)
  3.6 防火墙设置
4. NIS client 端的设定
  4.1 NIS client 所需软件与软件结构
  4.2 NIS client 的设定与启动
  4.3 NIS client 端的检验: yptest, ypwhich, ypcat
  4.4 使用者参数修改: yppasswd, ypchfn, ypchsh
5. NIS 与 NFS 的设定与群集电脑运用
6. 命令对应资料
7. 重点回顾
8. 参考资料
1、准备工作
  NIS 最大的用途在于提供客户端的使用者相关参数查询,举例来说,使用者的帐号、密码、UID、家目录、shell 等等的,都可以通过 NIS 服务器来查询的。但 NIS 所能提供的也就是这样了,他并没有办法提供使用者家目录的空间, 因此,一般在高效能运算电脑当中,如果想要让所有的机器都拥有相同的帐号密码,通常使用 NIS 提供身份验证,配合 NFS 提供所需要的磁盘空间。 开始前,你最好知道:
  了解网络基础,防火墙与关闭 SELinux 模块等等。 
  一定要认识 NFS 服务器; 
  需要了解 RPC; 
  需要了解使用者帐号相关知识 
  建立 NIS 数据库会使用到 make/Makefile 功能 
2、NIS 的由来与功能
  在一个大型的网络当中,如果有多部 Linux 主机,万一要每部主机都需要设定相同的帐号与密码时,还真是麻烦。 此时,如果能够有一部主控服务器 (master server) 来管理网络中所有主机的帐号, 当其他的主机有使用者登入的需求时,才到这部主控服务器上面要求相关的帐号、密码等使用者资料, 如此一来,如果想要增加、修改、删除使用者资料,只要到这部主控服务器上面处理即可, 这样就能够降低重复设定使用者帐号的步骤。
  这样的功能有很多的服务器软件可以达成,这里我们要介绍的则是 Network Information Services (NIS server) 这个服务器软件。
  下面就先来谈一谈 NIS 的相关功能。
2.1 NIS 的主要功能
  通常我们都会建议,一部 Linux 主机的功能越简单越好,也就是说,一部 Linux 就专门进行一项服务。这样有许多的好处,这包含功能简单所以系统资源得以完整运用, 并且在发生入侵或者是系统产生状况的时候,也比较容易追查问题所在。因此,一个公司内部常常会有好几部 Linux 主机,有的专门负责 WWW 、有的专门负责 Mail 、有的专门负责 SAMBA 等等的服务。
  不过,这样虽然有分散风险、容易追踪问题的好处,但是,由于是同一个公司内的多部主机,所以事实上所有的 Linux 主机的帐号与密码都是一样的!那如果公司里面有 100 人的话, 我们就需要针对这么多部的主机去设定帐号密码。而且,如果未来还有新进员工, 那么就设定密码就会使系统管理员抓狂。
  这个时候,让我们换一个角度来思考:如果我设计了一部专门管理帐号与密码的主机,而其他的 Linux 主机当有客户端要登入的时候,就必须要到这部管理密码的主机来查寻使用者的帐号与密码, 如此一来,我要管理所有的 Linux 主机的帐号与密码,只要到那部主要主机上面去进行设定即可! 这就是 Network Information Service, NIS 主机的主要功能。
  事实上,Network Information Service 最早应该是称为 Sun Yellow Pages (简称 yp),也就是 Sun 这家公司出的一个名为 Yellow Pages 的服务器软件,请注意, NIS 与 YP 是一模一样的。这个 Yellow Pages 名字取的真是好!怎么说呢?知道黄页 (Yellow Pages) 是什么吗?就是我们家里的电话簿, 今天如果你要查寻一家厂商的电话号码,通常就是直接去查黄页上面的记录来取得电话号码。而这个 NIS 也一样,当使用者要登入时, Linux 系统就会到 NIS 主机上面去找寻这个使用的帐号与密码信息来加以比对, 以提供使用者登入的验证。 
  那么 NIS 主机提供了哪些信息?还记得帐号与密码放置在哪里吗?NIS 就是提供这些资料。 主要有下面这些基本的资料提供给有登入需求的主机:
  /etc/passwd
  提供使用者帐号、UID、GID、家目录所在、Shell 等等 
  /etc/group
  提供群组资料以及 GID 的对应,还有该群组的加入人员
  /etc/hosts
  主机名称与IP的对应,常用于 private IP 的主机名称对应
  /etc/services
  每一种服务 (daemons) 所对应的端口 (port number) 
  /etc/protocols
  基础的TCP/IP协议,如 TCP, UDP, ICMP等
  /etc/netgroup
  网络群组的定义与使用 (NIS 可能会需要)
  /etc/rpc
  每种 RPC 服务器所对应的程序号码
  /var/yp/ypservers
  NIS 服务器所提供的资料文件 
  至少可以提供上述这些功能,当然,你也可以自行定义需要哪些资料文件。
2.2 NIS 的运作流程
  由于 NIS 服务器主要是提供使用者登入的信息给客户端主机来查询用,所以,NIS 服务器所提供的资料当然就需要用到传输与读写比较快速的 "数据库" 文件系统, 而不是传统的纯文字资料。为了要达到这个目的,所以 NIS 服务器就必须要将前一小节提到的那些文件制作成为数据库文件, 然后使用网络通讯协议让客户端主机来查询。至于所使用的通讯协定与 NFS 相同,都使用远程过程调用 (RPC)。
  此外,如果在一个大型的网络里面,所有的 Linux 主机都向同一部 NIS 服务器要求使用者信息时, 这部 NIS 服务器的负载 (loading) 可能会过大。甚至如果考虑到资料使用的风险, 要是这单一的一部 NIS 服务器死机时,那其他的 Linux 主机都不能让users 登入。 所以,在较为大型的企业环境当中, NIS 服务器可以使用 master/slave (主控/次要服务器) 架构。
  Master NIS 服务器提供系统管理者制作的数据库, slave 则取得来自 master 的数据库资料,并借以提供其他客户端的查询。 客户端可以向整个网络要求使用者资料的回应,master 与 slave 皆可回答, 由于 slave 的资料来自于 master ,所以使用者帐号资料本身是同步的。 如此一方面可以分散 NIS 服务器的负载, 而且也可以避免因 NIS 服务器死机而导致的无法登入的风险。
  图一、NIS 的运作流程
  整个 NIS 的运作就如同上图,首先必须要有 NIS server 的存在,之后才会有 NIS Client 的存在。 那么当使用者有登入的需求时,整个 NIS 的运作程序是:
  关于 NIS Server (master/slave) 的运作程序: 
  1 NIS Master 先将本身的帐号密码相关信息制作成为数据库文件; 
  2 NIS Master 可以主动的告知 NIS slave server 来更新; 
  3 NIS slave 亦可主动的前往 NIS master server 取得更新后的数据库文件; 
  4 若有帐号密码的变动时,需要重新制作 database 与重新同步化 master/slave。 
  关于当 NIS Client 有任何登入查询的请求时: 
 
  NIS client 若有登入请求时,会先查询其本机的 /etc/passwd, /etc/shadow 等文件; 
  若在 NIS Client 本机找不到相关的帐号资料,才开始向整个 NIS 网络的主机广播查询; 
  每部 NIS server (不论 master/slave) 都可以回应,基本上是『先回应者优先』。 
  从上面的流程当中,你会发现 NIS client 还是会先针对本机的帐号资料进行查询, 查不到才到 NIS server 上寻找。因此,如果你的 NIS client 本身就有很多一般使用者的帐号时, 那跟 NIS server 所提供的帐号就可能产生一定程度的差异。 所以,一般来说,在这样的环境下,NIS client 或 NIS slave server 会主动去掉本机本身的一般使用者帐号,仅会保留系统所需要的 root 及系统所需帐号而已。 如此一来,一般使用者才都会经由 NIS master server 所控制。
  根据上面图一的说明,我们的 NIS 环境大致上需要设定的基本有:
  NIS Master server :将文件建置成数据库,并提供 slave server 来更新; 
  NIS Slave server :以 Master server 的数据库作为本身的数据库来源; 
  NIS client :向 master/server 要求登入者的验证资料。
3、NIS Server 端的设定
  NIS 服务器端主要在于提供数据库给客户端作为验证之用,并且服务器端因为数据库的来源又可分为 master/slave 两大类。下面我们将会介绍这两种服务器的安装方式。
3.1 所需要的软件
  由于 NIS 服务器需要使用 RPC 协定,且 NIS 服务器同时也可以当成客户端, 因此它需要的软件就有下面几个:
  yp-tools :提供 NIS 相关的查找命令功能 
  ypbind   :提供 NIS Client 端的设置软件 
  ypserv   :提供 NIS Server 端的设置软件 
  portmap  :RPC 需要的 
  如果你是使用 Red Hat 的系统,例如我们的 RHEL4 的话,那你可以利用『 rpm -qa | grep yp 』 来检查是否有安装上述的软件。一般来说 yp-tools, ypbind 都会主动的安装,不过 ypserv 可能不会安装。 此时你可以使用『 rpm -ivh ypserv* 』来安装。
3.2 NIS 的软件结构
  在 NIS 服务器上最重要的就是 ypserv 这个软件了,而 ypserv 主要则是提供了下面这些重要资料:
  配置文件方面: 
  /etc/ypserv.conf:这是最主要的配置文件, 可以规范 NIS 客户端是否可登入的权限。 
  /etc/hosts:非常重要!每一部主机都需要记录才行。 
  /etc/netgroup:设定信任的主机与网域; 
  /var/yp/Makefile:与建立数据库有关的配置文件; 
  /etc/sysconfig/network:可以在这个文件内指定 NIS 的域名 (nisdomainname)。 
  服务器提供的主要服务方面: 
  /usr/sbin/ypserv:就是 NIS 服务器提供的主要服务; 
  /usr/sbin/rpc.ypxfrd:用来作为 master/slave 主机之间传输数据库的服务; 
  /usr/sbin/rpc.yppasswdd:提供额外的 NIS 客户端之使用者密码修改服务, 通过这个服务, NIS 客户端可以直接修改在 NIS 服务器上的密码。相关的使用程序则是 yppasswd 命令; 
  与数据库有关的指令方面: 
  /usr/sbin/yppush:master 主机将数据库直接送至 slave 的命令; 
  /usr/lib/yp/ypinit:建立数据库的命令; 
  /usr/lib/yp/ypxfr:传送数据库的命令,在该目录下尚有 ypxfr_1perday, ypxfr_1perhour, ypxfr_2perday 等等。 
3.3 一个实作案例
  如果您有观察过图一的话,你会发现到我们的 NIS 需要设置 Master/Slave 及 client 等, 这里提供一个案例,里面就包括这三个软件。如果你的网络是比较小的环境, 那下面提供的 NIS slave server 你可以略过,在这里的假设是这样的:
  NIS 的域名为 vbirdnis 
  整个内部的信任网段为 192.168.1.0/24 
  NIS master server 的 IP 为 192.168.1.2 ,主机名称为 master.vbirdnis 
  NIS slave server 的 IP 为 192.168.1.10,主机名称为 slave.vbirdnis 
  NIS client 的 IP 为 192.168.1.100,主机名称为 client.vbirdnis 
3.4 NIS master 的设置与启动
  NIS 的设置很简单,首先,你必须要在 NIS master 这部服务器上面搞定你的帐号与密码相关资料, 这包括 /etc/passwd, /etc/shadow, /etc/hosts, /etc/group .... 等等,都得要先搞定才行! 等到搞定之后你就可以继续 NIS 服务器的设定了:
  设定 NIS 的域名 (NIS domain name) 
  因为所有的 NIS server/client 都需要设定 NIS 域名称。设置的方式很简单, 直接以 nisdomainname 这个命令来设置即可。(其实 nisdomainname 与 ypdomainname 及 domainname 都是一模一样的命令。你只要记住一个命令名称即可。请自行 man domainname )
# nisdomainname [NIS 域名称]
参数:
若没有加上域名称,则会显示出目前的 NIS 域;
# nisdomainname vbirdnis
# nisdomainname
vbirdnis  ,,
主机,使用者帐号,域名
  事实上,如果这个文件是『空白』的,那么代表着『全部的主机、帐号与域名称都接受』的意思,因为我们已经在 /etc/ypserv.conf 里头设置好了关于安全的项目,所以这个文件只要建立即可(缺省是不存在的):
# touch /etc/netgroup
  启动所有相关的服务 
  这包括 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
  program 100004 version 1 ready and waiting
  program 100004 version 2 ready and waiting
  要出现上述的画面才表示正确的启动了 ypserv。 若需要开机立即启动 ypserv ,请使用 chkconfig 来处理。
 
级别: 优秀会员
发帖
21945
飞翔币
597
威望
122236
飞扬币
30003
信誉值
0

只看该作者 1 发表于: 2008-12-01
过来看一下
级别: 光盘硕士
发帖
29692
飞翔币
3980
威望
11672
飞扬币
359
信誉值
0

只看该作者 2 发表于: 2008-12-04
这个系统以前曾有了解,现在很久不接触了