背景信息:
CentOS 7 3.10.0-327.18.2.el7.x86_64
该服务器将用作 Active Directory 的代理。
目前似乎并不ldapsearch
关心 /etc/openldap/slapd.conf 并且不会绑定,除非我直接使用 -D 和 -w 传递 bindDN 和密码。
我全新安装了 OpenLDAP 服务器
编辑 slapd.conf 如下:
### Schema includes ###########################################################
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
## Module paths ##############################################################
modulepath /usr/lib64/openldap/
moduleload back_ldap
moduleload rwm
## Support both LDAPv2 and LDAPv3
allow bind_v2
# Main settings ###############################################################
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
### Database definition (Proxy to AD) #########################################
database ldap
readonly yes
protocol-version 3
rebind-as-user yes
uri "ldap://10.0.0.90:389"
suffix "DC=secretdomain,DC=com"
idassert-bind bindmethod=simple
binddn="CN=MropenLDAP,OU=Administration,DC=secretdomain,DC=com"
credentials=topsecretpass
mode=none
idassert-authzFrom "*"
overlay rwm
rwm-map attribute uid sAMAccountName
rwm-map attribute mail proxyAddresses
### Logging ###################################################################
logfile /var/log/slapd/slapd.log
loglevel 1
冉:slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
确保所有权和权限正确然后重新启动 slapd。
以下操作无效:
ldapsearch -H ldap://10.0.0.90 -x -b "OU=Administration,DC=secretdomain,DC=com" -v -LLL "(samaccountname=someusername)"
ldapsearch -H ldap://10.0.0.90 -x -b "OU=Administration,DC=secretdomain,DC=com" -v -LLL
它给了我这个错误:
ldap_initialize( ldap://10.0.0.90:389/??base )
filter: (objectclass=*)
requesting: All userApplication attributes
Operations error (1)
Additional information: 000004DC: LdapErr: DSID-0C0906E8, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v1db1
但是,当我直接传递绑定帐户 DN 时,它可以工作。我从 /etc/openldap/slapd.conf 文件中检查了这两条信息是否相同:
ldapsearch -H ldap://10.0.0.90 -x -b "OU=Administration,DC=secretdomain,DC=com" -v -LLL -D "CN=MropenLDAP,OU=Administration,DC=secretdomain,DC=com" "(samaccountname=someusername)" -w topsecretpass
答案1
ldapsearch
不使用slapd.conf
它ldap.conf
(或如下所述的其他一些地方)。Binddn
无法在全局 ldap.conf 文件中进行设置,因为它被视为仅限用户的选项,因此如果在那里发现它会被忽略。
名称
ldap.conf、.ldaprc - LDAP 配置文件/环境变量概要
/etc/openldap/ldap.conf、ldaprc、.ldaprc、$LDAP描述
如果定义了环境变量 LDAPNOINIT,则所有默认值都将被禁用。ldap.conf 配置文件用于设置运行 ldap 客户端时应用的系统范围的默认值。
用户可以在其主目录中创建一个可选配置文件 ldaprc 或 .ldaprc,该文件将用于覆盖系统范围的默认文件。当前工作目录中的文件 ldaprc 也会被使用。
可以使用 LDAPCONF 和 LDAPRC 环境变量指定其他配置文件。LDAPCONF 可以设置为配置文件的路径。此路径可以是绝对路径,也可以是相对于当前工作目录的路径。如果定义了 LDAPRC,则应为当前工作目录或用户主目录中文件的基本名称。
环境变量也可用于增强基于文件的默认值。变量的名称是选项名称加上 LDAP 前缀。例如,要通过环境定义 BASE,请将变量 LDAPBASE 设置为所需的值。
有些选项是用户专用的。如果这些选项存在于 ldap.conf(或 LDAPCONF 指定的文件中),则会被忽略。
因此,按顺序读取以下文件和变量:
变量 $LDAPNOINIT,如果未设置:
系统文件 /etc/openldap/ldap.conf、
用户文件 $HOME/ldaprc、$HOME/.ldaprc、./ldaprc、
系统文件 $LDAPCONF、
用户文件 $HOME/$LDAPRC、$HOME/.$LDAPRC、./$LDAPRC、
变量 $LDAP。
列表中较晚的设置将覆盖较早的设置。
BINDDN <dn>
指定执行 ldap 操作时要使用的默认绑定 DN。绑定 DN 必须以 LDAP 格式指定为可分辨名称。This is a user-only option.