本章介绍如何配置目录服务器。您可以使用 dsconf 命令(请参见 dsconf(1M) 手册页)。
还可以使用目录服务控制中心 (Directory Service Control Center, DSCC),此为首选方法。DSCC 将在配置过程中执行附加检查,这可以减少错误。此外,DSCC 还允许您将一个服务器实例的配置复制到另一个服务器实例中。有关使用 DSCC 的详细信息,请参见 DSCC 联机帮助。
$ dsconf info -h host -p port Instance path : instance path Global State : read-write Host Name : host Port : port Secure port : secure port Total entries : 20844 Suffixes : suffix-DN Dest. Servers : host:port On-Going Tasks : import Finished Tasks : backup |
以上输出假定您已创建了后缀以及与目标服务器之间的复制协议。它还显示正在执行的导入操作以及完成的备份操作。
修改配置的推荐方法是使用 DSCC。此浏览器界面提供了基于任务的控件,可帮助您快速有效地设置配置。使用 DSCC 可以修改一个服务器上的配置设置,然后将该配置设置复制到其他服务器中。此外,DSCC 界面还为您管理配置的复杂性和相互依赖性。可以在 DSCC 联机帮助中找到使用 DSCC 修改配置的详细过程。
可以通过编写使用命令行工具的脚本来自动完成配置任务。
可以通过命令行使用 dsconf 命令来修改配置。此命令使用 LDAP 修改 cn=config 子树。有关 dsconf 的详细信息,请参见目录服务器命令行工具。
对于无法使用 dsconf 执行的任何任务,都可以使用 ldapmodify 命令。
如果要使用 dsconf set-server-prop 命令修改服务器配置属性,您需要了解可以修改的属性以及这些属性的默认值。可使用以下命令显示所有属性的帮助信息:
$ dsconf help-properties -v |
可以搜索所需项的属性帮助。例如,在 UNIX 平台上,可键入以下内容来搜索内存缓存属性:
$ dsconf help-properties -v | grep cache |
有关 cn=config 中配置条目的详细信息,以及所有配置条目和属性(包括允许值的范围)的完整描述,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Reference》。
目录服务器将所有配置信息存储在以下文件中:
instance-path/config/dse.ldif
通过直接编辑 dse.ldif 文件的内容来修改配置很容易出错,因此不推荐使用此方法。但是,如果选择手动编辑此文件,请在编辑文件之前停止服务器,并在完成编辑后重新启动该服务器。
dse.ldif 文件使用 LDAP 数据交换格式 (LDAP Data Interchange Format, LDIF)。LDIF 是条目、属性及属性值的文本表示,并且是 RFC 2849 (http://www.ietf.org/rfc/rfc2849 ) 中所述的标准格式。
dse.ldif 文件中的目录服务器配置由以下内容组成:
cn=config 条目的属性和值。
位于 cn=config 下的子树中的所有条目及其属性和值。
根条目 ("") 和 cn=monitor 条目的对象类和访问控制指令。这些条目的其他属性由服务器生成。
只有拥有目录服务器实例的系统用户才具有读取和写入文件的权限。
目录服务器允许通过 LDAP 读取和写入所有配置设置。默认情况下,具有授权的任何人都可以读取目录的 cn=config 分支,但只有目录管理员 (cn=Directory Manager) 和 cn=Administrators,cn=config 下的管理用户才能写入该分支。管理用户可以查看和修改配置条目,就像任何其他目录条目一样。
不要在 cn=config 条目下创建非配置条目,因为这些条目将存储在 dse.ldif 文件中,而不像常规条目那样存储在高伸缩性的数据库中。因此,将许多条目(特别是可能经常更新的条目)存储在 cn=config 下可能会降低性能。但是,将复制管理员(提供方绑定 DN)等特殊用户条目存储在 cn=config 下可能非常有用,因为这样可以集中配置信息。
目录服务器包含默认的管理用户,即目录管理员和 cn=admin,cn=Administrators,cn=config 用户。这两个用户具有相同的访问权限,但 cn=admin,cn=Administrators,cn=config 受 ACI 控制。
本部分说明如何创建具有超级用户权限的管理用户,以及如何配置目录管理员。
如果要创建与 cn=admin,cn=Administrators,cn=config 具有相同权限的新管理用户,请在 cn=Administrators,cn=config 组中创建新用户。此组中的所有用户都受全局 ACI 控制,此 ACI 允许具有与目录管理员相同的访问权限。
无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。
创建新的管理用户。
例如,要创建新用户 cn=Admin24,cn=Administrators,cn=config,请键入:
$ ldapmodify -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - dn: cn=admin24,cn=Administrators,cn=config changetype: add objectclass: top objectclass: person userPassword: password description: Administration user with the same access rights as Directory Manager. |
-D 和 -w 选项分别提供具有此条目创建权限的用户的绑定 DN 和密码。
目录管理员是具有特权的服务器管理员,与 UNIX 系统上的 root 用户类似。访问控制不适用于目录管理员。
大多数管理任务都不需要使用目录管理员。您可以使用 cn=admin,cn=Administrators,cn=config 用户或者在 cn=Administrators,cn=config 下创建的任何其他用户。需要使用目录管理员的任务只包括更改根 ACI 和复制故障排除任务(如修复复制和搜索逻辑删除)。
可以更改目录管理员的 DN 和密码,以及创建可供自动读取密码的文件。
无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。
查找现有的目录管理员 DN。
$ dsconf get-server-prop -h host -p port root-dn root-dn:cn=Directory Manager |
根据需要修改目录管理员设置。
要修改目录管理员 DN,请键入:
$ dsconf set-server-prop -h host -p port root-pwd-file:new-root-dn-password-file |
如果目录管理员 DN 中存在空格,请使用引号。例如:
$ dsconf set-server-prop -h host1 -p 1389 root-dn:"cn=New Directory Manager" |
要更改目录管理员密码,请键入:
$ dsconf set-server-prop -h host -p port root-pwd:new-root-dn-password |
如果出于安全考虑,您不希望将明文密码作为命令行参数进行传递,可创建一个用于设置密码的临时文件。
$ echo password > /tmp/pwd.txt |
此文件只读取一次,并存储密码以供将来使用。请设置服务器根密码文件属性。
$ dsconf set-server-prop -h host -p port root-pwd-file:/tmp/pwd.txt |
此命令将提示服务器读取密码文件。请在设置密码文件属性之后删除临时密码文件。
$ rm /tmp/pwd.txt |
根目录服务器条目(使用零长度 DN "" 执行基本对象搜索时返回的条目)以及 cn=config、cn=monitor 和 cn=schema 下的子树包含由目录服务器自动生成的访问控制指令 (Access Control Instruction, ACI)。这些 ACI 用于确定目录条目的用户权限。如果用于评估目的,则这些 ACI 已经足够。但是对于任何生产部署,您都需要评估访问控制要求并设计您自己的访问控制。
如果出于安全考虑,您要隐藏一个或多个其他子树并保护您的配置信息,则必须在 DIT 上放置其他 ACI 。
将 ACI 属性放在位于要隐藏的子树基部的条目中。
将 ACI 放在 namingContexts 属性上的根 DSE 条目中。名为 namingContexts 的根 DSE 条目属性包含每个目录服务器数据库的基 DN 列表。
将 ACI 放在 cn=config 和 cn=monitor 子树上。子树 DN 也存储在 cn=config 和 cn=monitor 下的映射树条目中。
有关创建 ACI 的详细信息,请参见第 6 章,目录服务器访问控制。
本部分提供了以下有关配置 DSCC 的信息:
默认的 Common Agent Container 端口号为 11162。Common Agent Container 将 DSCC 代理端口定义为 jmxmp-connector-port。如果出于管理考虑,需要为 DSCC 代理和 Common Agent Container 使用其他端口号,请使用以下过程:
无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。
以超级用户身份验证 jmxmp-connector-port 的现有端口号。
$ su Password: # cacaoadm list-params ... jmxmp-connector-port=11162 ... |
更改 DSCC 代理端口号。
更改 DSCC 代理端口号时,必须停止 Common Agent Container。
# cacaoadm stop # cacaoadm set-param jmxmp-connector-port=new-port # cacaoadm start |
有关此命令的位置,请参见命令位置。
在 DSCC 中,取消注册您的服务器,然后使用新的 DSCC 代理端口号重新注册这些服务器。
此外,在创建新服务器时,还必须指定非默认的 DSCC 代理端口号。
要重置目录服务管理员密码,请使用 DSCC,如以下过程所述。
访问 DSCC,如访问 DSCC中所述。
单击“设置”选项卡,然后选择“目录服务管理员”。
单击要更改密码的目录服务管理员的名称。
在属性屏幕中输入新密码。
在“确认密码”字段中再次键入新密码以进行确认。单击“确定”保存所做的更改。
经过一段时间之后,您的 DSCC 会话将会超时,并且您将从 DSCC 中注销。请使用以下过程延长超时延迟。请注意,此过程将延长 DSCC 及 Sun Java Web Console 中所有其他应用程序的超时时间。
无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。
# wcadmin add -p -a ROOT session.timeout.value=mm |
其中 mm 是超时之前时间(以分钟为单位)。
例如,要将超时时间设置为两小时,请键入:
$ su Password: # wcadmin add -p -a ROOT session.timeout.value=120 Set 1 properties for the ROOT application. # wcadmin list -p Shared service properties (name, value): session.timeout.value 120 ... |
重新启动 Sun Java Web Console。
# smcwebserver restart Shutting down Sun Java(TM) Web Console Version 3.0.2 ... Starting Sun Java(TM) Web Console Version 3.0.2 ... The console is running. |
有关这些命令的位置,请参见命令位置。
DSCC 会显示已在 DSCC 中注册的服务器。
如果安装有 DSCC 的计算机出现故障,您可以在其他计算机上安装 DSCC,然后重新注册您的服务器。但这么做可能会花费很多时间。如果要通过 DSCC 立即访问服务器,则可以配置 DSCC 故障转移。
要配置 DSCC 故障转移,请考虑以下注意事项:
已注册的服务器的所有信息都存储在 DSCC 注册表中。此注册表为目录服务器实例。可以使用管理命令 dsadm 和 dsconf 管理此注册表。
DSCC 注册表具有以下默认特性:
Solaris — /var/opt/SUNWdsee/dscc6/dcc/ads
Linux 和 HP-UX — /var/opt/sun/dscc6/dcc/ads
Windows — C:\Program Files\Sun\DSEE\var\dscc6\dcc\ads
cn=dscc
LDAP 3998、LDAPS 3999
在两台或多台计算机上安装 DSCC 之后,可以设置 DSCC 注册表后缀之间的复制。可以使用第 10 章,目录服务器复制中所述的复制命令行过程。或者,要获取设置简单复制配置的示例,请参见 dsconf(1M) 手册页。
设置复制之后,可以从不同计算机访问 DSCC 中注册的相同服务器。例如,如果设置了 host1 和 host2 上 DSCC 注册表后缀之间的复制,则可以在 https://host1:6789 或 https://host2:6789 上使用 DSCC 管理相同的服务器。如果主机发生故障,则可以从其他主机访问 DSCC。
有关 DSCC 故障排除的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Installation Guide》中的“To Troubleshoot Directory Service Control Center Access”。
可以使用 DSCC 或 dsconf set-server-prop 命令修改用户目录服务器的 LDAP 端口号或 LDAPS 安全端口号。
如果更改端口号,请注意以下事项:
如果设置了非特权端口号,并将目录服务器安装到其他用户可以访问的计算机上,则该端口号可能存在被其他应用程序占用的危险。换句话说,其他应用程序可能会绑定到相同的地址/端口对。此恶意应用程序可能会接着处理针对目录服务器的请求。也就是说,此恶意应用程序可用于捕获验证过程中使用的密码,从而更改客户端请求或服务器响应,或者产生拒绝服务攻击。要避免出现这种安全风险,请使用 listen-address 或 secure-listen-address 属性指定目录服务器所侦听的接口(地址)。
如果使用命令行更改端口号,请注意以下事项:
如果在其他服务器上定义的复制协议中引用了目录服务器,则必须更新此复制协议以使用新的端口号。
如果以前使用过 DSCC 管理服务器,则更改端口号后将暂时无法查看此服务器。要再次查看此服务器,必须先取消注册此服务器,然后在 DSCC 中使用新端口号对其进行重新注册。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
在进行修改后,您必须重新启动服务器以使更改生效。
验证端口的现有设置。
$ dsconf get-server-prop -h host -p port port-type |
其中 port-type 为以下任一选项:
LDAP 默认端口
LDAPS 安全端口
DSML 默认端口
DSML 安全端口
例如,要显示 LDAPS 安全端口,请键入:
$ dsconf get-server-prop -h host1 -p 2501 ldap-secure-port Enter "cn=Directory Manager" password: ldap-secure-port : 2511 |
如果返回结果为整数,则端口处于启用状态。如果返回结果为 disabled,则端口处于禁用状态。
还可以使用 dsadm 列出 LDAP 默认端口和 LDAPS 安全端口
修改端口号或启用端口(如果需要)。
$ dsconf set-server-prop -h host -p port port-type:new-port |
例如,要将 LDAP 端口号从 1389 更改为 1390,请使用以下命令:
$ dsconf set-server-prop -h host1 -p 1389 ldap-port:1390 |
要在端口号 2250 上启用 DSML 安全端口,请使用以下命令:
$ dsconf set-server-prop -h host1 -p 1389 dsml-secure-port:2250 |
禁用端口(如果需要)。
$ dsconf set-server-prop -h host -p port port-type:disabled |
例如,要禁用 DSML 安全端口,请使用以下命令:
$ dsconf set-server-prop -h host1 -p 1389 dsml-secure-port:disabled |
除了处理通过轻量目录访问协议 (Lightweight Directory Access Protocol, LDAP) 发送的请求之外,目录服务器还响应以目录服务标记语言版本 2 (Directory Service Markup Language version 2, DSMLv2) 发送的请求。DSML 是供客户端对目录操作进行编码的另一种方法。服务器将使用所有相同的访问控制和安全功能,以处理任何其他请求的方式来处理 DSML 请求。DSML 处理允许许多其他类型的客户端访问您的目录内容。
目录服务器支持通过超文本传输协议 (Hypertext Transfer Protocol, HTTP/1.1) 使用 DSMLv2,并将简单对象访问协议 (Simple Object Access Protocol, SOAP) 版本 1.1 用作编程协议来传输 DSML 内容。有关这些协议的详细信息以及 DSML 请求的示例,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Reference》中的第 10 章 “Directory Server DSMLv2”。
本部分包含以下主题:
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
将 DSML 模式设置为 on。
$ dsconf set-server-prop -h host -p port dsml-enabled:on |
设置安全 DSML 端口。
$ dsconf set-server-prop -h host -p port dsml-secure-port:port |
设置非安全 DSML 端口。
$ dsconf set-server-prop -h host -p port dsml-port:port |
默认情况下,此端口设置为 disabled
重新启动服务器。
$ dsadm restart instance-path |
根据定义的参数和属性值,DSML 客户端可以使用以下 URL 将请求发送到此服务器:
http://host:DSML-port/ relative-URL
https://host:secure-DSML-port /relative-URL
可以使用 dsml-relative-root-url 属性来读取和设置 relative-URL。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
将 DSML 模式设置为 off。
$ dsconf set-server-prop -h host -p port dsml-enabled:off |
将安全 DSML 端口设置为 disabled。
$ dsconf set-server-prop -h host -p port dsml-secure-port:disabled |
重新启动服务器。
$ dsasm restart instance-path |
可以配置接受 DSML 请求时所需的安全级别。要执行此操作,必须配置 DSML 客户端验证。
设置 DSML 客户端验证模式。
$ dsconf set-server-prop -h host -p port dsml-client-auth-mode:dsml-mode |
默认情况下,dsml-client-auth-mode 属性设置为 client-cert-first。
dsml-mode 可为以下任一选项:
http-basic-only - 此为默认值。服务器使用 HTTP“授权”头的内容来查找可以映射到目录中某个条目的用户名。此过程及其配置都通过 SSL 进行了加密,但不使用客户端证书。相关内容如DSML 标识映射中所述。
client-cert-only - 服务器使用客户端证书中的凭证来识别客户端。使用此值时,所有 DSML 客户端都必须使用安全 HTTPS 端口发送 DSML 请求并提供证书。服务器会检查客户端证书是否与目录中的条目相匹配。有关详细信息,请参见第 5 章,目录服务器安全性。
client-cert-first - 服务器首先尝试使用客户端证书(如果提供)来验证客户端。如果未提供证书,服务器将使用“授权”头的内容来验证客户端。
如果 HTTP 请求中既未提供证书又未提供“授权”头,服务器将使用匿名绑定执行 DSML 请求。匿名绑定还将用于以下情形:
指定 client-cert-only 时,客户端提供了有效的“授权”头但未提供证书。
指定 http-basic-only 时,客户端提供了有效证书但未提供“授权”头。
无论使用哪种客户端验证方法,如果提供证书但该证书与条目不匹配,或者指定 HTTP“授权”头但无法将其映射到用户条目,则 DSML 请求都将被拒绝,并显示错误消息 403:“禁止”。
执行无证书的基本验证时,目录服务器将使用标识映射机制来确定接受 DSML 请求时要使用的绑定 DN。此机制将从 HTTP 请求的“授权”头中提取信息,以确定要用于绑定的标识。
DSML/HTTP 的默认标识映射由服务器配置中的以下条目指定。
dn: cn=default,cn=HTTP-BASIC,cn=identity mapping,cn=config objectClass: top objectClass: nsContainer objectClass: dsIdentityMapping cn: default dsSearchBaseDN: ou=people dsSearchFilter: (uid=${Authorization})
此配置表明,服务器应该使用 HTTP 用户 ID 作为目录服务器后缀中所存储的 DN 的 uid 值。例如,如果 HTTP 用户为 bjensen,服务器将尝试使用 DN uid=bjensen,ou=people 执行绑定。
因此,要使映射正常工作,您必须完成 dsSearchBaseDN 的值。例如,可以将 dsSearchBaseDN 的值更改为 ou=people,dc=example,dc=com。这样,如果 HTTP 用户为 bjensen,服务器将尝试使用 DN uid=bjensen,ou=people,dc=example,dc=com 执行绑定。
dn: cn=default,cn=HTTP-BASIC,cn=identity mapping,cn=config objectClass: top objectClass: nsContainer objectClass: dsIdentityMapping cn: default dsSearchBaseDN: ou=people,dc=example,dc=com dsSearchFilter: (uid=${Authorization})
在映射条目属性 dsSearchFilter 中,可以使用 ${header } 格式的占位符,其中 header 是 HTTP 头的名称。
以下是 DSML 映射中最常用的头。
此字符串将由 HTTP“授权”头中包含的用户名替换。“授权”头同时包含用户名及其密码,但在此占位符中只替换用户名。
此字符串将由 HTTP“发件人”头中可能包含的电子邮件地址替换。
此字符串将由 DSML 请求 URL 中的主机名和端口号(即服务器的主机名和端口号)替换。
要使 DSML 请求执行其他类型的标识映射,请为 HTTP 头定义新的标识映射。
编辑默认的 DSML-over-HTTP 标识映射,或为此协议创建自定义映射。
映射条目必须位于 cn=HTTP-BASIC,cn=identity mapping,cn=config 条目下。
可以从命令行中使用 ldapmodify 命令添加此条目,如使用 ldapmodify 添加条目中所述。
重新启动目录服务器以使新映射生效。
将首先评估自定义映射。如果没有成功的自定义映射,则评估默认映射。如果所有映射都无法确定 DSML 请求的绑定 DN,将禁止并拒绝该 DSML 请求(错误 403)。
目录中的每个后缀均可单独设为只读模式,并可返回特定的引用(如果已定义)。目录服务器也为应用于所有后缀并可返回全局引用(如果已定义)的服务器提供了只读模式。
服务器只读模式旨在允许管理员在执行特定任务(如为后缀重新编制索引)时阻止对目录内容执行修改操作。因此,服务器只读模式不适用于以下配置分支:
cn=config
cn=monitor
cn=schema
无论只读设置如何,都应始终使用访问控制指令 (Access Control Instruction, ACI) 保护这些分支,以防止非管理用户对其进行修改(请参见第 6 章,目录服务器访问控制)。全局只读模式可阻止对目录中的所有其他后缀执行更新操作,包括目录管理员发起的更新操作。
启用只读模式后,还会中断后缀上的复制操作。主副本不再有任何要复制的更改,但它还会继续复制启用只读模式前所做的全部更改。在禁用只读模式之前,使用方副本不会收到更新。多主复制环境中的主服务器没有任何要复制的更改,并且无法从其他主服务器接收更新。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
启用全局只读模式。
$ dsconf set-server-prop -h host -p port read-write-mode:read-only |
准备就绪后,禁用只读模式。
$ dsconf set-server-prop -h host -p port read-write-mode:read-write |
本部分提供有关管理不同类型内存的信息。有关不同缓存类型的描述以及缓存调整的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Reference》中的第 5 章 “Directory Server Data Caching”。
填充缓存是指将数据填入缓存中,以使后续的目录服务器行为能反映出正常的操作性能,而不是提升的性能。如果希望在执行基准测试时获得可再现的结果,或者要测量和分析潜在的优化,则填充缓存非常有用。
请尽量避免主动填充缓存。在测量性能之前,让客户端与目录服务器之间的一般或典型交互操作来填充缓存。
可以在 http://www.slamd.com 找到用于填充数据库缓存的工具。
修改缓存可能会严重影响服务器性能。修改缓存时请谨慎操作。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
获取当前的数据库缓存级别。
$ dsconf get-server-prop -h host -p port db-cache-size |
更改数据库缓存级别。
$ dsconf set-server-prop -h host -p port db-cache-size:size |
其中,size 可以用千兆字节 (G)、兆字节 (M)、千字节 (k) 或字节 (b) 表示。您的计算机必须支持所指定的大小。
安装时的默认缓存级别适合于测试环境,而不适用于生产环境。进行调整时,您可能需要监视服务器的数据库缓存。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
监视数据库缓存。
$ ldapsearch -h host -p port -D cn=admin,cn=Administrators,cn=config -w - \ -b "cn=monitor,cn=ldbm database,cn=plugins,cn=config" "(objectclass=*)" |
如果数据库缓存足够大,并且已进行了填充,则命中率 (dbcachehitratio) 应该很高。此外,读入的页面数 (dbcachepagein) 和写出的干净页面数 (dbcacheroevict) 应该很低。此处的“高”和“低”是相对于部署限制而言的。
进行调整时,您可能需要检查一个或多个后缀的条目缓存。可使用以下过程查看条目缓存级别。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
监视条目缓存。
$ ldapsearch -h host -p port -D cn=admin,cn=Administrators,cn=config -w - \ -b "cn=monitor,cn=db-name,cn=ldbm database,cn=plugins,cn=config" "(objectclass=*)" |
如果后缀的条目缓存足够大(可以容纳该后缀中的大多数条目),并且已经填充了缓存,则命中率 (entrycachehitratio ) 应该很高。
如果已经填充了缓存,您将会看到,当先前为空的条目缓存被填满时,条目缓存大小 (currententrycachesize) 将接近于最大条目缓存大小 (maxentrycachesize)。理想情况下,条目的数量 (currententrycachecount) 应该等于或非常接近于后缀中的条目总数 (ldapentrycachecount)。
修改缓存可能会严重影响服务器性能。修改缓存时请谨慎操作。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
获取当前的条目缓存级别。
$ dsconf get-suffix-prop -h host -p port suffix-DN entry-cache-count entry-cache-size |
更改条目缓存计数。
$ dsconf set-suffix-prop -h host -p port suffix-DN entry-cache-count:integer |
其中,integer 是要在缓存中存储的条目数。
更改条目缓存大小。
$ dsconf set-suffix-prop -h host -p port suffix-DN entry-cache-size:size |
其中,size 是用千兆字节 (G)、兆字节 (M)、千字节 (k) 或字节 (b) 表示的缓存大小。您的计算机必须支持所指定的大小。
如果要限制 nsslapd 进程所使用的堆内存量,可以设置动态内存占用的阈值。当目录服务器在资源共享或资源稀少的计算机上运行时,可能需要设置此阈值。
只能在 SolarisTM 和 Linux 平台上设置此阈值。
有关调整内存大小的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Deployment Planning Guide》中的“Directory Server and Memory”。
无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。
默认情况下,heap-high-threshold-size 和 heap-low-threshold-size 属性是 undefined。
设置堆内存高端阈值的最大值。
$ dsconf set-server-prop -h host -p port heap-high-threshold-size:value |
其中,value 是 undefined 或用千兆字节 (G)、兆字节 (M)、千字节 (k) 或字节 (b) 表示的内存大小。您的计算机必须支持所指定的大小。
有关用于 heap-high-threshold-size 的值的建议,请参见 server(5dsconf) 手册页。
设置堆内存低端阈值的最大值(可选)。
$ dsconf set-server-prop -h host -p port heap-low-threshold-size:value |
其中,value 是 undefined 或用千兆字节 (G)、兆字节 (M)、千字节 (k) 或字节 (b) 表示的内存大小。您的计算机必须支持所指定的大小。
有关用于 heap-low-threshold-size 的值的建议,请参见 server(5dsconf) 手册页。
可以在服务器上控制每个客户端帐户的搜索操作资源限制。可以在帐户的操作属性中设置这些限制,然后目录服务器会基于客户端用于绑定到目录的帐户来实施这些限制。
可以设置以下限制:
浏览限制指定搜索操作可检查的最大条目数。
大小限制指定响应搜索操作时返回的最大条目数。
时间限制指定处理搜索操作所花费的最长时间。
空闲超时指定在断开连接之前客户端连接可以保持空闲状态的最长时间。
默认情况下,目录管理员使用资源时可以不受限制。
在特定用户帐户上设置的资源限制优先于在服务器范围的配置中设置的资源限制。本部分提供了有关为每个帐户设置资源限制的信息。
本部分中提供的示例直接在条目的属性中设置资源限制。还可以使用服务类 (Class of Service, CoS) 机制设置帐户的资源限制。为客户端应用程序检索条目时,CoS 机制将生成计算后的属性。有关定义 CoS 的详细信息,请参见服务类。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
使用 dsconf get-server-prop 命令读取资源限制服务器属性。
$ dsconf get-server-prop -h host -p port look-through-limit search-size-limit \ search-time-limit idle-timeout look-through-limit : 5000 search-size-limit : 2000 search-time-limit : 3600 idle-timeout : none |
从上述输出可以看出,搜索操作最多可浏览 5000 个条目,最多可返回 2000 个条目,并且最多可使用一小时(3600 秒)的服务器时间来处理搜索。
更改浏览限制。
$ dsconf set-server-prop -h host -p port look-through-limit:integer |
其中,integer 是为搜索操作检查的最大条目数。
更改搜索大小限制。
$ dsconf set-server-prop -h host -p port search-size-limit:integer |
其中,integer 是搜索操作返回的最大条目数。
更改搜索时间限制。
$ dsconf set-server-prop -h host -p port serach-time-limit:integer |
其中,integer 是处理搜索操作所花的最长时间。
更改空闲超时。
$ dsconf set-server-prop -h host -p port idle-timeout:integer |
其中,integer 是在断开连接之前客户端连接可以保持空闲状态的最长时间。