系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)

准备主服务器

以下各节介绍如何为主服务器准备源文件和 passwd 文件。

源文件目录

源文件应位于主服务器上的 /etc 目录或其他某个目录中。将源文件存储在 /etc 中并不合适,因为这样映射中的内容将与主服务器上的本地文件中的内容相同。对于 passwdshadow 文件而言,这一问题尤为突出,因为所有用户都可以访问主服务器映射,因而超级用户口令将通过 passwd 映射传递给所有 NIS 客户机。有关其他信息,请参见Passwd 文件和名称空间安全

但是,如果将源文件放在其他某个目录中,则必须通过将 DIR=/etc 行更改为 DIR=/your-choice 来修改 /var/yp 中的 Makefile,其中,your-choice 是将用来存储源文件的目录的名称。这样便可将服务器上的本地文件视为客户机上的本地文件进行处理。(最好先保存原始 Makefile 的副本。)

此外,如果要从缺省目录外的其他目录中获取 audit_userauth_attrexec_attrprof_attr,则必须将 RBACDIR =/etc/security 修改为 RBACDIR=/your-choice

Passwd 文件和名称空间安全

passwd 映射是一种特殊情况。除了早期的 Solaris 1 passwd 文件格式外,此 NIS 实现还接受 /etc/passwd/etc/shadow 文件格式作为生成 NIS 口令映射的输入。

出于安全原因,用于生成 NIS 口令映射的文件不应包含 root 项,以防止未经授权的超级用户访问。因此,不应使用主服务器 /etc 目录中的文件生成口令映射。对于用于生成口令映射的口令文件,应删除其中的 root 项,并将它们放置在可免遭未经授权的访问的目录中。

例如,主服务器口令输入文件应存储在诸如 /var/yp 等目录或您选择的任何目录中,只要文件本身不是指向其他文件的链接,而且文件位置已在 Makefile 中指定。将根据 Makefile 中指定的配置自动设置正确的目录选项。


注意 – 注意 –

确保 PWDDIR 所指定的目录中的 passwd 文件不包含关于超级用户的项。


如果源文件所在的目录不是 /etc,则必须更改 Makefile 中的 PWDIR 口令宏,以指向 passwdshadow 文件所在的目录,方法是将行 PWDIR=/etc 更改为 PWDIR/your-choice,其中 your-choice 是要用来存储 passwd 映射源文件的目录的名称。

为将源文件转换为 NIS 映射做好准备

为将源文件转换为 NIS 映射做好准备。

如何为转换准备源文件
  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”

  2. 检查主服务器上的源文件,确保它们可以反映系统的最新情况。

    检查以下文件:

    • auto.homeauto_home

    • auto.masterauto_master

    • bootparams

    • ethers

    • group

    • hosts

    • ipnodes

    • netgroup

    • netmasks

    • networks

    • passwd

    • protocols

    • rpc

    • service

    • shadow

    • user_attr

  3. 将上述除 passwd 外的所有源文件复制到所选的 DIR 目录中。

  4. passwd 文件复制到所选的 PWDIR 目录中。

  5. audit_userauth_attrexec_attr 以及 prof_attr 复制到所选的 RBACDIR 目录中。

  6. 检查 /etc/mail/aliases 文件。

    与其他源文件不同,不能将 /etc/mail/aliases 文件移至其他目录。该文件必须位于 /etc/mail 目录中。请确保 /etc/mail/aliases 源文件包含要在整个域中可用的所有邮件别名。有关更多信息,请参阅 aliases(4)

  7. 从源文件中清除所有注释以及其他多余的行和信息。

    可通过 sedawk 脚本或使用文本编辑器来执行这些操作。Makefile 可自动执行一些文件清理,但最好在运行之前手动检查并清理这些文件。

  8. 确保所有源文件中的数据都具有正确的格式。

    对于特定的源文件,必须正确设置该文件数据的格式。请检查各文件对应的手册页,以确保每个文件都具有正确格式。

准备 Makefile

在检查源文件并将其复制到源文件目录后,需要将这些源文件转换为 NIS 服务使用的 ndbm 格式映射。在主服务器上调用 ypinit 时,它会自动执行此操作,如ypinit 设置主服务器中所述。

ypinit 脚本将调用程序 make,该程序使用 /var/yp 目录中的 Makefile。缺省的 Makefile 包含在 /var/yp 目录中,该文件包含将源文件转换为期望的 ndbm 格式映射所需要的命令。

可以按原样使用缺省的 Makefile,如果需要,也可以对其进行修改。(如果确实要修改缺省的 Makefile,请确保先复制并存储原始的缺省 Makefile,以便将来需要时使用。)您可能需要对 Makefile 进行以下一项或多项修改:

Makefile 的功能是为 all 下列出的每个数据库创建适当的 NIS 映射。通过 makedbm 后,数据将收集到两个文件(mapname.dirmapname.pag)中。这两个文件都位于主服务器上的 /var/yp/domainname 目录中。

Makefile 将使用相应的 /PWDIR/passwd/PWDIR/shadow/PWDIR/security/passwd.adjunct 文件生成 passwd 映射。

ypinit 设置主服务器

使用 ypinit 脚本设置要使用 NIS 的主服务器、从属服务器和客户机。它最初还运行 make,以在主服务器上创建映射。

要使用 ypinit 在主服务器上生成一组新的 NIS 映射,请执行以下操作。

如何使用 ypinit 设置主服务器
  1. 在主服务器上,成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”

  2. nsswitch.files 文件的内容复制到 nsswitch.conf 文件中。


    # cp /etc/nsswitch.files /etc/nsswitch.conf
    
  3. 编辑 /etc/hosts/etc/inet/ipnodes 文件,添加每台 NIS 服务器的名称和 IP 地址。

  4. 在主服务器上生成新映射。


    # /usr/sbin/ypinit -m
    
  5. ypinit 提示输入要成为 NIS 从属服务器的其他计算机的列表时,键入正在使用的服务器的名称以及 NIS 从属服务器的名称。

  6. ypinit 询问您希望该过程在第一次出现非致命错误时终止,还是不考虑非致命错误仍继续时,键入 y

    如果选择 yypinit 将在遇到第一个问题时退出,然后您可以修复问题并重新启动 ypinit。建议在初次运行 ypinit 时这样做。如果要继续,则可尝试手动修复出现的所有问题,然后重新启动 ypinit


    注意 –

    当某些映射文件不存在时,会出现非致命错误。此错误不会影响 NIS 的功能。如果未自动创建这些映射,则可能需要手动添加。有关所有缺省 NIS 映射的说明,请参阅缺省 NIS 映射


  7. ypinit 将询问是否可以销毁 /var/yp/domainname 目录中现有的文件。

    仅当先前已安装 NIS 时,才会显示此消息。

  8. ypinit 构造服务器列表后,它将调用 make

    此程序将使用 /var/yp 中的 Makefile(缺省或修改过的文件)所包含的说明。make 命令将从指定的文件中清除其余所有注释行。它还对这些文件运行 makedbm,以创建适当映射并为每个映射建立主服务器的名称。

    如果 Makefile 推送的一个或多个映射所对应的域不是主服务器上的命令 domainname 所返回的域,则可按如下所示,在 ypinit shell 脚本中以变量 DOM 的正确标识启动 make,以确保将映射推送到正确域:


    # make DOM=domainname password
    

    此命令会将 password 映射推送到目标域,而不是主服务器所属的域。

  9. 要启用 NIS 作为名称服务,键入以下命令。


    # cp /etc/nsswitch.nis /etc/nsswitch.conf
    

    此命令将以缺省的面向 NIS 的转换文件替换当前的转换文件。可以根据需要编辑此文件。

支持多个 NIS 域的主服务器

通常,一台 NIS 主服务器只支持一个 NIS 域。但是,如果要使用一台主服务器来支持多个域,则在设置要为其他域提供服务的服务器时,必须对ypinit 设置主服务器中所述的步骤稍做修改。

在服务器上运行 domainname 命令。该命令返回的域名是服务器的缺省域名。可以使用ypinit 设置主服务器中所述的步骤为该域设置服务。要为其他任何域配置服务,必须按如下所示修改 ypinit shell 脚本。


# make DOM=correct-domain passwd

correct-domain 是要为其设置服务的其他域的名称,passwdmake 目标。此命令会将 passwd 映射推送到目标域,而不是主服务器所属的域。