⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0430nis.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
	在一个大型的网域当中,如果有多部 Linux 主机,万一要每部主机都需要设定相同的帐号与密码时,还真是棉唆。
	此时,如果能够有一部主控伺服器 (master server) 来管理网域中所有主机的帐号,
	当其他的主机有使用者登入的需求时,才到这部主控伺服器上面要求相关的帐号、密码等使用者资讯资料,
	如此一来,如果想要增加、修改、删除使用者资料,只要到这部主控伺服器上面处理即可,
	这样就能够降低重复设定使用者帐号的步骤了。<br /><br />

	这样的功能有很多的伺服器软体可以达成,这里我们要介绍的则是 <span class=text_import2>Network Information 
	Services (NIS server)</span> 这个伺服器软体喔!底下就先来谈一谈这个 NIS 的相关功能吧!<br /><br />

	<hr /><a NAME="whatisnis_use"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">NIS 的主要功能</span><br />
	<div class=block2>
		通常我们都会建议,<span class=text_import2>一部 Linux 主机的功能越简单越好</span>,也就是说,一部 
		Linux 就专门进行一项服务。这样有许多的好处,这包含功能简单所以系统资源得以完整运用,
		并且在发生入侵或者是系统产生状况的时候,也比较容易追查问题所在。因此,一个公司内部常常会有好几部 
		Linux 主机,有的专门负责 WWW 、有的专门负责 Mail 、有的专门负责 SAMBA 等等的服务。<br /><br />

		不过,这样虽然有分散风险、容易追踪问题的好处,但是,由于是同一个公司内的多部主机,所以事实上所有的 
		Linux 主机的帐号与密码都是一样的!哇!那如果公司里面有 100 的人的话,
		我们就需要针对这么多部的主机去设定帐号密码了!而且,如果未来还有新进员工的话,
		那么光是设定密码就会使系统管理员抓狂了!<br /><br />

		这个时候,让我们换一个角度来思考∶如果我设计了一部专门管理帐号与密码的主机,而其他的 
		Linux 主机当有用户端要登入的时候,就必须要到这部管理密码的主机来查寻使用者的帐号与密码,
		如此一来,我要管理所有的 Linux 主机的帐号与密码,只要到那部主要主机上面去进行设定即可!
		包括新进人员的设定,反正其他的 Linux 主机都是向他查寻的嘛!没错!真是好~这个就是 
		Network Information Service, NIS 主机的主要功能啦!<br /><br />

		事实上,<span class=text_import2>Network Information Service 最早应该是称为 Sun Yellow Pages 
		(简称 yp)</span>,也就是 Sun 这家公司出的一个名为 Yellow Pages 的伺服器软体,请注意, 
		<span class=text_import2>NIS 与 YP 是一模一样的咚咚喔</span>!这个 Yellow Pages 
		名字取的真是好!怎么说呢?知道黄页 (Yellow Pages) 是什么吗?就是我们家里的电话簿啦!
		今天如果你要查寻一家厂商的电话号码,通常就是直接去查黄页上面的纪录来取得电话号码啊!而这个 NIS 
		也一样,当使用者要登入时, Linux 系统就会到 NIS 主机上面去找寻这个使用的帐号与密码资讯来加以比对,
		以提供使用者登入之用的检验啊!很棒吧! ^_^ <br /><br />

		那么 NIS 主机提供了哪些资讯呢?还记得帐号与密码放置在哪里吧?NIS 就是提供那些资料啦!
		主要有底下这些基本的资料提供给有登入需求的主机喔∶<br /><br />

<table width=90% border=1 cellspacing=0 cellpadding=3 bgcolor=lightyellow>
<tr bgcolor=lightblue align=center><td width=130>伺服器端档案名称</td><td>档案内容</td></tr>
<tr><td>/etc/passwd</td><td>提供使用者帐号、UID、GID、家目录所在、Shell 等等</td></tr>
<tr><td>/etc/group</td><td>提供群组资料以及 GID 的对应,还有该群组的加入人员</td></tr>
<tr><td>/etc/hosts</td><td>主机名称与 IP 的对应,常用于 private IP 的主机名称对应</td></tr>
<tr><td>/etc/services</td><td>每一种服务 (daemons) 所对应的埠口 (port number)</td></tr>
<tr><td>/etc/protocols</td><td>基础的 TCP/IP 封包协定,如 TCP, UDP, ICMP 等</td></tr>
<tr><td>/etc/netgroup</td><td>网路群组的定义与使用 (NIS 可能会需要)</td></tr>
<tr><td>/etc/rpc</td><td>每种 RPC 伺服器所对应的程式号码</td></tr>
<tr><td>/var/yp/ypservers</td><td>NIS 伺服器所提供的资料库</td></tr>
</table><br />

		至少可以提供上述这些功能,当然啦,你也可以自行定义哪些资料库需要,哪些资料库不需要!<br /><br />
	</div>

	<hr /><a NAME="whatisnis_process"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">NIS 的运作流程</span><br />
	<div class=block2>
		由于 NIS 伺服器主要是提供使用者登入的资讯给用户端主机来查询之用,所以,
		<span class=text_import2>NIS 伺服器所提供的资料当然就需要用到传输与读写比较快速的 "资料库" 档案系统,
		而不是传统的纯文字资料</span>。为了要达到这个目的,所以 <span class=text_import2>NIS 
		伺服器就必须要将前一小节提到的那些档案制作成为资料库档案</span>,
		然后使用网路通讯协定让用户端主机来查询棉。至于所使用的通讯协定与前一章的
		<a href="0330nfs.php">NFS</a> 相同,都使用远端程序呼叫 (RPC) 这个玩意儿喔!<br /><br />

		此外,如果在一个很大型的网域里面,万一所有的 Linux 主机都向同一部 NIS 伺服器要求使用者资料时,
		这部 NIS 伺服器的负载 (loading) 可能会过大。甚至如果考虑到资料使用的风险,
		要是这单一的一部 NIS 伺服器挂点时,那其他的 Linux 主机还要不要让 users 登入啊?
		所以棉,在较为大型的企业环境当中, <span class=text_import2>NIS 伺服器可以使用 master/slave 
		(主控/次要伺服器) 架构的</span>。<br /><br />

		Master NIS 伺服器提供系统管理者制作的资料库, slave 则取得来自 master 的资料,并藉以提供其他用户端的查询。
		用户端可以向整个网域要求使用者资料的回应,master 与 slave 皆可回答,
		由于 slave 的资料来自于 master ,所以使用者帐号资料本身是同步的!
		如此一方面可以分散 NIS 伺服器的负载,
		而且也可以避免因 NIS 伺服器挂点而导致的无法登入的风险。<br /><br />


		<a name="fig_01"></a><center><img src="0430nis/nis_run.png"
		title="NIS 的运作流程"
		alt="NIS 的运作流程"><br />
		图一、NIS 的运作流程</center><br />

		整个 NIS 的运作就如同上图,首先必须要有 NIS server 的存在,之后才会有 NIS Client 的存在。
		那么当使用者有登入的需求时,整个 NIS 的运作程序是∶<br />

		<ul>
		<li>关于 NIS Server (master/slave) 的运作程序∶</li>
		<ol><span class=text_import2>
		<li>NIS Master 先将本身的帐号密码相关档案制作成为资料库档案;
		<li>NIS Master 可以主动的告知 NIS slave server 来更新;
		<li>NIS slave 亦可主动的前往 NIS master server 取得更新后的资料库档案;
		<li>若有帐号密码的异动时,需要重新制作 database  与重新同步化 master/slave。
		</span></ol><br />

		<li>关于当 NIS Client 有任何登入查询的需求时∶
		<ol><span class=text_import2>
		<li>NIS client 若有登入需求时,会先查询其本机的 /etc/passwd, /etc/shadow 等档案;
		<li>若在 NIS Client 本机找不到相关的帐号资料,才开始向整个 NIS 网域的主机广播查询;
		<li>每部 NIS server (不论 master/slave) 都可以回应,基本上是『先回应者优先』。
		</span></ol>
		</ul>

		从上面的流程当中,你会发现 NIS client 还是会先针对本机的帐号资料进行查询,
		查不到才到 NIS server  上头寻找。因此,如果你的 NIS client 本身就有很多一般使用者的帐号时,
		那跟 NIS server 所提供的帐号就可能产生一定程度的差异棉!
		所以,一般来说,在这样的环境下,<span class=text_import2>NIS client 或 NIS slave server 
		会主动拿掉本机本身的一般使用者帐号,仅会保留系统所需要的 root 及系统所需帐号而已。</span>
		如此一来,一般使用者才都会经由 NIS master server 所控管啊! ^_^<br /><br />

		根据上面<a href="#fig_01">图一</a>的说明,我们的 NIS 环境大致上需要设定的基本元件就有∶<br />
		<ul><span class=text_import2>
		<li>NIS Master server ∶将档案建置成资料库,并提供 slave server 来更新;
		<li>NIS Slave server ∶以 Master server 的资料库作为本身的资料库来源;
		<li>NIS client ∶向 master/server 要求登入者的验证资料。
		</span></ul>

		就让我们开始来玩一玩这个 NIS 的设定吧!<br />
	</div>
</div>


<hr /><a NAME="nis_server"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">NIS Server 端的设定</span><br />
<div class=block1>
	NIS 伺服器端主要在于提供资料库给用户端作为验证之用,并且伺服器端因为资料库的来源又可分为
	master/slave 两大类。底下我们将会介绍这两种伺服器的安装方式哩!<br /><br />

	<hr /><a NAME="nis_server_pack"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">所需要的套件</span><br />
	<div class=block2>
		由于 NIS 伺服器需要使用 RPC 协定,且 NIS 伺服器同时也可以当成用户端,
		因此他需要的套件就有底下这几个∶<br />
		<ul><span class=text_import2><font face="细明体">
		<li>yp-tools ∶提供 NIS 相关的查寻指令功能
		<li>ypbind &nbsp;&nbsp;∶提供 NIS Client 端的设定套件
		<li>ypserv &nbsp;&nbsp;∶提供 NIS Server 端的设定套件
		<li>portmap &nbsp;∶就是 RPC 一定需要的资料啊!
		</font></span></ul>
		如果你是使用 Red Hat 的系统,例如我们的 CentOS 4.x 的话,那你可以利用『 rpm -qa | grep '^yp' 』
		来检查是否有安装上述的套件。一般来说 yp-tools, ypbind 都会主动的安装,不过 ypserv 可能就不会安装了。
		此时建议你直接使用『 <a href="0220upgrade.php#yum">yum</a> install 
		ypserv 』来安装吧!立刻就装好了。底下立刻来设定棉!<br /><br />
	</div>

	<hr /><a NAME="nis_server_nis"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">NIS 的套件结构</span><br />
	<div class=block2>
		在 NIS 伺服器上最重要的就是 ypserv 这个套件了,而 ypserv 主要则是提供了底下这些重要资料∶<br /><br />

		设定档方面∶
		<ul>
		<li><span class=text_import1>/etc/ypserv.conf</span>∶这是最主要的设定档,
			可以规范 NIS 用户端是否可登入的权限。
		<li><span class=text_import1>/etc/hosts</span>∶非常重要!每一部主机都需要记录才行!!
		<li><span class=text_import1>/etc/netgroup</span>∶设定信任的主机与网域;
		<li><span class=text_import1>/var/yp/Makefile</span>∶与建立资料库有关的动作设定档;
		<li><span class=text_import1>/etc/sysconfig/network</span>∶可以在这个档案内指定 NIS 的网域 (nisdomainname)。
		</ul>

		伺服器提供的主要服务方面∶
		<ul>
		<li><span class=text_import1>/usr/sbin/ypserv</span>∶就是 NIS 伺服器的主要提供服务;
		<li><span class=text_import1>/usr/sbin/rpc.ypxfrd</span>∶用来作为 master/slave 主机之间传输资料库的服务;
		<li><span class=text_import1>/usr/sbin/rpc.yppasswdd</span>∶提供额外的 NIS 用户端之使用者密码修改服务,
		透过这个服务, NIS 用户端可以直接修改在 NIS 伺服器上的密码。相关的使用程式则是 yppasswd 指令;
		</ul>

		与资料库有关的指令方面∶
		<ul>
		<li><span class=text_import1>/usr/sbin/yppush</span>∶master 主机将资料库直接送至 slave 的指令;
		<li><span class=text_import1>/usr/lib/yp/ypinit</span>∶建立资料库的指令,非常常用;
		<li><span class=text_import1>/usr/lib/yp/ypxfr</span>∶传送资料库的指令,在该目录下尚有
			ypxfr_1perday, ypxfr_1perhour, ypxfr_2perday 等等。
		</ul>
	</div>

	<hr /><a NAME="nis_server_case"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">一个实作案例</span><br />
	<div class=block2>
		如果您有观察过<a href="#fig_01">图一</a>的话,你会发现到我们的 NIS 需要设定 Master/Slave 及 client 等,
		鸟哥这里提供一个案例,里头就包括这三个元件啦!不过如果你的网域是比较小的环境,
		那底下提供的 NIS slave server 你可以略过不看!鸟哥在这里的假设是这样的∶<br />

		<ul><span class=text_import2>
		<li>NIS 的网域名称为 vbirdnis
		<li>整个内部的信任网域为 192.168.1.0/24
		<li>NIS master server 的 IP 为 192.168.1.2 ,主机名称为 master.vbirdnis
		<li>NIS slave server  的 IP 为 192.168.1.10,主机名称为 slave.vbirdnis
		<li>NIS client 的 IP 为 192.168.1.100,主机名称为 client.vbirdnis
		</span></ul>

		底下我们就一个一个来设定吧!<br /><br />
	</div>

	<hr /><a NAME="nis_server_master"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">NIS master 的设定与启动</span><br />
	<div class=block2>
		NIS 的设定真是很简单,首先,你必须要在 NIS master 这部伺服器上面搞定你的帐号与密码相关资料,
		这包括 /etc/passwd, /etc/shadow, /etc/hosts, /etc/group .... 等等,都得要先搞定才行!
		详细的帐号相关资料请参考<a href="../linux_basic/0410accountmanager.php">基础篇的帐号管理</a>章节。
		等到搞定之后你就可以继续 NIS 伺服器的设定了∶<br /><br />

		<hr /><li><span class=text_import1>设定 NIS 的网域名称 (NIS domain name)</span></li>
		<div class=block2>
		因为所有的 NIS server/client 都需要设定 NIS 领域名称才行,所以就设定吧!设定的方式很简单,
		直接以 nisdomainname 这个指令来下达即可。(其实 nisdomainname 与 ypdomainname 及 domainname 
		都是一模一样的指令啦!你只要记住一个指令名称即可。请自行 man domainname 吧!)<br />

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>nisdomainname [NIS 领域名称]</span>
<span class=term_say>参数∶
若没有加上领域名称,则会显示出目前的 NIS 领域;</span>

[root@linux ~]# <span class=term_command>nisdomainname vbirdnis</span>
[root@linux ~]# <span class=term_command>nisdomainname</span>
vbirdnis  <span class=term_say>&lt;==瞧!已经设定了 NIS 领域名称棉!</span>
</pre></td></tr></table>

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

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/rc.d/rc.local</span>
<span class=term_say># 加入底下这一行∶</span>
<span class=term_write>/bin/nisdomainname vbirdnis</span>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -