维护和管理LDAP之OpenDJ

目录

基本介绍

服务专有名词

安装

命令行工具

密码管理

重置管理员密码

管理服务器进程

管理索引

如何搜索

管理索引

管理目录数据

测试数据

导出数据

导入数据

LDIF文件数据查看和比较

数据存储-Backends

配置连接

开启 HTTP/HTTPS连接

使用 REST访问 -openDJ3.0

使用证书

安全设置

配置权限和访问控制

访问控制指令 (ACI)

权限管理

Replication -同步

备份与恢复

监控、日志记录和警报

问题处理:

Unable to connect to the server at "xxxx" on port 4444

exception is javax.net.ssl.SSLHandshakeException:

backend-userRoot.lock was not granted

参阅:


基本介绍

        LDAP基于X.500标准的子集是一个目录服务,设计主要考虑了快速查找(提供索引)和高可用性,而OpenDJ用Java编写 基于轻量级目录访问协议 Lightweight Directory Access Protocol(LDAP)支持:

        DAPv3协议。

        目录服务标记语言:Directory Services Markup Language (DSML)(已XML 格式描述目录数据和基本目录操作)

        超文本协议:Hypertext Transfer Protocol (HTTP),REST

OpenDJ 还提供:

  • 提供客户端管理工具。
  • 支持导入、导出、备份和恢复目录数据。
  • 支持配置管理权限和细粒度的访问控制。
  • 支持复制同步

基本结构

        可以在ldap-demo中了解大致的结构

        LDAP 目录数据被组织成条目,条目包含许多属性,有些是必须的,有些是自定义的,例如DN 就是必须的且唯一。

        LDAP 条目在目录中是金字塔结构,最顶层是DC,正是这样的结构,为了方便管理添加了更多的组织结构,例如:UO、CN等

LDAP常常用来与AD域控等企业系统平台结合一起做统一账号管理,一般用来做单点登录。

服务专有名词

baseDN在配置时 一般都是使用CD标签,但也不是必须的。也可以指定为 o=PW,c=CN

缩写

全称

解释

DN

distinguished name

dn: uid=bjensen,ou=People,ou=company,dc=example,dc=com 唯一标识符,显示在条目顶部,通常由不区分大小写的属性组成

DC

domain component

dc=example,dc=com 倒叙打方式将域名拆成多个,

baseDN

基于DN,最小单位为DC,最大为DN。在命令行或者客户端中使用

bindDN

root(超级管理员)用户一般默认为cn=Directory Manager

OU

Organization Unit

组织单位,可以是多个,也OU深度

CN

Common Name

公共名称,一般不出现DN中,root(超级管理员)用户一般默认为cn=Directory Manager

DSE

"空"的条目,保存DN的组织信息,在信息导出export-ldif 后的文件位于最上层

Backend ID

存储空间,也叫 backends name , 用户默认为userRoot,系统默认adminRoot

安装

需要java环境支持:Java Environment.

官方提供了GUI方式和命令行方式(Command-Line):详细步骤请查看:Home · OpenIdentityPlatform/OpenDJ Wiki · GitHub

可选:

    • To Move Data from a PDB Backend to a JE Backend
    • To Install OpenDJ REST to LDAP Gateway
    • To Install OpenDJ DSML gateway
系统环境
/etc/security/limits.confopendj soft nofile 65536opendj hard nofile 131072./setup --cli
./uninstall --cli  #卸载

命令行工具

详细的工具使用方法在:./bin/xxx options --help (Windows 是 ./bat/xxx.bat)

使用过程中用到过的:

    • 进程启停: start-ds、status、stop-ds、create-rc-script(生成启动脚本)
    • 导出导入:export-ldif、import-ldif、ldif-diff(LDIF 文件比较)
    • 备份恢复:backup、restore
    • 用户管理:ldapmodify、ldapdelete、ldapsearch(查询)、ldapcompare(比较)
    • 配置管理:dsconfig
    • 集群同步:dsreplication
    • index管理:verify-index(验证索引正确,需要关闭服务)、rebuild-index

常见的通用参数

    • --trustAll选项信任所有 SSL 证书,例如用于测试的默认自签名证书。
    • --no-prompt 非交互模式,会导致非信任证书客户端执行失败。

在交互式命令行中,为了简单可以省略非必须的默认参数,比如./bin/dsconfig list-connection-handlers

密码管理

密码策略不仅管理密码,还管理账户锁定
用户的密码策略可以复制同步,服务器的密码策略配置不能复制同步,多节点需要每个节点配置
后端存储使用SSHA 哈希
可以配置强制定期更改密码、新用户在首次登录后更改密码、帐户锁定、禁用帐户
[root@tserver121 opendj]# ./bin/ldapsearch --baseDN dc=example,dc=com --bindDN "cn=Directory Manager" "(uid=bjensen)"  pwdPolicySubentry
dn: uid=bjensen,ou=People,dc=example,dc=com 
pwdPolicySubentry: cn=Default Password Policy,cn=Password Policies,cn=config  #默认的密码策略需要配置objectClass: pwdValidatorPolicy 对应的验证器
重置管理员密码
#生成密码
encode-password --storageScheme SSHA512 --clearPassword password修改配置文件 ./config/config.ldif
userpassword:   #替换新的密码 重启服务
cn: Directory Manager

管理服务器进程

./bin/start-ds      后端启动
./bin/start-ds -N   前端启动
./bin/start-ds -L   使用上次成功启动的配置启动  ./config/config.ldif.startok
./bin/start-ds -s   显示系统信息./bin/stop-ds
./bin/stop-ds  -R   重启
./bin/stop-ds  -r, --stopReason   #关闭原因,用来排查问题开机启动./bin/create-rc-script  --outputFile /etc/init.d/opendj  --userName root  #生产启动脚本chkconfig opendj onservice opendj start

管理索引

索引是为了能够快速响应搜索,越具体的DN 搜索越快,系统默认会提供cn、uid、mail、objectClass 等默认索引
查看未被索引的日志grep -B 1 unindexed ./logs/access
#打开索引分析功能
./bin/dsconfig  set-backend-prop --set index-filter-analyzer-enabled:true  --trustAll   #选择Backend 默认为userRoot
在使用客户端搜索或者使用ldapsearch搜索时,将结果保存在内存中,可以通过界面读取cn=monitor#执行搜索
[root@tserver121 opendj]# ./bin/ldapsearch --bindDN "cn=Directory Manager" --baseDN "cn=userRoot Storage,cn=monitor" "(objectclass=*)" filter-use
filter-use: (uid=jdoe) hits:2 maxmatches:1 message:  #hits(使用过滤器的次数)、maxmatches(匹配数)#debugsearchindex 不会执行搜索,而是返回调试信息
[root@tserver121 opendj]# ./bin/ldapsearch --baseDN dc=example,dc=com --bindDN "cn=Directory Manager" "(uid=user.1000)" * debugsearchindex
dn: cn=debugsearch
debugsearchindex: filter=(uid=user.1000)[INDEX:uid.equality][COUNT:1] final=[COUNT:1]#未被索引
[root@tserver121 opendj]# ./bin/ldapsearch --baseDN dc=example,dc=com --bindDN "cn=Directory Manager"  "(uid=*)"  debugsearchindex 
dn: cn=debugsearch
debugsearchindex: filter=(uid=*)[INDEX:uid.presence][NOT-INDEXED] scope=sub[NOT-INDEXED] final=[NOT-INDEXED]   #NOT-INDEXED[INDEX:index-id]标识可用于查找此过滤器的匹配项的索引。[COUNT:entry-count]指定与过滤器匹配的条目数。[LIMIT-EXCEEDED]表示服务器维护一个匹配的索引,但是索引条目限制已超出指定的值。[NOT-INDEXED]表示没有找到匹配的索引值或索引键。
如何搜索
./bin/backendstat 执行有点问题 需要关闭进程 见'backend-userRoot.lock was not granted'
./bin/backendstat list-indexes
./bin/backendstat dump-index --indexName state 详细信息
 # - 是否存在搜索的属性-uid 比较快,更少占用空间
./bin/ldapsearch --baseDN dc=example,dc=com --bindDN "cn=Directory Manager"  "(uid=*)" -#只列出mail字段 数据多的情况下非常有用
./bin/ldapsearch --baseDN dc=example,dc=com --bindDN "cn=Directory Manager"  "(uid=*)" mail(uid=bjensen)  
(uid~=bjensen)    #相似 看起来不准
(uid=bj*)         #*匹配
(uid>=bjensen)    #相似排序   看起来也不准 
管理索引
条目限制 --set index-entry-limit:10000 #不常用,默认限制基本够用 backendstat show-index-status 查看
./bin/verify-index --baseDN dc=example,dc=com  --index cn  --clean  --countErrors #检查以下的不常用
./bin/dsconfig create-backend-index  --bindDN "cn=Directory Manager" --backend-name myData  --index-name cn  --set index-type:equality #创建索引
./bin/dsconfig set-backend-index-prop --bindDN "cn=Directory Manager" --backend-name myData  --index-name cn  --set index-type:approximate  #创近似索引
rebuild-index --baseDN dc=example,dc=com  --index cn   #重建索引
rebuild-index --baseDN dc=example,dc=com --rebuildDegraded #重建降级的索引
rebuild-index --baseDN dc=example,dc=com --clearDegradedState  #清理和降级

管理目录数据

条目的属性定义- 在config/schema目录中存放的所有的条目属性配置,OpenDJ 按排序顺序读取模式文件,99-user.ldif 属于用户自定义的配置 在随后加载
比如在schema/00-core.ldif 文件中对于mail定义:
attributeTypes: ( 0.9.2342.19200300.100.1.3 NAME ( 'mail' 'rfc822Mailbox' )
EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} X-ORIGIN 'RFC 4524' )
# OID 开头

objectClass::所有条目均有一个用于标识其对象类的属性
测试数据
#测试数据:config/MakeLDIF 下面有剩测试数据的模版example.template 以及其它基本测试数据,使用make-ldif生成测试数据文件
./bin/make-ldif  --randomSeed 0  --templateFile ./config/MakeLDIF/example.template  --ldifFile /tmp/generated.ldif
导出数据
导出数据,离线导出更快,可以指定backendID,
#--start 20111221230000  #定时导出  停止服务器会在启动后尝试执行该任务
#--trustAll选项信任所有 SSL 证书,例如用于测试的默认自签名证书。
./bin/export-ldif  --bindDN "cn=Directory Manager"  --includeBranch dc=example,dc=org  --backendID userRoot  --ldifFile /root/backup.ldif  --trustAll
导入数据
导入需要验证字段, config/schema/99-user.ldif 存放的是用户定义的属性
导入数据 import-ldif命令参数与export-ldif一致的
#--start 20111221230000  #定时导出  停止服务器会在启动后尝试执行该任务
#--trustAll选项信任所有 SSL 证书,例如用于测试的默认自签名证书。
./bin/import-ldif  --bindDN "cn=Directory Manager"  --includeBranch dc=example,dc=org  --backendID userRoot  --ldifFile /root/backup.ldif  --trustAll
LDIF文件数据查看和比较

LDIF文件可以使用less/view等系统工具去查看数据,openDJ提供了 ldifsearchldifmodifyldif-diffldifmodify常常用来合并文件。

数据存储-Backends
提供 JE 和 PDB 类型的选择。常用PDB类型,可以通过命令切换使用类型
默认存放位置:db/userRoot/
./bin/dsconfig 命令修改参数后 会修改 ./config/config.ldif 并且会将修改前的配置文件存在 ./config/archived-configs 目录下
./bin/dsconfig  --help-all  #查看功能#创建
dsconfig  create-backend  --bindDN "cn=Directory Manager"  --type pdb  --backend-name myData  --set base-dn:dc=example,dc=com  --set enabled:true  --set db-cache-percent:25  --trustAll  --no-prompt[root@tserver121 opendj]# ./bin/dsconfig  list-backends
Backend   : Type : enabled : base-dn
----------:------:---------:--------------------
adminRoot : ldif : true    : cn=admin data
myData    : pdb  : true    : "dc=example,dc=com"
userRoot  : pdb  : true    : "o=example,c=com"#查看
dsconfig  get-backend-prop   ····
dsconfig  list-backend-indexes ···修改
dsconfig  set-backend-prop   ····删除
dsconfig    delete-backend

关于加密

默认db存储文件可以通过strings命令查看部分数据,可以选择牺牲掉部分性能加密文件存储 --set confidentiality-enabled:true

传输加密:可以使用StartTLS 、SSL等配置

配置连接

openDJ 默认端口和协议:

[root@tserver121 opendj]# ./bin/status--- Connection Handlers ---Address:Port : Protocol    : State-------------:-------------:-----------           : LDIF        : Disabled8989         : Replication : Enabled0.0.0.0:161  : SNMP        : Disabled0.0.0.0:389  : LDAP        : Enabled0.0.0.0:636  : LDAPS       : Enabled0.0.0.0:1689 : JMX         : Disabled0.0.0.0:8080 : HTTP        : Disabled
加上Administration Connector: Port 4444 (LDAPS)[root@tserver121 opendj]# ./bin/dsconfig list-connection-handlers  获得handler-nameConnection Handler       : Type : enabled : listen-port : use-ssl-------------------------:------:---------:-------------:--------HTTP Connection Handler  : http : false   : 8080        : falseJMX Connection Handler   : jmx  : false   : 1689        : falseLDAP Connection Handler  : ldap : false   : 389         : falseLDAPS Connection Handler : ldap : true    : 636         : trueLDIF Connection Handler  : ldif : false   : -           : -SNMP Connection Handler  : snmp : false   : 161         : -#开启和关闭 389  
./bin/dsconfig  set-connection-handler-prop --handler-name "LDAP Connection Handler"  --set enabled:false  --trustAll 
./bin/dsconfig  set-connection-handler-prop --handler-name "LDAP Connection Handler"  --set enabled:true   --trustAll 
#use-ssl
./bin/dsconfig  set-connection-handler-prop --handler-name "LDAPS Connection Handler"  --set use-ssl:true  --trustAll 
开启 HTTP/HTTPS连接
REST访问数据映射、 REST访问权限、 REST认证等 To Set Up REST Access to User Data、

#开启 http 8080
./bin/dsconfig  set-connection-handler-prop --handler-name "HTTP Connection Handler"  --set enabled:true   --trustAll#启用 HTTP 访问日志  --/logs/http-access 还可以配置Debugr日志与审计日志 也可以在config.ldif 中修改 当起不来的时候 非常有用
[root@tserver121 opendj]# ./bin/dsconfig  list-log-publishers  获得 log  publisher-nameLog Publisher                 : Type                   : enabled------------------------------:------------------------:--------File-Based Access Logger      : file-based-access      : trueFile-Based Audit Logger       : file-based-audit       : falseFile-Based Debug Logger       : file-based-debug       : falseFile-Based Error Logger       : file-based-error       : trueFile-Based HTTP Access Logger : file-based-http-access : falseReplication Repair Logger     : file-based-error       : true
[root@tserver121 opendj]# ./bin/dsconfig  set-log-publisher-prop  --publisher-name "File-Based HTTP Access Logger" --set enabled:true  --trustAll#开启HTTPS(指定JKS) 
./bin/dsconfig  set-trust-manager-provider-prop  --provider-name "Blind Trust"  --set enabled:true    --trustAll./bin/dsconfig  set-connection-handler-prop --handler-name "HTTP Connection Handler"  \--set use-ssl:true --set key-manager-provider:JKS  --set trust-manager-provider:"Blind Trust" --trustAll[root@tserver121 opendj]# ./bin/stop-ds --restart
使用 REST访问 -openDJ3.0
修改config/http-config.json 配置信息--修改之前记得备份
#config/http-config.json 修改修改实际的dc 修改完成后需要重启
"searchBaseDN"         : "ou=people,dc=example,dc=com",
"baseDN"              : "ou=people,dc=example,dc=com",[root@tserver121 opendj]# ./bin/stop-ds --restart
#查询
[root@tserver121 opendj]# curl http://host:8080/users/jdoe   --user jdoe:password
{"_id":"jdoe","_rev":"000000003f07e62f","schemas":["urn:scim:schemas:core:1.0"],"displayName":"John Doe","name":{"familyName":"Doe"},"contactInformation":{},"meta":{"created":"2024-06-20T10:30:36Z"}}
使用证书
keytool命令将客户端应用程序的二进制格式自签名证书添加到 OpenDJ 信任库的命令

服务端需要打开LDAPS 在安装的时候可以选择
Address:Port : Protocol : State
-------------:-------------:---------
0.0.0.0:636 : LDAPS : Enabled
#查看opendj已安装服务器证书  server-cert.crt  默认证书
keytool  -list  -alias server-cert  -keystore ./config/keystore  -storepass `cat ./config/keystore.pin`#如果有自己的证书 列如myapp-cert.crt 建议使用`import` 导入到truststore 文件中
keytool  -import  -alias myapp-cert  -file myapp-cert.crt  -keystore ./config/truststore  -storepass `cat ./config/keystore.pin`#导出
keytool  -export  -alias server-cert  -file server-cert.crt  -keystore ./config/keystore  -storepass `cat ./config/keystore.pin`#删除
keytool -delete -alias server-cert

是否能将opendj的 默认证书添加到系统默认 --测试中

#将server-cert.crt 默认证书导出使用
keytool  -export  -alias server-cert  -file server-cert.crt  -keystore ./config/keystore  -storepass `cat ./config/keystore.pin`#拷贝到系统证书目录下
mv server-cert.crt  /etc/pki/ca-trust/source/anchors/#更新
update-ca-trust extract
安全设置
  • 限制匿名访问
攻击者可以直接通过LDAP客户端工具使用匿名连接既可访问LDAP中的隐秘数据。
./bin/dsconfig  set-global-configuration-prop --set reject-unauthenticated-requests:true 
  • 拒绝空密码访问
默认值: true
./bin/dsconfig  set-global-configuration-prop --set bind-with-dn-requires-password:true 
  • 返回有关绑定失败debug信息
默认值: false
./bin/dsconfig  set-global-configuration-prop --set return-bind-error-messages:false

配置权限和访问控制

访问控制指令 (ACI)
为了安全 默认是不允许访问的

匹配规则

  • 匹配顺序:目录结构 从下往上;匹配过程中,匹配到拒绝策略后,立即拒绝
  • 若无拒绝策略,则匹配允许策略
  • 若拒绝和允许都没匹配中,则默认拒绝

语法主要由四部分组成

targets(version 3.0;acl "name";permissions subjects;)

变量

解释

targets

指明 条目(target = "ldap:///*=*,*,dc=example,dc=com")、属性(targetattr != "attr-list")

控制和扩展操作(extop != "OID")。用 ()括起来,多个targets之前使用AND连接

name

描述作用

permissions

allow(action[, action …]) 权限:addall(除export, import, proxy)、comparedeleteexportimportproxyreadsearchselfwritewrite

subjects

客户端访问限制条件,指定连接的人员、连接时间、连接地点和连接方式

#允许对除密码之外的所有属性进行匿名读取访问
dn: dc=example,dc=com
objectClass: domain
objectClass: top
dc: example
aci: (target ="ldap:///dc=example,dc=com")(targetattr !="userPassword")(version 3.0;acl "Anonymous read-search access";allow (read, search, compare)(userdn = "ldap:///anyone");)
aci: (target="ldap:///dc=example,dc=com") (targetattr ="*")(version 3.0; acl "allow all Admin group"; allow(all) groupdn ="ldap:///cn=Directory Administrators,ou=Groups,dc=example,dc=com";)
权限管理
独立于acl
#部分权限
*                       #所有权限,默认为root权限
backend-backup*
backend-restore*
bypass-acl*             #忽略ACL配置
bypass-lockdown*        #忽略操作锁
cancel-request*         #取消任何客户请求
changelog-read*         #查看changelog(在cn=changelog)
config-read*
config-write*
data-sync               #同步数据
ldif-export*
ldif-import*
modify-acl*
password-reset*         #重置其他用户的密码
privilege-change*       #更改分配给用户的权限
subentry-write*         执行 LDAP 子条目写入操作

如何配置

#权限使用ds-privilege-name 属性指定
cat privilege.ldif
dn: uid=kvaughan,ou=People,dc=example,dc=com
changetype: modify
add: ds-privilege-name
ds-privilege-name: config-read
ds-privilege-name: password-reset#生效
./bin/ldapmodify  --bindDN "cn=Directory Manager"  --filename privilege.ldif
----------------------------------------------------------------------------
#使用组属性cat collective.ldif
dn: cn=Administrator Privileges,dc=example,dc=com
objectClass: collectiveAttributeSubentry
objectClass: extensibleObject
objectClass: subentry
objectClass: top
cn: Administrator Privileges
ds-privilege-name;collective: config-read
ds-privilege-name;collective: config-write
ds-privilege-name;collective: ldif-export
ds-privilege-name;collective: modify-acl
ds-privilege-name;collective: password-reset
ds-privilege-name;collective: proxied-auth
subtreeSpecification: {base "ou=people", specificationFilter"(isMemberOf=cn=Directory Administrators,ou=Groups,dc=example,dc=com)" }#生效
./bin/ldapmodify  --bindDN "cn=Directory Manager"  --filename collective.ldif

Replication -同步

是基于时间来定义最新数据,更新频率较高的话可以定期清理历史信息,清理频率不要过高
同步复制是基于DN指定,不同的DN可以同步不同的节点,另外系统管理的cn=schema和cn=admin data 也会被复制
同步的优先级:越"近"的越优先,权重越高的越优先
onlyReplicationServer 仅用来复制的服务器得大集群了吧···
#新服务器作为host2 来配置
./bin/dsreplication \enable \--baseDN dc=example,dc=com \--host1 opendj.example.com \--port1 4444 \--bindDN1 "cn=Directory Manager" \--replicationPort1 8989 \--host2 opendj2.example.com \--port2 4444 \--bindDN2 "cn=Directory Manager" \--replicationPort2 8989 \--trustAll #新的服务器最好先执行dsreplication initialize-all 然后在创建同步#禁止同步
dsconfig set-synchronization-provider-prop --port 4444 --hostname opendj2.example.com --bindDN "cn=Directory Manager" --bindPassword password --provider-name "Multimaster Synchronization" --set enabled:false  --trustAll停止同步
sreplication  disable  --disableAll   --hostname opendj2.example.com 

备份与恢复

如果是单节点的话 很有需要做异机备份
关于配置的的配置在config/archived-configs/ 每次修改配置程序会自动备份
可以加密备份数据
在线备份
./bin/backup  --port 4444   --bindDN "cn=Directory Manager"  --backendID userRoot   --backupDirectory /usr/local/src/userRoot/  --start 0
./bin/backup  --port 4444   --bindDN "cn=Directory Manager"  --backUpAll  --backupDirectory /usr/local/src/userRoot/  --start 0  #备份所有数据#定时备份
./bin/backup  --port 4444   --bindDN "cn=Directory Manager"  --backUpAll  --backupDirectory /usr/local/src/userRoot/   --recurringTask "00 02 * * *"#增量备份
./bin/backup  --port 4444   --bindDN "cn=Directory Manager"  --backendID userRoot   --backupDirectory /usr/local/src/userRoot/     --incremental  --recurringTask "00 02 * * *" 离线备份
./bin/backup --backendID userRoot   --backupDirectory /usr/local/src/userRoot/  离线恢复
./bin/restore --backupDirectory /export/rpm/OpenDJ-3.0.0/userRoot/ --listBackups   #查看--backupID
./bin/restore --backupDirectory /export/rpm/OpenDJ-3.0.0/userRoot/  --backupID 20240620075220Z

监控、日志记录和警报

公开监控信息存在在 cn=monitor
使用 Elasticsearch 审计日志处理程序

问题处理:

Unable to connect to the server at "xxxx" on port 4444
[root@tserver121 opendj]# ./bin/dsconfig   list-backend-indexes  --trustAll --no-prompt
Unable to connect to the server at "xxxx" on port 4444
-------------------------------------------------------------------
Administration Connector: Port 4444 (LDAPS)   为LDAPS需要配置ssl证书
而且--no-prompt使用的是非交互模式 所以会执行失败
exception is javax.net.ssl.SSLHandshakeException:
[root@tserver121 opendj]# ./bin/status 
>>>> Specify OpenDJ LDAP connection parameters
Administrator user bind DN [cn=Directory Manager]: 
Password for user 'cn=Directory Manager': Error reading configuration. Details:
javax.naming.CommunicationException: simple bind failed: 0.0.0.0:4444 [Root
exception is javax.net.ssl.SSLHandshakeException:
java.security.cert.CertificateException: No subject alternative names present]
-------------------------------------------------------------------
Administration Connector: Port 4444 (LDAPS)   为LDAPS需要配置ssl证书简单的办法是:在交互命令中 接--trustAll参数,或者在交互命令中选择  3) Yes, also add it to a truststore  
backend-userRoot.lock was not granted
[root@tserver121 opendj]# ./bin/backendstat llist-backends --backendID userRoot
userRoot:  The exclusive lock requested for file
/export/app/opendj/locks/backend-userRoot.lock was not granted, which
indicates that another process already holds a shared or exclusive lock on
that file.  This generally means that some other process has exclusive access
-------------------------------------------------------------------
# 文件被程序占用,关闭程序可以执行
[root@tserver121 opendj]# fuser -uv locks/*USER        PID ACCESS COMMAND
/export/app/opendj/locks/backend-adminRoot.lock:root      53283 f.... (root)java可能是因为不能查看userRoot 的backend 的状态,但是在导入导出、备份等可以使用
可以使用 ./bin/dsconfig   list-backends --trustAll  查看

参阅:

OpenDJ:Home · OpenIdentityPlatform/OpenDJ Wiki · GitHub

web管理端phpLDAPadmin:PLA - 🥇 The BEST ldap admin tool!

web管理端web2ldap:web2ldap - How to improve usability

ldap 工具https://ldap.com/ldap-tools/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1473037.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

多特征线性回归

目录 一、多特征符号意义说明:二、多特征模型表示:三、Numpy向量表示、内积计算:1.向量表示:2.内积计算: 四、多元线性回归梯度下降算法: 一、多特征符号意义说明: x下标j:表示第j个…

Google Earth Engine(GEE)——控制台ui.Textbox复制你想要的textbox

结果 函数: ui.Textbox(placeholder, value, onChange, disabled, style) A textbox that enables the user to input text information. Arguments: placeholder (String, optional): The placeholder text to display when the textbox is empty. Defaults to none. …

Facebook社群对于个人和品牌的价值探讨

Facebook社群作为连接兴趣和人群的重要平台,不仅为个人提供了交流互动的空间,也成为品牌建立和发展的重要途径。本文将深入探讨Facebook社群在个人和品牌发展中的多重价值,以及如何有效利用这些社群来实现个人和品牌的目标。 1. 社群对个人的…

如何在 ArcGIS Pro 中加载古地图

我们在《魏蜀吴三国分布示意图》一文中,为你分享三国时期的分布示意图。 现在再为你分享一个在线古地图,以及如何在ArcGIS Pro中加载在线古地图的方法。 如何加载在线古地图 打开ArcGIS Pro,在菜单栏上点击插入,选择“连接\服务…

在linux系统centos上面安装php7gmp扩展

ps:在ubuntu上面安装gmp(最简单) $ sudo apt-get install php7.0-gmp然后再php.ini添加extensionphp_gmp.so <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<…

【车载开发系列】PWM与占空比

【车载开发系列】PWM与占空比 一. 基本概念 1&#xff09;PWM PWM全称Pulse Width Modulation&#xff1a;脉冲宽度调制&#xff08;简称脉宽调制&#xff0c;通俗的讲就是调节脉冲的宽度&#xff09;&#xff0c;是电子电力应用中非常重要的一种控制技术。 脉冲宽度调制&am…

hitcontraining_uaf

BUUCTF[PWN][堆] 题目&#xff1a;BUUCTF在线评测 (buuoj.cn) 程序del是没有将申请的指针清零&#xff0c;导致可以再次调用输出print。 查看add_note函数&#xff1a;根据当前 notelist 是否为空&#xff0c;来申请了一个8字节的空间将地址(指针)放在notelist[i]中&#xff…

Spring源码十一:事件驱动

上一篇Spring源码十&#xff1a;BeanPostProcess中&#xff0c;我们介绍了BeanPostProcessor是Spring框架提供的一个强大工具&#xff0c;它允许我们开发者在Bean的生命周期中的特定点进行自定义操作。通过实现BeanPostProcessor接口&#xff0c;开发者可以插入自己的逻辑&…

一文带你了解“商贸物流大脑”

商贸物流大脑源于实体物流&#xff0c;物理世界的实体物流是构建商贸物流大脑的基础。商贸物流大脑应该是物理世界的实际物流系统和相应的虚拟物流系统两个层面血肉相连、相互作用、有机统一的整体。商贸物流的研究内容包括数字产业化和物流数字化两大部分。信息产业化是进入物…

政务单位网站SSL证书选择策略

在数字化快速发展的今天&#xff0c;政务单位网站作为政府与公众沟通的重要桥梁&#xff0c;其安全性和可信度显得尤为重要。SSL证书作为保障网站安全的重要手段&#xff0c;其选择对于政务单位网站来说至关重要。本文将探讨政务单位网站在选择SSL证书时应该考虑的因素&#xf…

STM32入门笔记(03): ADC低通滤波(IIR)(SPL库函数版)(2)

A/D转换的常用技术有逐次逼近式、双积分式、并行式和跟踪比较式等。目前用的较多的是前3种。 A/D转换器的主要技术指标 转换时间 分辨率 例如&#xff0c;8位A/D转换器的数字输出量的变化范围为0&#xff5e;255&#xff0c;当输入电压的满刻度为5V时&#xff0c;数字量每变化…

PLM系统:PLM系统如何重塑产品生命周期管理

PLM系统&#xff1a;重塑产品生命周期管理的未来 在当今快速变化的商业环境中&#xff0c;产品生命周期管理&#xff08;PLM&#xff09;系统正逐渐成为企业提升竞争力、加速创新并优化运营流程的关键工具。随着技术的不断进步和市场需求的日益复杂化&#xff0c;传统的手动或…

直播预告 | VMware大规模迁移实战,HyperMotion助力业务高效迁移

2006年核高基专项启动&#xff0c;2022年国家79号文件要求2027年央国企100%完成信创改造……国家一系列信创改造政策的推动&#xff0c;让服务器虚拟化软件巨头VMware在中国的市场份额迅速缩水。 加之VMware永久授权的取消和部分软件组件销售策略的变更&#xff0c;导致VMware…

昇思25天学习打卡营第16天|文本解码原理——以MindNLP为例

在大模型中&#xff0c;文本解码通常是指在自然语言处理&#xff08;NLP&#xff09;任务中使用的大型神经网络模型&#xff08;如Transformer架构的模型&#xff09;将编码后的文本数据转换回可读的原始文本的过程。这些模型在处理自然语言时&#xff0c;首先将输入文本&#…

长沙(市场调研公司)源点 企业如何决定是否需要开展市场调研?

长沙源点调研咨询认为&#xff1a;对于一个特定问题&#xff0c;管理者在面临几种解决问题的方案时&#xff0c;不应该凭直觉草率开展应用性市场调研。事实上&#xff0c;首先需要做的决策是是否需要开展调研。在下述情况下&#xff0c;最好不要做调研&#xff1a; *缺乏资源。…

重大更新来袭!!《植物大战僵尸杂交版V2.1+修改器+融合版》

大家好&#xff01;每个软件更新总是令人兴奋不已。前段时间介绍的《植物大战僵尸》系列以其独特的策略玩法和丰富的植物角色&#xff0c;赢得了很多玩家的喜爱。而在今天&#xff0c;这款经典游戏全网最新版本——《植物大战僵尸&#xff1a;杂交版V2.1》正式推出&#xff0c;…

ASUS/华硕枪神4 G532L G732L系列 原厂win10系统 工厂文件 带F12 ASUS Recovery恢复

华硕工厂文件恢复系统 &#xff0c;安装结束后带隐藏分区&#xff0c;一键恢复&#xff0c;以及机器所有驱动软件。 系统版本&#xff1a;Windows10 原厂系统下载网址&#xff1a;http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意&#xff1a;仅支持以上型号专用…

【Redis】真行,原来是这样啊! --Redis自动序列化和手动序列化的区别(存储结构、内存开销,实际写法)

对于Redis有两种序列化和反序列化的方式&#xff0c; 方式一&#xff1a; 一种是通过 注入RedisTemplate 对象&#xff0c;找个对象&#xff0c;通过配置类进行一定的配置&#xff0c;使得使用RedisTemplate 对象时&#xff0c;便会使用配置的那些键、值的序列化方式&#xff…

有哪些有效的策略可以提升独立站的外链数量?

有哪些有效的策略可以提升独立站的外链数量&#xff1f;提升独立站的外链数量并不难&#xff0c;难得是不被谷歌惩罚把你的网站判定为作弊&#xff0c;正因如此&#xff0c;了解并应用GNB自然外链策略是个不错的开始&#xff0c;GNB外链的核心价值在于它提高了网站外链资源的自…

opencv概念以及安装方法

#opencv相关概念介绍 Open Source Computer Vision Library 缩写 opencv 翻译&#xff1a;开源的计算机视觉库 &#xff0c;英特尔公司发起并开发&#xff0c;支持多种编程语言&#xff08;如C、Python、Java等&#xff09;&#xff0c;支持计算机视觉和机器学习等众多算法&a…