跳转到内容

LPI Linux 认证/NIS 配置

来自维基教科书,开放世界中的开放书籍

详细目标

[编辑 | 编辑源代码]

权重:1

描述
考生应能够配置 NIS 服务器。此目标包括将系统配置为 NIS 客户端。

  • 关键知识领域
    • NIS 配置文件、术语和实用程序
    • 为主要配置文件创建 NIS 地图
    • 操作 nsswitch.conf 以配置搜索本地文件、DNS、NIS 等的能力。
  • 以下是使用的文件、术语和实用程序的部分列表
    • ypbind
    • ypcat
    • ypmatch
    • ypserv
    • yppasswd
    • yppoll
    • yppush
    • ypwhich
    • rpcinfo
    • nsswitch.conf
    • ypserv.conf
    • /var/yp/* 的内容
    • netgroup
    • nicknames
    • securenets
    • Makefile

NIS 配置

[编辑 | 编辑源代码]

描述:考生应能够配置 NIS 服务器并为主要配置文件创建 NIS 地图。此目标包括将系统配置为 NIS 客户端,设置 NIS 从服务器,以及配置在 nsswitch.conf 中搜索本地文件、DNS、NIS 等的能力。

关键文件术语实用程序包括

nisupdate, ypbind, ypcat, ypmatch, ypserv, ypswitch, yppasswd, yppoll, yppush, ypwhich, rpcinfo
nis.conf, nsswitch.conf, ypserv.conf 
/etc/nis/netgroup
/etc/nis/nicknames
/etc/nis/securenets 

NIS 代表网络信息服务。它的目的是向网络上的所有机器提供必须在整个网络中已知的信息。NIS 可能分发的信息是登录名/密码/主目录 (/etc/passwd) 和组信息 (/etc/group)

例如,如果您的密码条目记录在 NIS passwd 数据库中,您将能够登录到网络上运行 NIS 客户端程序的所有机器上。

在网络内,必须至少有一台机器充当 NIS 服务器。您可以有多个 NIS 服务器,每个服务器服务不同的 NIS“域”——或者您可以拥有合作的 NIS 服务器,其中一个服务器是主 NIS 服务器,而所有其他服务器是所谓的从 NIS 服务器(对于某个 NIS“域”来说!),或者您可以将它们混合起来...

从服务器仅拥有 NIS 数据库的副本,并在主 NIS 服务器的数据库发生更改时从主 NIS 服务器接收这些副本。根据网络中机器的数量和网络的可靠性,您可能决定安装一个或多个从服务器。每当 NIS 服务器关闭或响应请求过慢时,连接到该服务器的 NIS 客户端将尝试找到一个处于活动状态或速度更快的服务器。

NIS 数据库采用所谓的 DBM 格式,源自 ASCII 数据库。例如,文件 /etc/passwd 和 /etc/group 可以使用 ASCII 到 DBM 转换软件(“makedbm”,包含在服务器软件中)直接转换为 DBM 格式。主 NIS 服务器应同时具有 ASCII 数据库和 DBM 数据库。

从服务器将收到对 NIS 地图的任何更改的通知(通过“yppush”程序),并自动检索必要的更改以同步其数据库。NIS 客户端不需要执行此操作,因为它们始终与 NIS 服务器通信以读取其 DBM 数据库中存储的信息。

要运行下面提到的任何软件,您需要运行程序 /usr/sbin/portmap。RPC 端口映射器 (portmap(8)) 是一个将 RPC 程序号转换为 TCP/IP(或 UDP/IP)协议端口号的服务器。它必须运行才能对该机器上的 RPC 服务器(如 NIS 或 NIS+ 服务器)进行 RPC 调用(这是 NIS/NIS+ 客户端软件所做的)。当 RPC 服务器启动时,它会告诉 portmap 它正在监听哪个端口号以及它准备提供哪些 RPC 程序号。当客户端希望对给定程序号进行 RPC 调用时,它将首先与服务器机器上的 portmap 联系以确定应将 RPC 数据包发送到的端口号。

由于 RPC 服务器可能由 inetd(8) 启动,因此 portmap 应该在 inetd 启动之前运行。对于安全 RPC,端口映射器需要时间服务。请确保在所有主机上的 /etc/inetd.conf 中启用时间服务

# Time service is used for clock synchronization.
#
time    stream  tcp     nowait  root    internal
time    dgram   udp     wait    root    internal

重要:不要忘记在对其配置文件进行更改后重新启动 inetd!

设置 NIS 需要什么?

确定您是服务器、从服务器还是客户端:您的机器将成为具有现有 NIS 服务器的网络的一部分,您的网络中还没有任何 NIS 服务器

在第一种情况下,您只需要客户端程序(ypbind、ypwhich、ypcat、yppoll、ypmatch)。最重要的程序是 ypbind。此程序必须始终运行,这意味着它应该始终出现在进程列表中。它是一个守护进程,需要从系统的启动文件(例如 /etc/init.d/nis、/sbin/init.d/ypclient、/etc/rc.d/init.d/ypbind、/etc/rc.local)启动。一旦 ypbind 运行,您的系统就成为了 NIS 客户端。

在第二种情况下,如果您没有 NIS 服务器,那么您还需要一个 NIS 服务器程序(通常称为 ypserv)。第 9 节描述了如何在您的 Linux 机器上使用“ypserv”守护进程设置 NIS 服务器。

设置 NIS 客户端

[编辑 | 编辑源代码]

ypbind 守护进程

较新的 ypbind 版本有一个名为 /etc/yp.conf 的配置文件。您可以在其中硬编码 NIS 服务器——有关更多信息,请参阅 ypbind(8) 的手册页。您还需要此文件才能使用 NYS。一个示例

 ypserver 10.10.0.1
 ypserver 10.0.100.8
 ypserver 10.3.1.1

如果系统可以在没有 NIS 的情况下解析主机名,您可以使用名称,否则您必须使用 IP 地址。ypbind 3.3 存在一个错误,只会使用最后一个条目(示例中的 ypserver 10.3.1.1)。所有其他条目将被忽略。ypbind-mt 正确地处理这个问题,并使用第一个响应的条目。

在将 ypbind 集成到启动文件中之前,最好先对其进行测试。要测试 ypbind,请执行以下操作

确保您已设置 YP 域名。如果未设置,则发出以下命令:/bin/domainname nis.domain

其中 nis.domain 应是与机器的 DNS 域名无关的字符串!这样做的原因是,它可以使外部破解者更难从您的 NIS 服务器检索密码数据库。如果您不知道网络上的 NIS 域名是什么,请询问您的系统/网络管理员。

启动“/usr/sbin/portmap”(如果尚未运行)。如果目录“/var/yp”不存在,请创建它。启动“/usr/sbin/ypbind”

使用命令“rpcinfo -p localhost”检查 ypbind 是否能够向端口映射器注册其服务。输出应类似于

      program vers proto   port
       100000    2   tcp    111  portmapper
       100000    2   udp    111  portmapper
       100007    2   udp    637  ypbind
       100007    2   tcp    639  ypbind

或者像这样(取决于您使用的 ypbind 版本)

      program vers proto   port
       100000    2   tcp    111  portmapper
       100000    2   udp    111  portmapper
       100007    2   udp    758  ypbind
       100007    1   udp    758  ypbind
       100007    2   tcp    761  ypbind
       100007    1   tcp    761  ypbind

您也可以运行“rpcinfo -u localhost ypbind”。此命令应产生类似于以下内容的结果

       program 100007 version 1 ready and waiting
       program 100007 version 2 ready and waiting

输出取决于您安装的 ypbind 版本。重要的是只有“版本 2”消息。此时,您应该能够使用 NIS 客户端程序(如 ypcat 等)... 例如,“ypcat passwd.byname”将为您提供整个 NIS 密码数据库。

重要:如果您跳过了测试过程,请确保您已设置域名并创建了目录 /var/yp。此目录必须存在才能使 ypbind 成功启动。要检查域名是否设置正确,请使用 yp-tools 2.2 中的 /bin/ypdomainname。它使用 yp_get_default_domain() 函数,该函数限制性更强。例如,它不允许使用“(none)”域名,这是 Linux 下的默认值,并且会产生很多问题。

如果测试成功,您现在可能想要更改您的 startupd 文件,以便在引导时启动 ypbind,并且您的系统将充当 NIS 客户端。确保在启动 ypbind 之前设置域名。好了,就是这样。重新启动机器并观察引导消息,以查看 ypbind 是否实际启动。对于主机查找,您必须在 /etc/host.conf 文件中将“nis”设置(或添加)到查找顺序行。有关更多详细信息,请阅读手册页“resolv+.8”。在 NIS 客户端上的 /etc/passwd 中添加以下行

+::::::

您还可以使用 + 和 - 字符来包含/排除或更改用户。如果您要排除用户 guest,只需在您的 /etc/passwd 文件中添加 -guest。您要为用户“linux”使用不同的 shell(例如 ksh)?没问题,只需将“+linux::::::/bin/ksh”(不带引号)添加到您的 /etc/passwd 中。您不想更改的字段必须留空。您也可以使用 Netgroups 进行用户控制。

例如,要只允许 miquels、dth 和 ed 以及 sysadmin netgroup 的所有成员登录访问,但使所有其他用户的帐户数据可用,请使用

     +miquels:::::::
     +ed:::::::
     +dth:::::::
     +@sysadmins:::::::
     -ftp
     +:*::::::/etc/NoShell

请注意,在 Linux 中,您也可以覆盖密码字段,就像我们在本例中所做的那样。我们还删除了登录“ftp”,因此它不再已知,匿名 ftp 将不起作用。netgroup 将如下所示

sysadmins (-,software,) (-,kukuk,)

nsswitch.conf 文件

[编辑 | 编辑源代码]

网络服务切换文件 /etc/nsswitch.conf 决定了当请求特定信息时执行查找的顺序,就像 /etc/host.conf 文件决定执行主机查找的方式一样。

   hosts: files nis dns

例如,这行 

指定主机查找函数应首先查找本地 /etc/hosts 文件,然后进行 NIS 查找,最后通过域名服务 (/etc/resolv.conf 和 named),如果未找到匹配项,则返回错误。此文件必须对每个用户可读!您可以在手册页 nsswitch.5 或 nsswitch.conf.5 中找到更多信息。

# /etc/nsswitch.conf
passwd:     compat
group:      compat
# For libc5, you must use shadow: files nis
shadow:     compat
passwd_compat: nis
group_compat: nis
shadow_compat: nis
hosts:      nis files dns
services:   nis [NOTFOUND=return] files
networks:   nis [NOTFOUND=return] files
protocols:  nis [NOTFOUND=return] files
rpc:        nis [NOTFOUND=return] files
ethers:     nis [NOTFOUND=return] files
netmasks:   nis [NOTFOUND=return] files
netgroup:   nis
bootparams: nis [NOTFOUND=return] files
publickey:  nis [NOTFOUND=return] files
automount:  files
aliases:    nis [NOTFOUND=return] files

适用于 NIS 的良好 /etc/nsswitch.conf 文件是

设置 NIS 服务器

[编辑 | 编辑源代码]

服务器程序 ypserv

如果您将服务器作为主服务器运行,请确定需要通过 NIS 提供哪些文件,然后将相应的条目添加到 /var/yp/Makefile 中的 "all" 规则中。您应该始终查看 Makefile 并编辑文件开头的 Options。

ypserv 1.1 和 ypserv 1.2 之间有一个重大变化。从 1.2 版本开始,文件句柄被缓存。这意味着,如果创建新映射,则必须始终使用 -c 选项调用 makedbm。确保使用 ypserv 1.2 或更高版本中的新 /var/yp/Makefile,或在 Makefile 中将 -c 标志添加到 makedbm。如果您不这样做,ypserv 将继续使用旧映射,而不是更新后的映射。

现在编辑 /var/yp/securenets 和 /etc/ypserv.conf。有关更多信息,请阅读 ypserv(8) 和 ypserv.conf(5) 手册页。

   program 100004 version 1 ready and waiting
   program 100004 version 2 ready and waiting

确保端口映射器 (portmap(8)) 正在运行,并启动服务器 ypserv。命令 « rpcinfo -u localhost ypserv » 应输出类似于 

的输出。根据您使用的 ypserv 版本和配置,"version 1" 行可能缺失。只有在您有旧的 SunOS 4.x 客户端时,它才是必需的。

   % /usr/lib/yp/ypinit -m

现在生成 NIS (YP) 数据库。在主服务器上,运行 

在从服务器上,确保 ypwhich -m 可用。这意味着,您必须在运行 « /usr/lib/yp/ypinit -s masterhost » 以将主机安装为 NIS 从服务器之前,将您的从服务器配置为 NIS 客户端。就这样,您的服务器已经启动并运行。

如果您遇到更大的问题,您可以在不同的 xterm 中以调试模式启动 ypserv 和 ypbind。调试输出应显示问题所在。

     20 *    * * *    /usr/lib/yp/ypxfr_1perhour
     40 6    * * *    /usr/lib/yp/ypxfr_1perday
     55 6,18 * * *    /usr/lib/yp/ypxfr_2perday

如果需要更新映射,请在 NIS 主服务器上的 /var/yp 目录中运行 make。如果源文件更新,这将更新映射,并将文件推送到从服务器。请不要使用 ypinit 来更新映射。您可能希望编辑从服务器上的 root 的 crontab *,并添加以下行

这将确保大多数 NIS 映射保持最新,即使由于从服务器在主服务器上进行更新时处于关闭状态而错过了更新。您可以在以后的任何时间添加从服务器。首先,确保新的从服务器有权联系 NIS 主服务器。然后在新的从服务器上运行 

   % /usr/lib/yp/ypinit -s masterhost

在主服务器上,将新的从服务器名称添加到 /var/yp/ypservers,并在 /var/yp 中运行 make 以更新映射。

程序 rpc.ypxfrd

[编辑 | 编辑源代码]

rpc.ypxfrd 用于加速将非常大的 NIS 映射从 NIS 主服务器传输到 NIS 从服务器。如果 NIS 从服务器收到有关存在新映射的消息,它将启动 ypxfr 以传输新映射。ypxfr 将使用 yp_all() 函数从主服务器读取映射的内容。当必须通过数据库库存储非常大的映射时,此过程可能需要几分钟。

rpc.ypxfrd 服务器通过允许 NIS 从服务器简单地复制主服务器的映射文件,而不是从头开始构建自己的映射文件,从而加快了传输过程。rpc.ypxfrd 使用基于 RPC 的文件传输协议,因此无需构建新映射。

rpc.ypxfrd 可以由 inetd 启动。但由于它启动速度很慢,因此应与 ypserv 一起启动。您只需要在 NIS 主服务器上启动 rpc.ypxfrd。

程序 rpc.yppasswdd

[编辑 | 编辑源代码]

每当用户更改密码时,NIS 密码数据库以及可能依赖于 NIS 密码数据库的其他 NIS 数据库都应该更新。程序 "rpc.yppasswdd" 是一个处理密码更改并确保相应更新 NIS 信息的服务器。rpc.yppasswdd 现在已集成到 ypserv 中。您不需要旧的、单独的 yppasswd-0.9.tar.gz 或 yppasswd-0.10.tar.gz,也不应该再使用它们。ypserv 1.3.2 中的 rpc.yppasswdd 具有完整的 shadow 支持。yppasswd 现在是 yp-tools-2.2.tar.gz 的一部分。

您只需要在 NIS 主服务器上启动 rpc.yppasswdd。默认情况下,不允许用户更改他们的全名或登录 shell。可以使用 -e chfn 或 -e chsh 选项允许这样做。如果您的 passwd 和 shadow 文件不在 /etc 以外的目录中,则需要添加 -D 选项。例如,如果您将所有源文件放在 /etc/yp 中,并且希望允许用户更改其 shell,则需要使用以下参数启动 rpc.yppasswdd

  rpc.yppasswdd -D /etc/yp -e chsh

  rpc.yppasswdd -s /etc/yp/shadow -p /etc/yp/passwd -e chsh

无需再执行任何操作。您只需要确保 rpc.yppasswdd 使用与 /var/yp/Makefile 相同的文件。错误将使用 syslog 记录。

如果一切正常(应该如此),您可以使用一些简单的命令验证安装。例如,假设您的 passwd 文件由 NIS 提供,则命令 

   % ypcat passwd

应为您提供 NIS passwd 文件的内容。命令 

   % ypmatch userid passwd

(其中 userid 是任意用户的登录名)应为您提供用户在 NIS passwd 文件中的条目。 "ypcat" 和 "ypmatch" 程序应该包含在您传统的 NIS 或 NYS 分发版中。在服务器和客户端上正确配置 NIS 后,您需要确保配置能够在重新引导后继续生效。在 RedHat 上,创建或修改文件 /etc/sysconfig/network 中的 NISDOMAIN 变量。


华夏公益教科书