2006 年 5 月 25 日
了解如何使用网络信息服务(Network Information Service,NIS)来在 Linux® 和 UNIX® 间共享核心数据库,以及如何使用网络文件系统(Network File System,NFS)来通过直接链接或自动加载器共享文件系统。尽管 UNIX 和 Linux 相似,但二者之间仍然存在一些差异,可能会导致集成这两个系统的过程复杂化。例如,这两类系统均采用相同的身份验证系统,但大部分系统都是彼此独立的。通过共享此身份验证信息,可以为网络中的任何服务器提供单点登录(single sign-on,SSO)功能。
通过 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 中所示。
图 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 中所示。
清单 1. all 的定义
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 数据库信息前,必须对系统用于查找信息的数据源进行重新配置。
nsswitch.conf
Linux 和 UNIX 上的 nsswitch.conf 文件通常用于确定系统在何处查找有关不同数据的信息。例如,可以将 nsswitch.conf 文件配置为在文件中查找主机信息、查询 DNS 或使用 NIS 系统查找该信息。
该文件不仅对用于查找信息的源进行配置,而且也用于配置不同源的查询顺序。选择正确的顺序可以影响是否能查询正确的数据源以及在出现故障时网络的恢复能力。
该文件的格式如下:首先是简单的系统数据库列表,后跟按照所需顺序排列的数据源列表,每行一个服务。例如,清单 2 显示了为 NIS、DNS 和本地文件解析设置的简单 nsswitch.conf 文件的前几行数据。
清单 2. 简单 nsswitch.conf 文件的前几行数据
passwd: nis files
shadow: nis files
group: nis files
hosts: nis dns files
networks: nis dns files
|
在清单 2 中,可以看到 passwd 的定义为首先使用 NIS 数据库(如果可用)。当用户登录时,将首先构造 NIS 表。如果服务返回用户无法找到的错误,则系统将查询列表中的第二项——在本例中为本地文件。
[1] [2] 下一页
共5页: 上一页 1 [2] [3] [4] [5] 下一页