通过 NIS 共享数据网络信息访问 (NIS) 是由 Sun Microsystems 开发的,也称为黄页 (Yellow Pages) 服务。该系统的机制非常简单——将标准系统数据库(如 /etc/hosts 和 /etc/passwd)转换为通用数据库格式(使用 DBM 格式,DBM 是一个早已失去其含义的缩写)。
这些数据库保存在 NIS 服务器上(也称为 NIS 主服务器)。所有数据库均放置在一个指定的域中,然后从使用远程过程调用(Remote Procedure Call,RPC)接口的主服务器共享。支持一系列不同的文件,包括:
- passwd(如果支持,还包括 /etc/shadow 文件)
- groups
- hosts
- netmask
- netgroup
- automount
- services
- protocols
- ethers
- aliases(对于邮件)
从服务器(例如希望提供 NIS 主服务器数据库备份的计算机)将从服务器复制已发布的数据库。NIS 客户端在需要查找信息时(例如用登录时)将查询 NIS 服务器。NIS 客户端永远不会存储信息,因为客户端绑定到 NIS 服务器(通过 ypbind 工具)。所得到的结构如下面的 中所示。
图 1. NIS 主服务器或从服务器结构只要进行了更改,对 NIS 数据库的更改将传播到从服务器,或通过使用 yppush 命令以手动方式传播。
由用户驱动的对 NIS 数据库的直接更改(例如,当用户更改其密码时)将直接发送到 NIS 主服务器,从而更新数据库,并将更改传播给任何从服务器。
选择 NIS 或 NIS+NIS 和 NIS+ 间的主要区别在于,后者支持 NIS 主计算机和从计算机间的身份验证和数据交换加密。不过,由于安全方面的要求,NIS+ 的设置和正常运行较为困难,更为复杂。NIS+ 还对命名系统进行了扩展,因此数据库将放入树形结构中(而不是单个域中),以便允许更为复杂、范围更广的分布。
NIS 通常适合在任何标准环境中使用,而且在配置正确的网络中,如果此网络附加到 Internet,并不会带来任何安全威胁。在私有网络更为开放的环境中(如在通过公共网络交换 NIS 数据的大学或多站点安装中),应该仅使用 NIS+。
设置 NIS 服务器Solaris、AIX® 和 HP-UX 安装在缺省情况下都包含对 NIS 系统的支持。Linux® 分发通常都包含 NIS 作为标准配置,glibc 库提供了对 NIS 的支持。不过,您可能需要安装配置和管理 NIS 安装所需的工具包。对于 Linux 下的 NIS 服务器,需要以下程序包:
安装了这些程序包后,需要对所提供的 makefile 进行编辑,该文件通常位于 /var/yp/Makefile 中。该文件中包含将用于构建初始 YP 数据库的配置参数。您需要编辑 all 的定义,以包含希望通过 NIS 支持的文件类型。在缺省情况下,该规则包括所有文件,如 中所示。
清单 1. all 的定义1
2
3
4
| all: passwd group hosts ipnodes ethers networks rpc services protocols \
netgroup bootparams aliases publickey netid netmasks c2secure \
timezone auto.master auto.home ageing \
auth.attr exec.attr prof.attr user.attr audit.user
|
可以将任何不需要的文件类型删除;例如,可能会只想共享 passwd、group 和 hosts 文件。
现在已经准备好,可以对数据库进行填充了。首先,设置 NIS 域名:
在 Linux 服务器上,编辑 /var/yp/securenets 和 /etc/ypserv.conf 文件,以与本地网络的情况匹配。这些文件控制哪些计算机可以共享和访问 NIS 域中的信息。
现在对数据库进行初始化:
ypinit 命令将为您完成使用 makefile 将源文件(例如,/etc/passwd)转换为 NIS 格式的剩余任务。
如果在任何时间更改了源文件的内容,请转到 /var/yp 目录并再次运行 make 来重新构建数据库:
如果希望允许各个用户以远程方式更新登录密码,请确保 rpc.yppasswdd 后台程序在运行;它可直接接受客户端要求更新 NIS 数据库的请求,以便更改通过主服务器和从服务器传播,并由任何客户端正确拾取。
设置 NIS 客户端要设置 NIS 客户端,需要定义 NIS 域名,启动本地 NIS 访问,然后初始化这些服务,以从 NIS 主服务器或从服务器查找其信息。该过程的关键在于 ypbind,该工具可将客户端计算机附加到 NIS 服务器。
在 UNIX 下,将在调用 ypbind 时自动确定 NIS 服务器。在大多数 Linux 版本下,必须在 /etc/yp.conf 文件中设置有效 NIS 服务器列表,例如:
将客户端连接到 NIS 服务器的基本过程如下:
- 设置 NIS 域: $ domainname mcslp.nis.
- 启动 portmap——RPC 映射器后台程序(如果尚未运行): $/sbin/portmap.
- 创建 /var/yp 目录,该目录将用于保存一些 NIS 信息。
- 启动 ypbind: $ /usr/sbin/ypbind.
现在通过使用 ypcat 直接查询数据库,以确定 NIS 连接为活动状态。例如,为了获得按名称排序的 NIS passwd 文件的转储,您将使用以下命令:
这将转储整个 passwd 数据库。在系统实际使用 NIS 数据库信息前,必须对系统用于查找信息的数据源进行重新配置。 |