发布网友 发布时间:2022-04-23 09:23
共1个回答
热心网友 时间:2023-10-11 06:15
(Network Information Service)
NIS是Sun Microsystem于1985年发布的一项目录服务技术(Diretory Service),用来集中控制几个系统管理数据库的网络用品。NIS简化了UNIX和LINUX桌面客户的管理工作,客户端利用它可以使用中心服务器的管理文件。桌面系统的用户无需建立他们自己的/etc/passwd,他们只简单的使用维护在NIS服务器的文件即可。 提到NIS不得不先说明一下WINDOWS2000的域控制器,在局域网内有一台WIN2000域控制器,下面有一些机器加入到这个域中,在下的机器登录时,有一个选项是选择登入到本机还是登入到域内,登入本地的密码有本机控制,但是如果登入域内,密码由域控制器负责管理。
LINUX也是操作系统,跟WIN2000没有本质的区别,所以仔细读上段话,就能理解NIS是原理是什么样了,这时出现了一个重要的文件/etc/nsswitch.conf 事实上, NIS 的运作流程一点也不困难。一个不是很庞大的网络中,大约会有一部NIS Server ,并且同时有很多部的 NIS Client 。 NIS Server 与 NIS Client 的架构,整体架构有点像底下的图示:
如图示。NIS 提供的 /etc/passwd,/etc/group 以及 /etc/hosts 等 ASCII 格式档案的信息, NIS Server 会将前述几个ASCII 档案内容复制成为 DBM 数据库格式的档案,当用户藉由个人计算机联机到 NISClient主机尝试登入时, NIS Client 将会到 NIS Server 去查寻该用户的账号与密码,以做为用户登入验证的依据。
NIS Server 将自己系统内的 /etc/passwd, /etc/group,/etc/hosts 等制作成为 DBM 的数据库格式档案;
NIS Client 若有用户登入的要求时,会前往 NIS Server搜寻数据库里面数据做为验证用。
每次更动 NIS Server 上面的用户数据时,则 NIS Server需要重新制作 DBM 数据库档案!
需要设定的有:NIS Server 端;
NIS Client 端。 NIS Server 在整个网域之中,一般比较小型的网域常见的方法。万一,如果网域里面有几乎100 部以上的主机,这个时候,只有一部NIS Server 可能无法提供快速的数据查寻与响应的状态!这时需要 NIS Sever的 master 与 slave 的架构。
slave藉由将来自 master主机的数据加以更新到自己的数据库当中,并且提供与master 相同的查寻功能!这个 NIS 的 master 与 slave 架构则完全相同。NIS Server 的 master 先将自己的账号、密码相关档案制作成为数据库档案(databasefile);NIS Server 的 master 将自己的数据库档案传送到 slave上面;NIS Server 的 slave 接收来自‘信任的 NIS Server master主机’的数据后,更新自己的数据库,使自己的数据库与 master 主机的数据同步;网域当中的所有 NIS Client 查寻 NIS Server 时,会找寻‘最先回应的那一部NIS 主机的数据库内容’。
所以,我们可以知道的是,NIS 的 master 与 slave 架构主要在分散查寻 NIS时候的主机负荷,因此,除非您的网域真的很大,否则是没有必要架设 NIS Slave与 master 的架构的啦!底下我们没有架设 master 与 slave 。只有一部主要的master 而已。 NIS是一个客户机/服务器系统,ypbind是定义NIS服务器的客户端进程。一旦确定了服务器位置,客户机绑定到了服务器上,所以客户端的住处查询都发往服务器。ypserv是回答客户端查询的服务器进程。
基本上, NIS 建议直接使用原版光盘上面给我们的 RPM 来安装即可。
yp-tools :提供 NIS 相关的查寻指令功能
ypbind :提供 NISClient 端的设定套件
ypserv :提供 NISServer 端的设定套件
portmap :就是 RPM 一定需要的数据啊! NIS Server 主要以 ypserv 这个套件提供的数据来进行设定,主要内容有:
/etc/ypserv.conf :就是主要的设定档了
/usr/sbin/ypserv :主要的服务(daemon)执行档
/usr/sbin/rpc.yppasswdd:RPC的服务啰!
/usr/sbin/rpc.ypxfrd :同样的, RPC 的服务啰!
/usr/lib/yp/ypinit :建立 NIS 数据库的执行程序
所以,事实上我们最重要的就是设定 ypserv.conf 这个档案而已啦!至于 RPC的设定,就直接启动他即可!另外,还有 yp-tools 会提供的相关数据喔:
/usr/bin/yppasswd :更改你在NIS database (NIS Server 所制作的数据库) 的密码
/usr/bin/ypchsh :同上,但是是更改shell
/usr/bin/ypchfn :同上,但是是更改一些使用者的讯息! 进程ypbind这客记机的NIS域定位服务器,NIS域包括所有NIS服务器和客户机。它与DNS不同,尽管有些管理员将NIS域名等同于DNS的域名。NIS域名只对那NIS服务器和客户机起作用。
有两种方式配置NIS域名:
nisdomainname 定义显示NIS域名
yp.conf文件配置NIS域名。
#nisdomainname gogo
#nisdomainname
gogo
默认地,ypbind使用nisdomainname命令返回NIS域名,向NIS服务器发出请求时在网络内广播该地址。
yp.conf文件
/etc/yp.conf定义了yp.conf配置。如果找不到yp.conf文件,ypconf进程使用nisdomainname 命令返回的NIS域名,广播定位NIS服务器。ypbind将绑定到第一个相应请求的服务器上。
ypserver hostname
domain nisdomain broadcast | server hostname
========
hostname,nisdomain字符为变量。
使用ypserver配置选项为客户机指定服务器。yp.conf文件包括ypserver选项时,客户机使用命令nisdomainname返回的NIS域名,向ypserver命令的hostname字段指定的服务器发出请求。/etc/hosts文件中必须包含该主机的IP地址,还记得我说过什么了吗,DNS是取代的HOSTS的,在DNS中设定也是可以的。ypserver选项强制客户机连接到特定的服务器上。
在yp.conf文件中使用domain选项定义了NIS域名,指出客户机是广播定位还是直接向服务器发送请求。
example:
#/etc/yp.conf
#
domain first server jh
=========
first作为域名,jh是这个域的服务器 jh在hosts中必须有相对应的IP地址
或者jh IN A 192.168.1.1还记得这条指令是干什么的吗?
------------------------
创建NIS服务器
安装ypserv
rpm -ivh ypserv*
-----------
NIS服务器提供的数据库,称为NIS映射表.
创建独立服务器
如果用户只有一个NIS域服务器,建立独立服务器,如果用户NIS域中有多个服务器,就需要选择其中一个作为该域的主服务器。其他作为从服务器。
用户可以使用make命令初始化独立服务器,建立NIS映射表,文件/var/yp/Makefile包含了创建数据库的命令。
example:
#nsidomainname first
#cd /var/yp
#make
gamke[1]:Entering directory '/var/yp/terns'
Updateing passd.byname......
Updateing passwd.byuid...... 使用ypinit命令初始化主服务器,常见NIS映射表。默认地.ypinit同make命令给出的操作一样。要创建相对于从服务器的主服务器,用户需要编辑/var/yp/Makefile文件。在Makefile文件中找到NOPUSH设置为NOPUSH=false.
修改后,运行ypinit -m
exmpale:
#nisdomwiname first
#cd /var/yp
#/usr/lib/yp/ypinit m
...........
next host to add:1111.first .my home.c om
next host to add:2222.first .my home. c om
..............
............
..............
is this correct? [y/n]y
..........
.........
updateing passwd.byname.........
.............
..........
...........
从服务器配置比主服务器简单。主服务器保存了所有的映射表。从服务器只需知道哪个是主服务器即可。ypinit -s 配置从服务器。
example:
#/usr/lib/yp/ypinit -s salve
salve的IP地址也必须保存在hosts中。
----------
安全性
用户可以在/var/yp/securenets文件中定义服务器的安全性能。
example:
255.255.255.0 192.168.1.0
授权192.168.1.0子网的用户可以访问服务器。
-----------------
ypserv.conf文件
用户必须使用securenets文件,未必用ypserv.conf定义安全性。
语法如下:
host:map:security:[mangle[]]
字段如下
host 授权或禁止访问的计算机,它由地址/掩码对确定.例如 192.168.1.0/255.255.255.0 . *表示所有主机
map 该字段表示访问的NIS映射表项名称。例如:passwd.byuid。*表示映射表 中所有的字段都可用。
security 授权访问类型
none 允许访问,不加强安全性。
port 允许特权端口访问。只接收源端口小于1024的连接。
deny 禁止访问。
des 访问时需要数字加密标准(DES)认证。
[mangle[]] 指定应该在发出响应之前用“X”覆盖掉的字段(不明白)
example:
# Host : MAP : Security : mangle
192.168.1.0/255.255.255.0 : * :none :no
* :* :deny :no
启动服务器
/etc/init.d/ypserv restart
启动NIS客户端
/etc/init.d/ypbind restart
测试NIS
NIS客户端应该绑定到服务器。ypwhich命令可以检测客户端是否正确的连接到服务器。
如果客户机正确的绑定到服务器,用ypcat检测服务器提供的信息。
NIS与DNS是*事,大家一定要搞清楚。虽然都有可能涉及到域名。但确实是*事,他们之间会有一些连系。但绝不可以混在一起。切记,切记。
====================================
nsswitch.conf文件
nsswitch.conf文件不仅能处理主机表和DNS之间的优先次序,还能处理其它的问题。它为几个不同的系统管理数据库定义来源(多看几篇这句话,“几个不同的系统管理数据库”,可以是DNS,NIS,大家想一想)
由nsswitch.conf控制的数据库
alias EMAIL别名
ehters 用于RARP的以太网地址。
hosts 主机名和IP地址
password 用户帐号信息。
还有许多,没有列出来。
使用不带NIS的nsswitch.conf example:
password: files
shadow: files
...........
hosts: dns files
#这句很重要,dns在先,files在后,这里的files指的是/etc/hosts文件,如果有客户端查询的时候,先找dns,再找files。顺序很重要。
aliases: files
.........
.........
.........
使用带NIS的nsswitch.conf example:
hosts: files nis dns
protocols: nis files
.........
........
........
控制选择过程
nsswitch.conf文件提供了几个可用于查询测试的状态关键字:
success(成功) 查询返回所期望的结果。该状态的缺省的动作是返回结果给提交查询的应用程序(想一下,在我的DNS第二讲,说到解析器,就可以是提交查询的应用程序,不过他是DNS查询是了),然后退出查询过程。
nofound(没有找到) 虽然查询工作正常,但所期望值没有找到。缺省的动作是查询下一行的源。
unavail(不可用) 提交查询的源不可用。例,名称服务器没有运行。
tryagain(重度) 源暂时不可用。缺省的动作是继续向下一个源提交查询。
有两个关键字可以识别缺省的动作:return和continue。return告诉解析器返回值给应用程序并结束查询。continue告诉解析器继续向下一个源提交查询。
状态和动作关键字可以结合起来,加到nsswitch.conf文件的源单中,以控制查询过程何时移到下一个源。
状态检查的语法是:
[ ( ! ? status=action ) + ]
问号(?)代表任何状态值;叹号(!)对状态值取反。!SUCCESS是不成功的意思。方括号[]用于包括整个条件语句。圆括号()是可选的,只用来包含每个测试条件,可以有多个条件,每个条件用圆括号包含,之间用加号连接。
例如:
[ ( NOFOUND=RETURN ) + ( TRYAGAIN+TRETURN) ]
其实就是C语言中的“与”“或”“非”的关系。
下面是nsswitch.conf中的主机一行:
hosts: dns [ !UNAVAIL=return ] files
说明了UNAVAIL之外的所有状态,解析器应该将返回值给应用程序,然后退出。
只有当DNS名称服务器没有运行的时候,解析器才能向主机表查询。如果有条件语句改变,缺省的动作卞会起作用,UNAVAI的缺省动作是continue。
nsswich.conf文件已经取代了hosts.conf,因为它可以提供更多的资源控制方式。LINUX系统中通常这两个文件都有,但实际上起作用的是nsswitch.conf文件。