/usr/sbin/ldapclient [-v | -q] init [-a profileName=profileName] [-a domainName=domain] [-a proxyDN=proxyDN] [-a proxyPassword=password] [-a authenticationMethod=authenticationMethod] [-a enableShadowUpdate=true | false] [-a adminDN=adminDN] [-a adminPassword=adminPassword] [-a certificatePath=path] [-d bindDN] [-w bindPassword] [-j passwdFile] [-y passwdFile] [-z adminrPasswdFile] LDAP_server[:port_number]
/usr/sbin/ldapclient [-v | -q] manual [-a attrName=attrVal]
/usr/sbin/ldapclient [-v | -q] mod [-a attrName=attrVal]
/usr/sbin/ldapclient [-v | -q] list
/usr/sbin/ldapclient [-v | -q] uninit
/usr/sbin/ldapclient [-v | -q] genprofile -a profileName=profileName [-a attrName=attrVal]
ldapclient 实用程序可用于:
初始化 LDAP 客户机
在 LDAP 客户机上恢复网络服务环境
以用户可读的格式列出 LDAP 客户机高速缓存的内容。
init 形式的 ldapclient 实用程序用于自动初始化 LDAP 客户机,它使用 LDAP_server 指定的 LDAP 服务器上存储的配置文件来进行初始化。LDAP 客户机将使用指定配置文件中的属性来确定 LDAP 客户机的配置。使用配置文件,可以轻松安装 LDAP 客户机并传播对 LDAP 客户机的配置更改。ldap_cachemgr(1M) 实用程序将在 LDAP 客户机高速缓存过期时通过读取配置文件对客户机的配置进行更新。有关配置文件的更多信息,请参见 IETF 文档《A Configuration Schema for LDAP Based Directory User Agents》。
manual 形式的 ldapclient 实用程序用于手动初始化 LDAP 客户机。LDAP 客户机将使用命令行中指定的属性。任何未指定的属性都将赋予其缺省值。必须在 defaultServerList 或 preferredServerList 属性中至少指定一个服务器。如果未设置客户机的 domainName,则必须指定 domainName 属性。
mod 形式的 ldapclient 实用程序用于修改手动设置的 LDAP 客户机配置。此选项仅修改命令行中指定的 LDAP 客户机配置属性。mod 选项只能用于使用 manual 选项初始化的 LDAP 客户机。
无论使用何种方法进行初始化,要将客户机配置为使用代理 credentialLevel,都必须通过 –a proxyDN=proxyDN 和 –a proxyPassword= proxyPassword 选项提供代理凭证。但是,如果未指定 –a proxyPassword=proxyPassword,ldapclient 将会提示您输入口令。请注意,LDAP 中不允许使用 NULL 口令。如果 credentialLevel 配置为 self(自我模式),则 authenticationMethod 必须为 sasl/GSSAPI。
类似地,要将客户机配置为启用影子信息更新并使用代理 credentialLevel,必须通过 –a adminDN=adminDN 和 –a adminPassword= adminPassword 提供管理员凭证。但是,如果 credentialLevel 配置为 self,影子信息更新将不需要管理员凭证。
特定于命名服务的配置属性存储在 svc:/network/ldap/client SMF 服务中。不建议直接修改 SMF 属性。请改用此工具。
其他配置可以在安装期间修改。这些信息会备份至 /var/ldap/restore。初始化期间通常会修改的文件如下:
/etc/nsswitch.conf
/etc/defaultdomain(如果存在)
/var/yp/binding/`domainname`(用于 NIS [YP] 客户机)
LDAP 配置是在位置配置文件中管理的;这会影响何时以及如何使 LDAP 配置成为持久性的。有关位置配置文件的更多信息,请参阅 netcfg(1M),有关在使用自动网络配置时应如何管理 LDAP 配置的更多详细信息,请参阅下文中的“与位置配置文件交互”部分。
ldapclient 不会将客户机设置为使用 DNS 解析主机名,而只会将 /etc/nsswitch.ldap 复制到 /etc/nsswitch.conf。如果您倾向使用 DNS 进行主机解析,请参见 DNS 文档了解有关设置 DNS 的信息。请参见 resolv.conf(4)。如果您要使用 sasl/GSSAPI 作为验证方法,则必须使用 DNS 进行 hosts 和 ipnodes 解析。
list 形式的 ldapclient 实用程序用于列出 LDAP 客户机配置。输出将是用户可读的。LDAP 配置文件并不保证是用户可读的。请注意,出于安全原因,将不会显示 adminDN 和 adminPassword 的值。
uninit 形式的 ldapclient 实用程序用于取消对网络服务环境的初始化,并将其恢复到上次使用 init 或 manual 执行 ldapclient 之前的状态。只有当计算机是使用 init 或 manual 形式的 ldapclient 进行初始化的,恢复操作才会成功,因为该命令使用这些选项创建的备份文件。
genprofile 选项用于根据命令行中指定的属性将 LDIF 格式的配置文件写入标准输出。然后,可以将此配置文件装入 LDAP 服务器以用作客户机配置文件,此配置文件可通过 ldapclient init 命令下载。可以通过 ldapadd(1) 或特定于服务器的任何导入工具,将 LDIF 格式的配置文件装入目录服务器。请注意,proxyDN、proxyPassword、certificatePath、domainName、enableShadowUpdate、adminDN 和 adminPassword 属性并非此配置文件的一部分,因此不允许使用。
您必须拥有超级用户特权才能运行 ldapclient 命令,但使用 genprofile 选项时除外。
要访问目录中存储的信息,客户机可以通过验证方式连接目录,也可以使用不进行验证的连接。LDAP 客户机配置为具有 anonymous 或 proxy 凭证级别。在第一种情况下,客户机连接目录时不进行验证。在第二种情况下,客户机连接目录时按以下方式进行验证:读取访问使用代理标识验证,写入访问使用管理员标识验证(如果配置了 enableShadowUpdate)。在第三种情况下,客户机连接目录时使用 Kerberos 主体进行验证,LDAP 服务器可将该主体映射到 LDAP 标识。有关标识映射的详细信息,请参阅使用 Oracle Solaris 11.2 目录和命名服务:LDAP 中有关实现安全性的章节或相应的目录服务器文档。
如果客户机配置为使用标识,您可以配置客户机要使用的验证方法。LDAP 客户机支持以下验证方法:
|
请注意,某些目录服务器可能不支持以上所有验证方法。对于 simple,请注意绑定口令将以明文形式发送到 LDAP 服务器。对于使用 TLS(transport layer security,传输层安全)的验证方法,将对整个会话进行加密。您需要安装相应的证书数据库,才能使用 TLS。
如上文提到的,LDAP 配置是在位置配置文件中管理的(有关位置配置文件的更多信息,请参阅 netcfg(1M))。这些配置文件要么是固定的,表示以传统方式管理网络配置;要么是反应性的,表示自动管理网络配置,并会根据配置文件中指定的策略规则对网络环境的变化作出反应。
当某个固定位置(当前只能有一个,即 DefaultFixed 位置)处于活动状态时,对 SMF 系统信息库所做的更改(包括使用 ldapclient 等工具所做的间接更改)将在该位置被禁用时应用于该位置,因此,如果以后重新启用了该位置,更改将被恢复。
当反应性位置处于活动状态时,不应将更改直接应用于 SMF 系统信息库;这些更改不会保留在位置配置文件中,因此如果禁用该位置,或者刷新或重新启动系统的网络配置(由 svc:/network/physical:default 和 svc:/network/location:default 管理),更改将会丢失。应使用 netcfg(1M) 命令将更改应用于位置本身;这样会将更改保存到位置配置文件系统信息库中,还会将其应用于 SMF 系统信息库(如果更改是针对当前活动的位置进行的)。
当前对位置的 LDAP 配置提供的支持非常有限。用户必须在 ldap-nameservice-servers 属性中指定可从中获取完整的配置文件的一个服务器名称。不可以指定其他参数。此外,如果某个位置中不包括 LDAP 配置,则在启用该位置时,相关的 LDAP 服务将被禁用。
通过创建发出适当 ldapclient 命令以配置 LDAP 的脚本来提供更加复杂的 LDAP 配置;之后可以使用该脚本来创建可根据需要启用/禁用的 ENM 配置文件。有关 ENM 配置文件的更多信息,请参阅 netcfg(1M)。
所支持的命令如下:
基于服务器中的配置文件初始化客户机。
使用指定的属性值手动初始化客户机。
在手动初始化客户机后修改配置文件中的属性值。
以用户可读的格式将 LDAP 客户机高速缓存的内容写入标准输出。
取消 LDAP 客户机初始化(假定使用了 ldapclient 来初始化客户机)。
通过此命令的 init 形式生成 LDIF 格式的配置文件,该配置文件随后可存储在目录中供客户机使用。
支持以下属性:
为用于影子信息更新的管理员标识指定绑定标识名。如果凭证级别为 proxy 并且 enableShadowUpdate 设置为 true,则必须指定此选项。没有缺省值。
指定管理员口令。如果凭证级别为 proxy 并且 enableShadowUpdate 设置为 true,则必须指定此选项。没有缺省值。
指定从服务定义的属性到备用架构中属性的映射。该选项可用于更改给定服务使用的缺省架构。在配置文件 IETF 草案中定义了 attributeMap 的语法。可以多次指定此选项。所有服务的缺省值为 NULL。在以下示例中,
attributeMap: passwd:uid=employeeNumber
对于 passwd 服务,LDAP 客户机将使用 LDAP 属性 employeeNumber 而不是 uid。这是一个多值属性。
指定所有服务使用的缺省验证方法,除非被 serviceAuthenticationMethod 属性覆盖。可以使用分号分隔的列表来指定多个值。缺省值为 none。对于使用 credentialLevel 并且 credentialLevel 为 anonymous 的服务,此属性将被忽略。即使 credentialLevel 是 anonymous,pam_ldap 等服务也会使用此属性。支持的验证方法如上所述。如果 authenticationMethod 为 sasl/GSSAPI,则必须将 /etc/nsswitch.conf 的 hosts 和 ipnodes 配置为支持 DNS,例如:
hosts: dns files ipnodes: dns files
客户机在执行绑定操作时最多能使用的时间(以秒为单位)。请将此属性设置为一个正整数。缺省值为 30。
证书数据库的位置的证书路径。该值为安全数据库文件所在的路径。该值用于 TLS 支持,TLS 支持在 authenticationMethod 和 serviceAuthenticationMethod 属性中指定。缺省值为 /var/ldap。
指定客户机联系目录时应使用的凭证级别。支持的凭证级别为 anonymous、proxy 和 self。如果凭证级别指定为 proxy,则必须指定 authenticationMethod 属性来确定验证机制。同样,如果凭证级别为 proxy 并且至少有一种验证方法需要绑定 DN,则必须设置 proxyDN 和 proxyPassword 属性值。此外,如果将 enableShadowUpdate 设置为 true,则还必须设置 adminDN 和 adminPassword 值。如果凭证级别指定为 self,则 authenticationMethod 必须为 sasl/GSSAPI。
指定缺省的搜索基 DN。无缺省值。serviceSearchDescriptor 属性可用于覆盖给定服务的 defaultSearchBase。
指定客户机搜索操作的缺省搜索范围。可以通过指定 serviceSearchDescriptor 覆盖给定服务的此缺省范围。缺省范围为一级搜索。
由空格分隔的服务器名称或服务器地址列表(IPv4 或 IPv6)。如果您指定服务器名称,请确保 LDAP 客户机可在没有 LDAP 名称服务的情况下对名称进行解析。您必须使用 files 或 dns 解析 LDAP 服务器的名称。如果无法解析 LDAP 服务器名称,命名服务将会失败。
端口号为可选。如果未指定,则会使用缺省的 LDAP 服务器端口号 389,但在验证方法中指定了 TLS 时除外。在这种情况下,缺省 LDAP 服务器端口号为 636。
为 IPv6 地址指定端口号的格式为:
[ipv6_addr]:port
要为 IPv4 地址指定端口号,请使用以下格式:
ipv4_addr:port
如果指定了主机名,请使用以下格式:
host_name:port
如果您使用 TLS,LDAP 服务器的主机名必须与 TLS 证书中的主机名匹配。通常,TLS 证书中的主机名为全限定域名。对于 TLS,LDAP 服务器主机地址必须解析为 TLS 证书中的主机名。您必须使用 files 或 dns 来解析主机地址。
指定 DNS 域名。这将成为计算机的缺省域。缺省值是当前域名。此属性仅在客户机初始化时使用。
指定是否允许客户机更新影子信息。如果设置为 true 并且凭证级别是 proxy,则必须指定 adminDN 和 adminPassword。
指定引用设置。设置为 true 意味着自动接受引用,设置为 false 会导致不遵循引用。缺省值为 true。
指定从服务定义的 objectclass 到备用架构中 objectclass 的映射。该选项可用于更改给定服务使用的缺省架构。在配置文件 IETF 草案中定义了 objectclassMap 的语法。可以多次指定此选项。所有服务的缺省值为 NULL。在以下示例中,
objectclassMap=passwd:posixAccount=unixAccount
对于 passwd 服务,LDAP 客户机将使用 unixAccount 而非 posixAccount 的 LDAP objectclass。这是一个多值属性。
指定要在 defaultServerList 属性指定的服务器之前联系的服务器,可使用以空格分隔的服务器名称或服务器地址列表(IPv4 或 IPv6)。如果您指定服务器名称,请确保 LDAP 客户机可在没有 LDAP 名称服务的情况下对名称进行解析。您必须使用 files 或 dns 解析 LDAP 服务器的名称。如果无法解析 LDAP 服务器名称,命名服务将会失败。
端口号为可选。如果未指定,则会使用缺省的 LDAP 服务器端口号 389,但在验证方法中指定了 TLS 时除外。在这种情况下,缺省 LDAP 服务器端口号为 636。
为 IPv6 地址指定端口号的格式为:
[ipv6_addr]:port
要为 IPv4 地址指定端口号,请使用以下格式:
ipv4_addr:port
如果指定了主机名,请使用以下格式:
host_name:port
如果您使用 TLS,LDAP 服务器的主机名必须与 TLS 证书中的主机名匹配。通常,TLS 证书中的主机名为全限定域名。对于 TLS,LDAP 服务器主机地址必须解析为 TLS 证书中的主机名。您必须使用 files 或 dns 来解析主机地址。
指定配置文件名称。对于 ldapclient init,此属性为现有配置文件的名称,该配置文件可以定期下载,下载间隔取决于 profileTTL 属性的值。对于 ldapclient genprofile,此属性为要生成的配置文件的名称。缺省值为 default。
指定用于获取客户机信息的 TTL 值(以秒为单位)。只有当计算机是使用客户机配置文件初始化的,此属性才有意义。如果您不希望 ldap_cachemgr(1M) 尝试通过 LDAP 服务器刷新 LDAP 客户机配置,请将 profileTTL 设置为 0(零)。有效值为 0(零,表示无期限)或正整数(以秒为单位)。缺省值为 12 小时。
指定代理标识的绑定标识名。如果凭证级别为 proxy 并且至少有一种验证方法需要绑定 DN,则必须使用此选项。没有缺省值。
指定客户机代理口令。如果凭证级别为 proxy 并且至少有一种验证方法需要绑定 DN,则必须使用此选项。无缺省值。
指定 LDAP 搜索操作允许的最大秒数。缺省值是 30 秒。服务器可能具有自己的搜索时间限制。
以 servicename:authenticationmethod 格式指定服务要使用的验证方法,例如:
pam_ldap:tls:simple
如果有多种验证方法,请使用分号分隔的列表。缺省值为无服务验证方法,在这种情况下,每种服务都将缺省为 authenticationMethod 值。支持的验证方法如上所述。
以下三种服务支持此功能:passwd-cmd、keyserv 和 pam_ldap。passwd-cmd 服务用于定义 passwd(1) 用来更改用户的口令及其他属性的验证方法。keyserv 服务用于标识 chkey(1) 和 newkey(1M) 实用程序要使用的验证方法。pam_ldap 服务用于定义在配置了 pam_ldap(5) 时对用户进行验证要使用的验证方法。如果没有为上述服务设置此属性,可以使用 authenticationMethod 属性定义验证方法。这是一个多值属性。
指定服务要使用的凭证级别。可以用空格分隔的列表指定多个值。所有服务的缺省值为 NULL。支持的凭证级别为 anonymous 或 proxy。目前,没有服务使用此属性。这是一个多值属性。
覆盖给定服务的缺省 LDAP 搜索基 DN。此描述符的格式还允许覆盖每个服务的缺省搜索范围和搜索过滤器。在配置文件 IETF 草案中定义了 serviceSearchDescriptor 的语法。所有服务的缺省值为 NULL。这是一个多值属性。在以下示例中,
serviceSearchDescriptor=passwd:ou=people,dc=a1,dc=acme,dc=com?one
对于 passwd 服务,LDAP 客户机将在 ou=people,dc=a1,dc=acme,dc=com 而不是 ou=people,defaultSearchBase 中执行一级搜索。
支持以下选项:
指定 attrName 及其值。有关可能的属性名称和值的完整列表,请参见“用法概要”部分。
指定具有所请求数据库的读取权限的条目。
指定绑定 DN 的口令或 SSL 客户机密钥数据库的口令所在的文件。要保护口令,请在脚本中使用此选项,并将口令存放在安全文件中。此选项与 –w 选项互斥。
静默模式。不生成任何输出。
详细输出。
用于验证绑定 DN 的口令。如果缺少此参数,该命令将会提示输入口令。LDAP 中不支持 NULL 口令。
使用 –w bindPassword 指定要用于验证的口令时,系统的其他用户可通过 ps 命令在脚本文件中或在 shell 历史记录中看到该口令。
如果您提供 “-”(连字符)作为口令,该命令将会提示您输入口令。
指定代理 DN 的口令所在的文件。要保护口令,请在脚本中使用此选项,并将口令存放在安全文件中。此选项与 –a proxyPassword 选项互斥。
指定 adminDN 的口令所在的文件。要保护口令,请在脚本中使用此选项,并将口令存放在安全文件中。此选项与 –a adminPassword 选项互斥。
支持下列操作数:
从中装入配置文件的 LDAP 服务器的地址或名称。系统会使用 nsswitch.conf 文件中指定的当前命名服务。装入配置文件后,将使用配置文件中指定的 preferredServerList 和 defaultServerList。
以下示例说明了如何使用指定 LDAP 服务器上存储的缺省配置文件设置客户机。只有当配置文件中的凭证级别设置为 anonymous 或验证方法设置为 none 时,此命令才会成功。
example# ldapclient init 172.16.100.1示例 2 使用指定 LDAP 服务器上存储的 simple 配置文件设置客户机
以下示例说明了如何使用指定 LDAP 服务器上存储的 simple 配置文件设置客户机。domainname 设置为 xyz.mycompany.com,proxyPassword 设置为 secret。
example# ldapclient init -a profileName=simple \ -a domainName=xyz.mycompany.com \ -a proxyDN=cn=proxyagent,ou=profile,dc=xyz,dc=mycompany,dc=com \ -a proxyPassword=secret '['fe80::a00:20ff:fea3:388']':386示例 3 设置仅使用一台服务器的客户机
以下示例说明了如何设置仅使用一台服务器的客户机。验证方法设置为 none,搜索基设置为 dc=mycompany,dc=com。
example# ldapclient manual -a authenticationMethod=none \ -a defaultSearchBase=dc=mycompany,dc=com \ -a defaultServerList=172.16.100.1示例 4 设置仅使用一台服务器的不遵循引用的客户机
以下示例说明了如何设置仅使用一台服务器的客户机。凭证级别设置为 proxy。验证方法设置为 sasl/CRAM-MD5,并且选择不遵循引用。域名设置为 xyz.mycompany.com,并且 LDAP 服务器在 IP 地址 172.16.100.1 的 386 端口上运行。
example# ldapclient manual \ -a credentialLevel=proxy \ -a authenticationMethod=sasl/CRAM-MD5 \ -a proxyPassword=secret \ -a proxyDN=cn=proxyagent,ou=profile,dc=xyz,dc=mycompany,dc=com \ -a defaultSearchBase=dc=xyz,dc=mycompany,dc=com \ -a domainName=xyz.mycompany.com \ -a followReferrals=false \ -a defaultServerList=172.16.100.1:386示例 5 使用 genprofile 仅设置 defaultSearchBase 和服务器地址
以下示例说明了如何使用 genprofile 命令设置 defaultSearchBase 和服务器地址。
example# ldapclient genprofile -a profileName=myprofile \ -a defaultSearchBase=dc=eng,dc=sun,dc=com \ -a "defaultServerList=172.16.100.1 172.16.234.15:386" \ > myprofile.ldif示例 6 在 IPv6 服务器上创建配置文件
以下示例可在 IPv6 服务器上创建配置文件
example# ldapclient genprofile -a profileName=eng \ -a credentialLevel=proxy \ -a authenticationMethod=sasl/DIGEST-MD5 \ -a defaultSearchBase=dc=eng,dc=acme,dc=com \ -a "serviceSearchDescriptor=passwd:ou=people,dc=a1,dc=acme,dc=com?one"\ -a preferredServerList= '['fe80::a00:20ff:fea3:388']' \ -a "defaultServerList='['fec0::111:a00:20ff:fea3:edcf']' \ '['fec0::111:a00:20ff:feb5:e41']'" > eng.ldif示例 7 创建覆盖每个缺省值的配置文件
以下示例显示了覆盖每个缺省值的配置文件。
example# ldapclient genprofile -a profileName=eng \ -a credentialLevel=proxy -a authenticationMethod=sasl/DIGEST-MD5 \ -a bindTimeLimit=20 \ -a defaultSearchBase=dc=eng,dc=acme,dc=com \ -a "serviceSearchDescriptor=passwd:ou=people,dc=a1,dc=acme,dc=com?one"\ -a serviceAuthenticationMethod=pam_ldap:tls:simple \ -a defaultSearchScope=sub \ -a attributeMap=passwd:uid=employeeNumber \ -a objectclassMap=passwd:posixAccount=unixAccount \ -a followReferrals=false -a profileTTL=6000 \ -a preferredServerList=172.16.100.30 -a searchTimeLimit=30 \ -a "defaultServerList=172.16.200.1 172.16.100.1 192.168.5.6" > eng.ldif
将返回以下退出值:
该命令已成功执行。
出现错误。输出了错误消息。
需要 proxyDN 和 proxyPassword 属性,但未提供这两个属性。
包含客户机的 LDAP 配置。这些文件将无法进行手动修改。其内容不保证是用户可读的。使用 ldapclient 可以更新这些文件。
系统缺省域名,与 LDAP 服务器中数据的域名匹配。请参见 defaultdomain(4)。
用于名称服务转换的配置文件。请参见 nsswitch.conf(4)。
使用 LDAP 和文件配置的名称服务转换的样例配置文件。
有关下列属性的说明,请参见 attributes(5):
|
chkey(1)、ldapadd(1)、ldapdelete(1)、ldaplist(1)、ldapmodify(1)、ldapmodrdn(1)、ldapsearch(1)、idsconfig(1M)、ldapaddent(1M)、ldap_cachemgr(1M)、netcfg(1M)、defaultdomain(4)、nsswitch.conf(4)、resolv.conf(4)、attributes(5)
当前 libldap.so.5 不支持 StartTLS,因此提供的端口号是指 TLS 打开期间使用的端口,而不是用作 StartTLS 系列一部分的端口。为避免超时延迟,建议不要混合使用 TLS 和非 TLS 验证机制。
例如:
-h foo:1000 -a authenticationMethod=tls:simple
...或者:
defaultServerList= foo:1000 authenticationMethod= tls:simple
上例引用的是在主机 foo 端口 1000 上打开的原始 TLS,而非在不安全的端口 1000 上打开的 StartTLS 系列。如果端口 1000 是不安全的,将不会进行连接。
在采用以下设置的第二个示例中,在尝试通过不安全的绑定连接到 foo:636 时,将导致出现明显的超时延迟。
defaultServerList= foo:636 foo:389 authenticationMethod= simple