使用idsconfig 配置Sun Java System Directory Server
第11 章• 为使用LDAP 客户机设置Sun Java System Directory Server(任务) 163
idsconfig 会为多个VLV 索引创建相应的项。可以使用directoryserver 脚本来停止服务器
并创建实际的VLV 索引。有关更多信息,请参见idsconfig(1M) 和directoryserver(1M) 手
册页。请参阅idsconfig 命令的输出以确定由idsconfig 创建的VLV 项以及需要运行的相应
directoryserver 命令的语法。请参见第167 页中的“ idsconfig 设置示例”了解样例
idsconfig 输出。
使用服务搜索描述符来修改客户机对各个服务的访问
服务搜索描述符(service search descriptor, SSD) 会将LDAP 中给定操作的缺省搜索请求更改
为您定义的搜索。例如,如果一直在使用具有自定义容器定义的LDAP 或其他操作系统,
而且现在要转为使用最新的Solaris 发行版,则SSD 特别有用。使用SSD,可以在不必更改
现有LDAP 数据库和数据的情况下配置Solaris LDAP 名称服务。
使用idsconfig 设置SSD
在Example, Inc. 中,假设前任管理员已经配置了LDAP,并将用户存储在ou=Users 容器中。
现在要升级到最新的Solaris 发行版。按照定义,Solaris LDAP 客户机假设用户项存储在
ou=People 容器中。因此,当开始搜索passwd 服务时,LDAP 客户机将搜索DIT ou=people
层,因而不会找到正确的值。
对于上述问题,一个比较麻烦的解决方案就是完全覆写Example, Inc. 现有的DIT,并重写
Example, Inc. 网络上现有的所有应用程序,以便它们与新的LDAP 名称服务兼容。另外一种
更可取的解决方案就是,使用SSD 来通知LDAP 客户机在ou=Users 容器(而不是缺省的
ou=people 容器)中查找用户信息。
在使用idsconfig 配置Sun Java System Directory Server 的过程中将需要定义必要的SSD。提
示行如下所示:
Do you wish to setup Service Search Descriptors (y/n/h? y
A Add a Service Search Descriptor
D Delete a SSD
M Modify a SSD
P Display all SSD’s
H Help
X Clear all SSD’s
使用服务搜索描述符来修改客户机对各个服务的访问
164 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
Q Exit menu
Enter menu choice: [Quit] a
Enter the service id: passwd
Enter the base: service ou=user,dc=west,dc=example,dc=com
Enter the scope: one[default]
A Add a Service Search Descriptor
D Delete a SSD
M Modify a SSD
P Display all SSD’s
H Help
X Clear all SSD’s
Q Exit menu
Enter menu choice: [Quit] p
Current Service Search Descriptors:
==================================
Passwd:ou=Users,ou=west,ou=example,ou=com?
Hit return to continue.
A Add a Service Search Descriptor
D Delete a SSD
M Modify a SSD
使用服务搜索描述符来修改客户机对各个服务的访问
第11 章• 为使用LDAP 客户机设置Sun Java System Directory Server(任务) 165
P Display all SSD’s
H Help
X Clear all SSD’s
Q Exit menu
Enter menu choice: [Quit] q
运行idsconfig
注– 运行idsconfig 无需特殊权限,也不必在LDAP命名客户机上运行。请记住按照第
161 页中的“基于服务器安装创建核对表”中的说明创建一个核对表以准备运行
idsconfig。不必从服务器或LDAP 名称服务客户机运行idsconfig。可以从网络上的任何
Solaris 计算机运行idsconfig。
注意– idsconfig 以明文形式发送目录管理器的口令。如果不希望出现这种情况,则必须在
目录服务器(而非客户机)上运行idsconfig。
如何使用idsconfig 来配置Sun Java System
Directory Server
确保目标Sun Java System Directory Server 已打开且正在运行。
运行idsconfig。
# /usr/lib/ldap/idsconfig
有关使用服务器和客户机核对表中列出的定义运行idsconfig 的示例,请参阅示例11–1,这
些核对表位于本章开头处的第161 页中的“基于服务器安装创建核对表”中。
根据提示回答问题。
请注意"no" [n] 是缺省的用户输入。如果需要弄清楚任何给定的问题,请键入
h
此时将出现一个简短的帮助段落。
1
2
3
运行idsconfig
166 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
在idsconfig 完成了目录的设置之后,您需要在服务器上运行指定的命令,才能完成服务器
的设置过程,服务器此时即可为客户机提供服务。
idsconfig 设置示例
本节提供了一个简单的idsconfig 设置示例,该示例没有对缺省值进行太多修改。修改客户
机配置文件最复杂的方法就是创建SSD。有关详细讨论,请参阅第164 页中的“使用服务
搜索描述符来修改客户机对各个服务的访问”。
提示符后面的回车符表示可通过按Enter 来接受[缺省值]。
注– 对于摘要屏幕上留空的任何参数将不进行设置。
在idsconfig 完成了目录的设置之后,您需要在服务器上运行指定的命令,才能完成服务器
的设置过程,服务器此时即可为客户机提供服务。
示例11–1 对于Example, Inc. 网络运行idsconfig
# usr/lib/ldap/idsconfig
It is strongly recommended that you BACKUP the directory server
before running idsconfig.
Hit Ctrl-C at any time before the final confirmation to exit.
Do you wish to continue with server setup (y/n/h)? [n] Y
Enter the directory server’s hostname to setup: myserver
Enter the Directory Server’s port number (h=help): [389]
Enter the directory manager DN: [cn=Directory Manager]
Enter passwd for cn=Directory Manager :
Enter the domainname to be served (h=help): [west.example.com]
Enter LDAP Base DN (h=help): [dc=west,dc=example,dc=com]
Enter the profile name (h=help): [default] WestUserProfile
运行idsconfig
第11 章• 为使用LDAP 客户机设置Sun Java System Directory Server(任务) 167
示例11–1 对于Example, Inc. 网络运行idsconfig (续)
Default server list (h=help): [192.168.0.1]
Preferred server list (h=help):
Choose desired search scope (one, sub, h=help): [one]
The following are the supported credential levels:
1 anonymous
2 proxy
3 proxy anonymous
Choose Credential level [h=help]: [1] 2
The following are the supported Authentication Methods:
1 none
2 simple
3 sasl/DIGEST-MD5
4 tls:simple
5 tls:sasl/DIGEST-MD5
Choose Authentication Method (h=help): [1] 2
Current authenticationMethod: simple
Do you want to add another Authentication Method? N
Do you want the clients to follow referrals (y/n/h)? [n] N
Do you want to modify the server timelimit value (y/n/h)? [n] Y
Enter the server time limit (current=3600): [-1]
Do you want to modify the server sizelimit value (y/n/h)? [n] Y
运行idsconfig
168 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
示例11–1 对于Example, Inc. 网络运行idsconfig (续)
Enter the server size limit (current=2000): [-1]
Do you want to store passwords in "crypt" format (y/n/h)? [n] Y
Do you want to setup a Service Authentication Methods (y/n/h)? [n]
Client search time limit in seconds (h=help): [30]
Profile Time To Live in seconds (h=help): [43200]
Bind time limit in seconds (h=help): [10]
Do you wish to setup Service Search Descriptors (y/n/h)? [n]
Summary of Configuration
1 Domain to serve : west.example.com
2 Base DN to setup : dc=west,dc=example,dc=com
3 Profile name to create : WestUserProfile
4 Default Server List : 192.168.0.1
5 Preferred Server List :
6 Default Search Scope : one
7 Credential Level : proxy
8 Authentication Method : simple
9 Enable Follow Referrals : FALSE
10 Server Time Limit : -1
11 Server Size Limit : -1
12 Enable crypt password storage : TRUE
13 Service Auth Method pam_ldap :
运行idsconfig
第11 章• 为使用LDAP 客户机设置Sun Java System Directory Server(任务) 169
示例11–1 对于Example, Inc. 网络运行idsconfig (续)
14 Service Auth Method keyserv :
15 Service Auth Method passwd-cmd:
16 Search Time Limit : 30
17 Profile Time to Live : 43200
18 Bind Limit : 10
19 Service Search Descriptors Menu
Enter config value to change: (1-19 0=commit changes) [0]
Enter DN for proxy agent:[cn=proxyagent,ou=profile,dc=west,dc=example,dc=com]
Enter passwd for proxyagent:
Re-enter passwd:
WARNING: About to start committing changes. (y=continue, n=EXIT) Y
1. Changed timelimit to -1 in cn=config.
2. Changed sizelimit to -1 in cn=config.
3. Changed passwordstoragescheme to "crypt" in cn=config.
4. Schema attributes have been updated.
5. Schema objectclass definitions have been added.
6. Created DN component dc=west.
7. NisDomainObject added to dc=west,dc=example,dc=com.
8. Top level "ou" containers complete.
9. automount maps: auto_home auto_direct auto_master auto_shared processed.
运行idsconfig
170 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
示例11–1 对于Example, Inc. 网络运行idsconfig (续)
10. ACI for dc=west,dc=example,dc=com modified to disable self modify.
11. Add of VLV Access Control Information (ACI).
12. Proxy Agent cn=proxyagent,ou=profile,dc=west,dc=example,dc=com added.
13. Give cn=proxyagent,ou=profile,dc=west,dc=example,dc=com read permission for
password.
14. Generated client profile and loaded on server.
15. Processing eq,pres indexes:
uidNumber (eq,pres) Finished indexing.
ipNetworkNumber (eq,pres) Finished indexing.
gidnumber (eq,pres) Finished indexing.
oncrpcnumber (eq,pres) Finished indexing.
automountKey (eq,pres) Finished indexing.
16. Processing eq,pres,sub indexes:
ipHostNumber (eq,pres,sub) Finished indexing.
membernisnetgroup (eq,pres,sub) Finished indexing.
nisnetgrouptriple (eq,pres,sub) Finished indexing.
17. Processing VLV indexes:
west.example.com.getgrent vlv_index Entry created
west.example.com.gethostent vlv_index Entry created
west.example.com.getnetent vlv_index Entry created
west.example.com.getpwent vlv_index Entry created
west.example.com.getrpcent vlv_index Entry created
west.example.com.getspent vlv_index Entry created
运行idsconfig
第11 章• 为使用LDAP 客户机设置Sun Java System Directory Server(任务) 171
示例11–1 对于Example, Inc. 网络运行idsconfig (续)
west.example.com.getauhoent vlv_index Entry created
west.example.com.getsoluent vlv_index Entry created
west.example.com.getauduent vlv_index Entry created
west.example.com.getauthent vlv_index Entry created
west.example.com.getexecent vlv_index Entry created
west.example.com.getprofent vlv_index Entry created
west.example.com.getmailent vlv_index Entry created
west.example.com.getbootent vlv_index Entry created
west.example.com.getethent vlv_index Entry created
west.example.com.getngrpent vlv_index Entry created
west.example.com.getipnent vlv_index Entry created
west.example.com.getmaskent vlv_index Entry created
west.example.com.getprent vlv_index Entry created
west.example.com.getip4ent vlv_index Entry created
west.example.com.getip6ent vlv_index Entry created
idsconfig: Setup of myserver is complete.
Note: idsconfig has created entries for VLV indexes. Use the
directoryserver(1m) script on myserver to stop
the server and then enter the following vlvindex
sub-commands to create the actual VLV indexes:
运行idsconfig
172 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
示例11–1 对于Example, Inc. 网络运行idsconfig (续)
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getgrent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.gethostent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getnetent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getpwent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getrpcent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getspent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getauhoent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getsoluent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getauduent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getauthent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getexecent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getprofent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getmailent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getbootent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getethent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getngrpent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getipnent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getmaskent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getprent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getip4ent
directoryserver -s myserver vlvindex -n userRoot -T west.example.com.getip6ent
运行idsconfig
第11 章• 为使用LDAP 客户机设置Sun Java System Directory Server(任务) 173
使用ldapaddent 填充目录服务器
注– 在用数据填充目录服务器之前, 必须配置服务器,使其在您使用pam_unix 时,以UNIX
Crypt 格式存储口令。如果您使用的是pam_ldap,则可以用任何格式存储口令。有关以
UNIX crypt 格式设置口令的更多信息,请参见Sun Java System Directory Server 文档。
ldapaddent 从标准输入(类似于passwd 的/etc/filename)读取数据并将其放到与该服务相
关联的容器中。客户机的配置确定了数据的缺省写入方式。
注– ldapaddent(1M) 只能在LDAP客户机上运行。第12 章介绍了如何为LDAP名称服务配置
客户机。
如何通过ldapaddent 来向Sun Java System Directory
Server 填充用户口令数据
请参见ldapaddent(1M)。有关LDAP 安全性和对目录服务器写入访问权限的信息,请参见
第9 章。
可以使用ldapaddent 命令来向服务器中添加/etc/passwd 项。
# ldapaddent -D "cn=directory manager" -f /etc/passwd passwd
管理打印机项
添加打印机
要向LDAP 目录中添加打印机项,请使用printmgr 配置工具或lpset -n ldap 命令行实用程
序。请参见lpset(1M)。请注意,添加到该目录中的打印机对象仅定义了打印系统客户机所
需的打印机连接参数。本地打印服务器配置数据仍保留在文件中。典型的打印机项将如下
所示:
printer-uri=myprinter,ou=printers,dc=mkg,dc=example,dc=com
objectclass=top
objectclass=printerService
objectclass=printerAbstract
使用ldapaddent 填充目录服务器
174 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
objectclass=sunPrinter
printer-name=myprinter
sun-printer-bsdaddr=printsvr.example.com,myprinter,Solaris
sun-printer-kvp=description=HP LaserJet (PS)
printer-uri=myprinter
使用lpget
lpget(1M) 可用于列出LDAP 客户机的LDAP 目录已知的所有打印机项。如果LDAP 客户机
的LDAP 服务器是副本服务器,则列出的打印机可能不同于主LDAP 服务器中的打印机,具
体情况取决于更新复制协议。有关更多信息,请参见lpget(1M)。
例如,要列出给定基DN的所有打印机,请键入以下内容:
# lpget -n ldap list
myprinter:
dn=myprinter,ou=printers,dc=mkt,dc=example,dc=com
bsdaddr=printsvr.example.com,myprinter,Solaris
description=HP LaserJet (PS)
向目录服务器填充其他配置文件
使用带有genprofile 选项的ldapclient,可以基于所指定的属性,针对配置创建LDIF 表示
形式的配置文件。随后可以将所创建的配置文件加载到要用作客户机配置文件的LDAP 服
务器中。客户机可以使用ldapclient init 来下载客户机配置文件。
有关使用ldapclient genprofile 的信息,请参阅ldapclient(1M)。
向目录服务器填充其他配置文件
第11 章• 为使用LDAP 客户机设置Sun Java System Directory Server(任务) 175
如何通过ldapclient 来向目录服务器填充其他配置
文件
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration
Guide: Security Services中的“Using Role-Based Access Control (Tasks)”。
使用带genprofile 的ldapclient 命令。
# ldapclient genprofile \
-a profileName=myprofile \
-a defaultSearchBase=dc=west,dc=example,dc=com \
-a "defaultServerList=192.168.0.1 192.168.0.2:386" \
> myprofile.ldif
将新配置文件上载到服务器上。
# ldapadd -h 192.168.0.1 -D “cn=directory manager” -f myprofile.ldif
配置目录服务器以启用帐户管理
为了让pam_ldap 能够正确工作,必须在服务器上正确配置口令和帐户锁定策略。可以使用
Directory Server Console 或ldapmodify 来为LDAP 目录配置帐户管理策略。有关配置过程和
更多信息,请参见所用Sun Java System Directory Server 版本的管理指南中的“用户帐户管
理”一章。
注– 启用pam_ldap 帐户管理后,所有用户在每次登录系统时都必须提供口令。进行验证时
必须提供登录口令。因此,使用rsh、rlogin 或ssh 等工具进行的不基于口令的登录将会失
败。
绝不应当允许proxy 用户的口令过期。如果代理口令过期,使用proxy 凭证级别的客户机将
无法从服务器检索名称服务信息。为了确保代理用户的口令不过期,请使用以下脚本修改
代理帐户:
# ldapmodify -h ldapserver -D administrator DN \
-w administrator password <
dn: proxy user DN
1
2
3
配置目录服务器以启用帐户管理
176 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
DNchangetype: modify
replace: passwordexpirationtime
passwordexpirationtime: 20380119031407Z
EOF
注– pam_ldap 帐户管理依赖Sun Java System Directory Server 来为用户维护和提供口令失效和
帐户过期信息。目录服务器在验证用户帐户时不解释阴影项中的相应数据。但是,
pam_unix 会检查阴影数据以确定帐户是否处于锁定状态或者口令是否已失效。由于LDAP
名称服务或目录服务器不会使阴影数据保持最新,因此pam_unix 不应当基于阴影数据授予
访问权限。阴影数据是使用proxy 标识检索的。因此,请不要允许proxy 用户对
userPassword 属性具有读取访问权限。拒绝proxy 用户对userPassword 的读取访问权限可
防止pam_unix 进行无效的帐户验证。
迁移Sun Java System Directory Server
在Sun Java System Directory Server 5.1 发行版(以前称为Sun ONE Directory Server)和Sun
Java System Directory Server 5.2 发行版之间实现了架构更改。ldapaddent 命令现在向
ethers/bootparams 的项中添加了objectclass: device。因此,如果您选择使用LDAP 命令
将目录数据从Sun Java System Directory Server 5.1 迁移到5.2,则必须使用ldapaddent -d 导出
数据,并使用ldapaddent 导入数据。否则,如果使用Sun Java System Directory Server 工具
(db2ldif 和ldif2db)来迁移数据,则必须在迁移数据之前向Sun Java System Directory
Server 5.2 应用所有的修补程序,否则数据导入操作将失败。
有关配置Sun Java System Directory Server 5.2 的信息,请参见Sun Java Enterprise System 附带
的Sun Java System Directory Server 文档。
迁移Sun Java System Directory Server
第11 章• 为使用LDAP 客户机设置Sun Java System Directory Server(任务) 177
178
设置LDAP 客户机(任务)
本章介绍如何设置Solaris LDAP 名称服务客户机。
本章包含以下主题:
第179 页中的“LDAP 客户机设置的先决条件”
第181 页中的“初始化LDAP 客户机”
第181 页中的“使用配置文件初始化客户机”
第182 页中的“使用代理凭证”
第182 页中的“手动初始化客户机”
第183 页中的“修改手动客户机配置”
第184 页中的“取消客户机初始化”
第184 页中的“设置TLS 安全性”
第185 页中的“配置PAM”
LDAP客户机设置的先决条件
要使Solaris 客户机将LDAP 用作名称服务,必须满足以下条件:
客户机的域名必须由LDAP 服务器提供
nsswitch.conf 文件必须指向LDAP 以获取所需服务
需要为客户机配置用于定义其行为的所有给定参数
ldap_cachemgr 需要在客户机中运行
至少应有一台将用于所配置的客户机的服务器已启动并正在运行
ldapclient 实用程序可以执行上述除启动服务器之外的所有步骤,因此对于设置LDAP 客
户机而言非常关键。本章其余部分将举例说明如何使用ldapclient 实用程序设置LDAP 客
户机,以及如何使用其他各种LDAP 实用程序获取有关LDAP 客户机的信息并检查其状态。
12 第1 2 章
179
LDAP和服务管理工具
可以使用服务管理工具来管理LDAP 客户机服务。有关SMF 的概述,请参阅System
Administration Guide: Basic Administration中的“Managing Services (Overview)”。另请参阅
svcadm(1M) 和svcs( 1) 手册页以获取更多详细信息。
可以使用svcadm 命令对此服务执行启用、禁用或重新启动等管理操作。
提示– 使用-t 选项暂时禁用服务可为服务配置提供一些保护。如果禁用服务时使用了-t
选项,则在重新引导后将恢复服务的初始设置。如果禁用服务时未使用-t,则服务在重
新引导后仍将保持禁用状态。
用于LDAP 客户机服务的故障管理资源标识符(Fault Managed Resource Identifier, FMRI)
为svc:/network/ldap/client:。
使用svcs 命令可以查询LDAP 客户机和ldap_cachemgr 的状态。
svcs 命令和输出示例。
# svcs \*ldap\*
STATE STIME FMRI
online 15:43:46 svc:/network/ldap/client:default
svcs -l 命令和输出示例。要获得如下所示的输出,必须在FMRI 中使用实例名称。
# svcs -l network/ldap/client:default
fmri svc:/network/ldap/client:default
enabled true
state online
next_state none
restarter svc:/system/svc/restarter:default
contract_id 1598
dependency require_all/none (-)
dependency require_all/none svc:/network/initial (online)
dependency require_all/none svc:/system/filesystem/minimal (online)
可使用ps 命令检查守护进程是否存在。
LDAP 和服务管理工具
180 系统管理指南:名称和目录服务(DNS、NIS 和LDAP) • 2006 年9 月
# ps -e | grep slapd
root 23320 1 0 Aug 27 ? 16:30 ./ns-slapd -D \
/usr/iplanet/ds5/slapd-lastrev -i /usr/iplanet/ds5/slapd-lastrev/
root 25367 25353 0 15:35:19 pts/1 0:00 grep slapd
注– 不要将-f 选项与ps 结合使用,因为此选项会尝试将用户ID 转换为名称,从而导致
可能不会成功的更多名称服务查找。
初始化LDAP客户机
ldapclient(1M) 是用于在Solaris 系统中设置LDAP 客户机的实用程序。ldapclient 假定已
使用适当的客户机配置文件配置了服务器。必须先安装服务器并用适当的配置文件对其进
行配置,然后才能设置客户机。
注– Solaris 操作系统不支持NIS 客户机与本机LDAP客户机共存于同一台客户机上的配置。
使用ldapclient 设置客户机主要有两种方法。
配置文件
至少需要指定包含配置文件的服务器地址以及要使用的域。如果未指定配置文件,则会
使用“缺省”配置文件。服务器将提供其余的必需信息,但代理和证书数据库信息除外。
如果客户机的凭证级别为proxy 或proxy anonymous,则必须提供代理的绑定DN 和口
令。有关更多信息,请参见第146 页中的“指定客户机凭证级别”。
手动
在客户机自身中配置配置文件,这意味着要从命令行定义所有参数。这样,配置文件信
息便存储在高速缓存文件中,服务器永远不会刷新这些信息。
注– 尽管可以手动配置客户机,但建议不使用此方法。使用配置文件可以降低管理客户机的
复杂性和成本。
使用配置文件初始化客户机
如何使用配置文件初始化客户机
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration
Guide: Security Services中的“Using Role-Based Access Control (Tasks)”。
1