系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)

第 12 章 设置 LDAP 客户机(任务)

本章介绍如何设置 Solaris LDAP 名称服务客户机。

本章包含以下主题:

LDAP 客户机设置的先决条件

要使 Solaris 客户机将 LDAP 用作名称服务,必须满足以下条件:

ldapclient 实用程序可以执行上述除启动服务器之外的所有步骤,因此对于设置 LDAP 客户机而言非常关键。 本章其余部分将举例说明如何使用 ldapclient 实用程序设置 LDAP 客户机,以及如何使用其他各种 LDAP 实用程序获取有关 LDAP 客户机的信息并检查其状态。

LDAP 和服务管理工具

可以使用服务管理工具来管理 LDAP 客户机服务。有关 SMF 的概述,请参阅System Administration Guide: Basic Administration中的“Managing Services (Overview)”。另请参阅 svcadm(1M)svcs( 1) 手册页以获取更多详细信息。

初始化 LDAP 客户机

ldapclient(1M) 是用于在 Solaris 系统中设置 LDAP 客户机的实用程序。ldapclient 假定已使用适当的客户机配置文件配置了服务器。必须先安装服务器并用适当的配置文件对其进行配置,然后才能设置客户机。


注意 –

Solaris 操作系统不支持 NIS 客户机与本机 LDAP 客户机共存于同一台客户机上的配置。


使用 ldapclient 设置客户机主要有两种方法。


注意 –

尽管可以手动配置客户机,但建议不使用此方法。使用配置文件可以降低管理客户机的复杂性和成本。


使用配置文件初始化客户机

如何使用配置文件初始化客户机
  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”

  2. 运行 ldapclient init 命令。


    # ldapclient init \
    
    -a profileName=new \
    
    -a domainName=west.example.com 192.168.0.1
    
    System successfully configured

使用代理凭证

如何使用代理凭证初始化客户机

注意 –

请勿直接编辑任何客户机配置文件。 请使用 ldapclient 创建或修改这些文件的内容。


  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”

  2. 运行 ldapclient(定义代理值)。


    # ldapclient init \
    
    -a proxyDN=cn=proxyagent,ou=profile,dc=west,dc=example,dc=com \
    
    -a domainName=west.example.com \
    
    -a profileName=pit1 \
    
    -a proxyPassword=test1234 192.168.0.1
    
    System successfully configured

    如果要为 proxy 设置要使用的配置文件,则 -a proxyDN 和 -a proxyPassword 是必需的。 由于服务器上保存的配置文件中未存储凭证,因此必须在初始化客户机时提供该信息。与原先在服务器上存储代理凭证的方法相比,此方法更安全。

    代理信息用来创建 /var/ldap/ldap_client_cred。其余信息放置在 /var/ldap/ldap_client_file 中。

手动初始化客户机

超级用户或承担等效角色的管理员可以执行手动客户机配置。但是在此过程中会跳过许多检查,因此系统配置相对容易出错。 此外,还必须在每台计算机中更改设置,而不像使用配置文件时那样,只需在一个集中位置进行更改即可。

如何手动初始化客户机
  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”

  2. 使用 ldapclient manual 初始化客户机。


    # ldapclient manual \
    
    -a domainName=dc=west.example.com \ 
    
    -a credentialLevel=proxy \
    
    -a defaultSearchBase=dc=west,dc=example,dc=com \ 
    
    -a proxyDN=cn=proxyagent,ou=profile,dc=west,dc=example,dc=com \ 
    
    -a proxyPassword=testtest 192.168.0.1
    
  3. 使用 ldapclient list 进行验证。


    NS_LDAP_FILE_VERSION= 2.0
    
    NS_LDAP_BINDDN= cn=proxyagent,ou=profile,dc=west,dc=example,dc=com
    
    NS_LDAP_BINDPASSWD= {NS1}4a3788e8c053424f
    
    NS_LDAP_SERVERS= 192.168.0.1
    
    NS_LDAP_SEARCH_BASEDN= dc=west,dc=example,dc=com
    
    NS_LDAP_CREDENTIAL_LEVEL= proxy

修改手动客户机配置

如何修改手动配置
  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”

  2. 使用 ldapclient mod 命令将身份验证方法更改为 simple


    # ldapclient mod -a authenticationMethod=simple
    
  3. 使用 ldapclient list 验证是否进行了更改。


    # ldapclient list
    
    NS_LDAP_FILE_VERSION= 2.0
    
    NS_LDAP_BINDDN= cn=proxyagent,ou=profile,dc=west,dc=example,dc=com
    
    NS_LDAP_BINDPASSWD= {NS1}4a3788e8c053424f
    
    NS_LDAP_SERVERS= 192.168.0.1
    
    NS_LDAP_SEARCH_BASEDN= dc=west,dc=example,dc=com
    
    NS_LDAP_AUTH= simple
    
    NS_LDAP_CREDENTIAL_LEVEL= proxy

取消客户机初始化

ldapclient uninit 可将客户机名称服务恢复到它在最近的 initmodifymanual 操作之前的状态。换言之,该命令可对采取的上一个步骤执行“撤消”操作。例如,如果对客户机进行配置,使其使用 profile1,然后更改为使用 profile2,则使用 ldapclient uninit 将使客户机恢复使用 profile1

如何取消客户机初始化
  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见System Administration Guide: Security Services中的“Using Role-Based Access Control (Tasks)”

  2. 使用 ldapclient uninit


    # ldapclient uninit
    
    System successfully recovered

设置 TLS 安全性


注意 –

安全数据库文件必须可供任何人读取。请勿在 key3.db 中包括任何私钥。


如果使用 TLS,则必须安装必要的安全数据库。需要特别指出的是,需要证书和密钥数据库文件。例如,如果采用 Netscape Communicator 的旧数据库格式,则需要以下两个文件:cert7.dbkey3.db。或者,如果使用 Mozilla 的新数据库格式,则需要以下三个文件:cert8.dbkey3.dbsecmod.dbcert7.dbcert8.db 文件中包含受信任证书。key3.db 文件包含客户机的密钥。即使 LDAP 名称服务客户机不使用客户机密钥,此文件也必须存在。secmod.db 文件包含安全模块,如 PKCS#11 模块。如果使用的是旧格式,则不需要此文件。


注意 –

在运行 ldapclient 之前,应设置并安装本节中介绍的必需的安全数据库文件。


有关如何创建并管理这些文件的信息,请参见针对您使用的 Sun Java System Directory Server 版本的管理员指南中“管理 SSL” 一章中有关配置 LDAP 客户机以使其使用 SSL 一节。配置后,这些文件必须存储在 LDAP 名称服务客户机所期望的位置。属性 certificatePath 用来确定此位置。 此位置缺省为 /var/ldap

例如,在使用 Netscape CommunicatorTM 设置必需的 cert7.dbkey3.db 文件后,请将这些文件复制到缺省位置。


# cp $HOME/.netscape/cert7.db /var/ldap

# cp $HOME/.netscape/key3.db /var/ldap

然后,向所有人授予读访问权限。


# chmod 444 /var/ldap/cert7.db

# chmod 444 /var/ldap/key3.db

注意 –

Netscape 在 $HOME/.netscape 目录中管理 cert7.dbkey3.db 文件,而 Mozilla 将其 cert8.dbkey3.dbsecmod.db 文件放在 $HOME/.mozilla 下的一个子目录中进行管理。如果要将这些安全数据库用于 LDAP 名称服务客户机,则必须将其副本存储在本地文件系统中。


配置 PAM

pam_ldap 是用于 LDAP 的身份验证和帐户管理 PAM 模块。请参见pam_ldap(5) 手册页和附录 A,Solaris 10 软件中对 DNS、NIS 和 LDAP 的更新,以获取更多有关 pam_ldap 当前支持的功能的信息。

配置 PAM,使其使用 UNIX policy

要配置 PAM,使其使用 UNIX policy,请参考pam_ldap 的示例 pam.conf 文件中的样例进行操作。向客户机的 /etc/pam.conf 文件中添加包含 pam_ldap.so.1 的行。有关详细信息,请参见 pam.conf(4) 手册页。

配置 PAM,使其使用 LDAP server_policy

要配置 PAM,使其使用 LDAP server_policy,请遵照为帐户管理配置的 pam_ldap 的示例 pam_conf 文件中的样例。向客户机的 /etc/pam.conf 文件中添加包含 pam_ldap.so.1 的行。此外,如果 pam.conf 文件样例中的任何 PAM 模块指定了 binding 标志和 server_policy 选项,则必须对该客户机的 /etc/pam.conf 文件中的对应模块使用相同的标志和选项。 而且,还要将 server_policy 选项添加到包含服务模块 pam_authtok_store.so.1 的行中。


注意 –

启用 pam_ldap 帐户管理后,所有用户在每次登录系统时都必须提供口令。进行验证时必须提供登录口令。因此,使用 rshrloginssh等工具进行的不基于口令的登录将会失败。


检索 LDAP 名称服务信息

使用 ldaplist 实用程序可以检索有关 LDAP 名称服务的信息。此 LDAP 实用程序会以 LDIF 格式列出 LDAP 服务器中的名称信息。该实用程序可用于进行故障排除。 有关详细信息,请参见 ldaplist(1)

列出所有 LDAP 容器

ldaplist 显示输出时以空白行分隔记录,这对显示由多行组成的大量记录很有帮助。


注意 –

ldaplist 的输出取决于客户机配置。例如,如果 ns_ldap_search 的值是 sub 而不是 oneldaplist 将列出当前搜索 baseDN 下的所有项。


下面是 ldaplist 输出的示例。


# ldaplist

dn: ou=people,dc=west,dc=example,dc=com



dn: ou=group,dc=west,dc=example,dc=com



dn: ou=rpc,dc=west,dc=example,dc=com



dn: ou=protocols,dc=west,dc=example,dc=com



dn: ou=networks,dc=west,dc=example,dc=com



dn: ou=netgroup,dc=west,dc=example,dc=com



dn: ou=aliases,dc=west,dc=example,dc=com



dn: ou=hosts,dc=west,dc=example,dc=com



dn: ou=services,dc=west,dc=example,dc=com



dn: ou=ethers,dc=west,dc=example,dc=com



dn: ou=profile,dc=west,dc=example,dc=com



dn: automountmap=auto_home,dc=west,dc=example,dc=com



dn: automountmap=auto_direct,dc=west,dc=example,dc=com



dn: automountmap=auto_master,dc=west,dc=example,dc=com



dn: automountmap=auto_shared,dc=west,dc=example,dc=com

列出所有用户项属性

要列出特定信息(如用户的 passwd 项),请按如下所示使用 getent


# getent passwd user1

user1::30641:10:Joe Q. User:/home/user1:/bin/csh

如果要列出所有属性,请将 ldaplist-l 选项结合使用。


# ldaplist -l passwd user1dn: uid=user1,ou=People,dc=west,dc=example,dc=com

        uid: user1

        cn: user1

        uidNumber: 30641

        gidNumber: 10

        gecos: Joe Q. User

        homeDirectory: /home/user1

        loginShell: /bin/csh

        objectClass: top

        objectClass: shadowAccount

        objectClass: account

        objectClass: posixAccount

        shadowLastChange: 6445

自定义 LDAP 客户机环境

以下各节介绍如何自定义客户机环境。

可以更改任何服务,但一定要小心,因为如果未在服务器上为指定的服务填充数据,则服务会停止工作。而且,在某些情况下,可能不会按缺省情况设置文件。

为 LDAP 修改 nsswitch.conf 文件

可以修改 /etc/nsswitch.conf 文件,以自定义每个服务获取信息的位置。 缺省设置存储在 /etc/nsswitch.ldap 中,在初始化客户机时 ldapclient 使用此文件创建 /etc/nsswitch.conf 文件。

和 LDAP 一起启用 DNS

如果要通过设置 /etc/resolv.conf 文件来启用 DNS,请按如下所示将 DNS 添加到主机行。


hosts:      ldap dns [NOTFOUND=return] files