跳过导航链接 | |
退出打印视图 | |
系统管理指南:命名和目录服务(DNS、NIS 和 LDAP) Oracle Solaris 10 8/11 Information Library (简体中文) |
4. 网络信息服务 (Network Information Service, NIS)(概述)
11. 为使用 LDAP 客户机设置 Sun Java System Directory Server(任务)
本节包含以下信息:
用户可以使用 ypcat、ypwhich 和 ypmatch 命令随时从映射中获取有关映射的信息。在下面的示例中,mapname 同时指映射的正式名称和昵称(如果有)。
要列出映射中的所有值,请键入以下命令。
% ypcat mapname
要同时列出映射中的关键字和值(如果有),请键入以下命令。
% ypcat -k mapname
要列出所有映射昵称,请键入以下任何命令。
% ypcat -x % ypmatch -x % ypwhich -x
要列出所有可用映射及其主服务器,请键入以下命令。
% ypwhich -m
要列出特定映射的主服务器,请键入以下命令。
% ypwhich -m mapname
要以映射中的项匹配关键字,请键入以下命令。
% ypmatch key mapname
如果要查找的项不是映射中的关键字,请键入以下命令。
% ypcat mapname | grep item
其中,item 是要搜索的信息。要获取有关其他域的信息,请使用这些命令的 -d domainname 选项。
如果请求缺省域之外的域信息的计算机没有到被请求域的绑定,ypbind 将在 /var/yp/binding/domainname/ypservers 文件中查询该域的服务器列表。如果此文件不存在,该命令将发出服务器的 RPC 广播。在这种情况下,被请求域必须有一台服务器与请求计算机位于同一子网。
要更改选定映射的主服务器,必须先在新 NIS 主服务器上生成该映射。由于旧的主服务器名称以关键字-值对的形式出现在现有映射中(此对由 makedbm 自动插入),因此将该映射复制到新的主服务器或使用 ypxfr 将副本传送到新的主服务器是不够的。您必须将该关键字与新主服务器名重新关联。如果映射具有 ASCII 源文件,应将此文件复制到新的主服务器。
角色包含授权和具有一定特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的第 9 章 "使用基于角色的访问控制(任务)"。
newmaster# cd /var/yp
newmaster# make sites.byname
newmaster# cd /var/yp newmaster# ypcat sites.byname | makedbm -domain-/sites.byname
在新的主服务器上创建映射后,必须向其他从属服务器发送新映射的副本。不要使用 yppush,因为其他从属服务器会试图从旧的主服务器(而不是新的主服务器)中获取新副本。解决此问题的一个典型方法是从新的主服务器向旧的主服务器传送一份映射的副本。为此,请在旧的主服务器上成为超级用户或承担等效角色,并键入以下命令。
oldmaster# /usr/lib/netsvc/yp/ypxfr -h newmaster sites.byname
现在,即可安全运行 yppush。其余所有的从属服务器仍会认为旧的主服务器是当前的主服务器,并尝试从旧的主服务器中获取最新版本的映射。当客户机这样做时,它们将获得新得映射,该映射会将新的主服务器指定为当前主服务器。
NIS 可以智能解析设置文件。尽管这样可以简化 NIS 管理,但它使 NIS 的行为对设置和配置文件中的更改更敏感。
进行以下任何一项修改时,请使用本节中的过程。
添加或删除 /etc/resolv.conf,以允许或拒绝 DNS 转发
添加或删除 $PWDIR/security/passwd.adjunct,以允许或拒绝 C2 安全性($PWDIR 在 /var/yp/Makefile 中定义)
更改 NIS 映射或映射源文件时,无需停止和启动 NIS。
请牢记以下几点。
在 NIS 主服务器中删除映射或源文件不会自动在从属服务器中执行同样的删除操作。您必须手动删除从属服务器中的映射和源文件。
新映射不会自动推送到现有的从属服务器。你必须在从属服务器中运行 ypxfr。
角色包含授权和具有一定特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的第 9 章 "使用基于角色的访问控制(任务)"。
# svcadm disable network/nis/server
# svcadm enable network/nis/server
您可以修改 /var/yp 中缺省提供的 Makefile 来满足自己的需要。您可以添加或删除映射,也可以更改某些目录的名称。
提示 - 请保留原始的 Makefile 的未修改副本,以供将来参考。
要添加新的 NIS 映射,必须将该映射的 ndbm 文件的副本放入域中每台 NIS 服务器上的 /var/yp/domainname 目录中。此操作通常由 Makefile 执行。在决定好将哪台 NIS 服务器用作映射的主服务器之后,请修改主服务器上的 Makefile,以便可以方便地重新生成映射。不同的服务器可以作为不同映射的主服务器,但在大多数情况下,这会导致管理上的混乱。请尽量只将一台服务器设置为所有映射的主服务器。
通常,会使用 awk、sed 或 grep 对适合人阅读的文本文件进行过滤,以使其适合输入到 makedbm。有关示例,请参阅缺省的 Makefile。有关 make 命令的一般信息,请参见 make(1S)。
在决定如何创建 make 可识别的相关性时,请使用 Makefile 中已经存在的机制。请注意,make 对于相关性规则中的行首是否存在制表符非常敏感。缺少制表符会使本来格式正确的项无效。
向 Makefile 中添加项涉及以下步骤。
向 all 规则中添加数据库名称
编写 time 规则
为数据库添加规则
例如,为使 Makefile 可以处理自动挂载程序输入文件,必须将 auto_direct.time 和 auto_home.time 映射添加到 NIS 数据库。
要将这些映射添加到 NIS 数据库,需要修改 Makefile。
通过更改等号 (=) 右侧的值,可以更改 Makefile 顶部定义的变量的设置。例如,如果不想使用 /etc 中的文件作为映射的输入,而想使用另一个目录(如/var/etc/domainname)中的文件,应将 DIR 由 DIR=/etc 更改为 DIR=/var/etc/domainname。另外,还应将 PWDIR 由 PWDIR=/etc 更改为 PWDIR=/var/etc/domainname。
这些变量如下所示。
DIR= 包含除 passwd 和 shadow 之外的所有 NIS 输入文件的目录。缺省值为 /etc。由于使用主服务器上 /etc 目录中的文件作为 NIS 输入文件并不是一种很好的做法,因此应更改此值。
PWDIR= 包含 passwd 和 shadow NIS 输入文件的目录。由于使用主服务器上 /etc 目录中的文件作为 NIS 输入文件并不是一种很好的做法,因此应更改此值。
DOM= NIS 域名。DOM 的缺省值使用 domainname 命令来设置。但是,大多数 NIS 命令都使用当前计算机的 /etc/defaultdomain 文件中设置的域。
以下过程介绍如何在 Makefile 中添加和删除数据库。
角色包含授权和具有一定特权的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的第 9 章 "使用基于角色的访问控制(任务)"。
all: passwd group hosts ethers networks rpc services protocols \ netgroup bootparams aliases netid netmasks \ audit_user auth_attr exec_attr prof_attr \ auto_direct auto_home auto_direct.time auto_home.time
各项的顺序不相关,但连续行开头的空白处必须为制表符,而不是空格。
auto_direct: auto_direct.time auto_home: auto_home.time
auto_direct.time: $(DIR)/auto_direct @(while read L; do echo $$L; done < $(DIR)/auto_direct $(CHKPIPE)) | \ (sed -e "/^#/d" -e "s/#.*$$//" -e "/^ *$$/d" $(CHKPIPE)) | \ $(MAKEDBM) - $(YPDBDIR)/$(DOM)/auto_direct; @touch auto_direct.time; @echo "updated auto_direct"; @if [ ! $(NOPUSH) ]; then $(YPPUSH) auto_direct; fi @if [ ! $(NOPUSH) ]; then echo "pushed auto_direct"; fi
其中,
CHKPIPE 确保在将结果传输给后面的命令之前管道符号 (|) 左侧的运算已成功完成。如果管道符号左侧的运算未成功完成,该进程将中止,并显示 "NIS make term nated"(NIS make 中止)消息。
NOPUSH 阻止 makefile 调用 yppush 将新映射传送到从属服务器。如果不设置 NOPUSH,将自动完成推送。
开头的 while 循环旨在消除输入文件中的所有反斜杠扩展行。sed 脚本用于消除注释和空行。
对于其他所有自动挂载程序映射(如 auto_home)或其他任何非缺省映射,应按相同的过程操作。
# make mapname
其中,mapname 是要创建的映射的名称。
如果不希望 Makefile 为特定数据库生成映射,请按如下步骤编辑 Makefile。