以下各节介绍如何为主服务器准备源文件和 passwd 文件。
源文件应位于主服务器上的 /etc 目录或其他某个目录中。将源文件存储在 /etc 中并不合适,因为这样映射中的内容将与主服务器上的本地文件中的内容相同。对于 passwd 和 shadow 文件而言,这一问题尤为突出,因为所有用户都可以访问主服务器映射,因而超级用户口令将通过 passwd 映射传递给所有 NIS 客户机。有关其他信息,请参见Passwd 文件和名称空间安全。
但是,如果将源文件放在其他某个目录中,则必须通过将 DIR=/etc 行更改为 DIR=/your-choice 来修改 /var/yp 中的 Makefile,其中,your-choice 是将用来存储源文件的目录的名称。这样便可将服务器上的本地文件视为客户机上的本地文件进行处理。(最好先保存原始 Makefile 的副本。)
此外,如果要从缺省目录外的其他目录中获取 audit_user、auth_attr、exec_attr 和 prof_attr,则必须将 RBACDIR =/etc/security 修改为 RBACDIR=/your-choice。
passwd 映射是一种特殊情况。除了早期的 Solaris 1 passwd 文件格式外,此 NIS 实现还接受 /etc/passwd 和 /etc/shadow 文件格式作为生成 NIS 口令映射的输入。
出于安全原因,用于生成 NIS 口令映射的文件不应包含 root 项,以防止未经授权的超级用户访问。因此,不应使用主服务器 /etc 目录中的文件生成口令映射。对于用于生成口令映射的口令文件,应删除其中的 root 项,并将它们放置在可免遭未经授权的访问的目录中。
例如,主服务器口令输入文件应存储在诸如 /var/yp 等目录或您选择的任何目录中,只要文件本身不是指向其他文件的链接,而且文件位置已在 Makefile 中指定。将根据 Makefile 中指定的配置自动设置正确的目录选项。
确保 PWDDIR
所指定的目录中的 passwd 文件不包含关于超级用户的项。
如果源文件所在的目录不是 /etc,则必须更改 Makefile 中的 PWDIR
口令宏,以指向 passwd 和 shadow 文件所在的目录,方法是将行 PWDIR=/etc 更改为 PWDIR/your-choice,其中 your-choice 是要用来存储 passwd 映射源文件的目录的名称。
为将源文件转换为 NIS 映射做好准备。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”。
检查主服务器上的源文件,确保它们可以反映系统的最新情况。
检查以下文件:
auto.home 或 auto_home
auto.master 或 auto_master
bootparams
ethers
group
hosts
ipnodes
netgroup
netmasks
networks
passwd
protocols
rpc
service
shadow
user_attr
将 passwd 文件复制到所选的 PWDIR 目录中。
将 audit_user、auth_attr、exec_attr 以及 prof_attr 复制到所选的 RBACDIR 目录中。
与其他源文件不同,不能将 /etc/mail/aliases 文件移至其他目录。该文件必须位于 /etc/mail 目录中。请确保 /etc/mail/aliases 源文件包含要在整个域中可用的所有邮件别名。有关更多信息,请参阅 aliases(4)。
从源文件中清除所有注释以及其他多余的行和信息。
可通过 sed 或 awk 脚本或使用文本编辑器来执行这些操作。Makefile 可自动执行一些文件清理,但最好在运行之前手动检查并清理这些文件。
确保所有源文件中的数据都具有正确的格式。
对于特定的源文件,必须正确设置该文件数据的格式。请检查各文件对应的手册页,以确保每个文件都具有正确格式。
在检查源文件并将其复制到源文件目录后,需要将这些源文件转换为 NIS 服务使用的 ndbm 格式映射。在主服务器上调用 ypinit 时,它会自动执行此操作,如用 ypinit 设置主服务器中所述。
ypinit 脚本将调用程序 make,该程序使用 /var/yp 目录中的 Makefile。缺省的 Makefile 包含在 /var/yp 目录中,该文件包含将源文件转换为期望的 ndbm 格式映射所需要的命令。
可以按原样使用缺省的 Makefile,如果需要,也可以对其进行修改。(如果确实要修改缺省的 Makefile,请确保先复制并存储原始的缺省 Makefile,以便将来需要时使用。)您可能需要对 Makefile 进行以下一项或多项修改:
非缺省映射
如果创建了自己的非缺省源文件并且要将其转换为 NIS 映射,则必须将这些源文件添加到 Makefile。
DIR
值
如果要让 Makefile 使用不在 /etc 目录中存储的源文件(如源文件目录中所述),则必须将 Makefile 中的 DIR
的值更改为要使用的目录。更改 Makefile 中的该值时,请勿使行缩进。
PWDIR
值
如果要让 Makefile 使用不在 /etc 目录中存储的 passwd、shadow 和/或 adjunct 源文件,则必须将 Makefile 中的 PWDIR
的值更改为要使用的目录。更改 Makefile 中的该值时,请勿使行缩进。
域名解析程序
如果要让 NIS 服务器对不在当前域中的计算机使用域名解析程序,请注释掉 Makefile 行 B=,并取消对行 B=-b 的注释(激活)。
Makefile 的功能是为 all 下列出的每个数据库创建适当的 NIS 映射。通过 makedbm 后,数据将收集到两个文件(mapname.dir 和 mapname.pag)中。这两个文件都位于主服务器上的 /var/yp/domainname 目录中。
Makefile 将使用相应的 /PWDIR/passwd、/PWDIR/shadow 和 /PWDIR/security/passwd.adjunct 文件生成 passwd 映射。
使用 ypinit 脚本设置要使用 NIS 的主服务器、从属服务器和客户机。它最初还运行 make,以在主服务器上创建映射。
要使用 ypinit 在主服务器上生成一组新的 NIS 映射,请执行以下操作。
在主服务器上,成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”。
将 nsswitch.files 文件的内容复制到 nsswitch.conf 文件中。
# cp /etc/nsswitch.files /etc/nsswitch.conf |
编辑 /etc/hosts 或 /etc/inet/ipnodes 文件,添加每台 NIS 服务器的名称和 IP 地址。
在主服务器上生成新映射。
# /usr/sbin/ypinit -m |
当 ypinit 提示输入要成为 NIS 从属服务器的其他计算机的列表时,键入正在使用的服务器的名称以及 NIS 从属服务器的名称。
当 ypinit 询问您希望该过程在第一次出现非致命错误时终止,还是不考虑非致命错误仍继续时,键入 y。
如果选择 y,ypinit 将在遇到第一个问题时退出,然后您可以修复问题并重新启动 ypinit。建议在初次运行 ypinit 时这样做。如果要继续,则可尝试手动修复出现的所有问题,然后重新启动 ypinit。
当某些映射文件不存在时,会出现非致命错误。此错误不会影响 NIS 的功能。如果未自动创建这些映射,则可能需要手动添加。有关所有缺省 NIS 映射的说明,请参阅缺省 NIS 映射。
ypinit 将询问是否可以销毁 /var/yp/domainname 目录中现有的文件。
仅当先前已安装 NIS 时,才会显示此消息。
ypinit 构造服务器列表后,它将调用 make。
此程序将使用 /var/yp 中的 Makefile(缺省或修改过的文件)所包含的说明。make 命令将从指定的文件中清除其余所有注释行。它还对这些文件运行 makedbm,以创建适当映射并为每个映射建立主服务器的名称。
如果 Makefile 推送的一个或多个映射所对应的域不是主服务器上的命令 domainname 所返回的域,则可按如下所示,在 ypinit shell 脚本中以变量 DOM
的正确标识启动 make,以确保将映射推送到正确域:
# make DOM=domainname password |
此命令会将 password 映射推送到目标域,而不是主服务器所属的域。
要启用 NIS 作为名称服务,键入以下命令。
# cp /etc/nsswitch.nis /etc/nsswitch.conf |
此命令将以缺省的面向 NIS 的转换文件替换当前的转换文件。可以根据需要编辑此文件。
通常,一台 NIS 主服务器只支持一个 NIS 域。但是,如果要使用一台主服务器来支持多个域,则在设置要为其他域提供服务的服务器时,必须对用 ypinit 设置主服务器中所述的步骤稍做修改。
在服务器上运行 domainname 命令。该命令返回的域名是服务器的缺省域名。可以使用用 ypinit 设置主服务器中所述的步骤为该域设置服务。要为其他任何域配置服务,必须按如下所示修改 ypinit shell 脚本。
# make DOM=correct-domain passwd |
correct-domain 是要为其设置服务的其他域的名称,passwd 是 make 目标。此命令会将 passwd 映射推送到目标域,而不是主服务器所属的域。