LDIF修改LDAP记录或配置示例
可以说LDIF文件是OpenLDAP操作数据或修改配置的一切来源,下面是实际通过客户端工具操作的具体示例。(openldap安装及配置过程见这里)。
1. 添加组织或条目
创建一个Marketing部门,添加一个dn记录:
# cat add_entry.ldif dn: ou=Marketing, dc=example,dc=com changetype: add objectclass: top objectclass: organizationalUnit ou: Marketing dn: cn=Pete Minsky,ou=Marketing,dc=example,dc=com changetype: add objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: Pete Minsky sn: Pete ou: Marketing description: sb, sx description: sx uid: pminsky
# ldapmodify -xWD 'cn=admin,dc=example,dc=com' -f add_entry.ldif 或去掉changetype后 # ldapmodify -a -xWD 'cn=admin,dc=example,dc=com' -f add_entry.ldif # ldapadd -xWD 'cn=admin,dc=example,dc=com' -f add.ldif
2. 修改组织或条目
添加mail属性,修改sn的值,删除一个description属性:
# cat modify_entry.ldif dn: cn=Pete Minsky,ou=Marketing,dc=example,dc=com changetype: modify add: mail mail: pminsky@example.com - replace: sn sn: Minsky - delete: description description: sx
# ldapmodify -xWD 'cn=admin,dc=example,dc=com' -f modify_entry.ldif # ldapsearch -xD 'cn=admin,dc=mydomain,dc=net' -b 'ou=People,dc=mydomain,dc=net' -s sub 'objectclass=*' -w tplink -LLL
3. 重命名条目
dn: cn=Pete Minsky,ou=Marketing,dc=example,dc=com changetype: modrdn newrdn: cn=Susan Jacobs deleteoldrdn: 1
4. 删除组织或条目modrdn
只允许修改dn最左边的部分,且不能重命名带叶子或分支的子树,如果要将一个用户移动到另一个部门下,只能在新部门创建dn,然后删除旧的dn。
LDAP协议只能删除无分支的叶子dn:
# cat delete_entry.ldif dn: cn=Susan Jacobs,ou=Marketing,dc=example,dc=com changetype: delete 或 # ldapdelete -xWD "cn=admin,dc=example,dc=com" -h localhost -p 389 "cn=Susan Jacobs,ou=Marketing,dc=example,dc=com"
5. LDIF配置backend
OpenLDAP的配置采用以cn=config为根的目录树的形式组织起来,采用config作为database,默认情况下包括admin或root用户都没有访问权限,需要赋予读写权限,然而赋予修改权限要求首先要提供认证信息,初始化安装后的cn=config是没有credentials
# ldapmodify -Y EXTERNAL -H ldapi:/// -f modify_config.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={0}config,cn=config" ldap_modify: Insufficient access (50)
所以这里不得不手动编辑olcDatabase={0}config.ldif
文件,获得最初认证权限(虽然官方不推荐手动修改配置):
# vi /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif olcRootPW: {SSHA}your_slappasswd_secret
重启slapd后(不是说不用重启吗)便可以修改config:
# ldapwhoami -x -D cn=config -W 修改示例: # ldapmodify -xWD 'cn=config' Enter LDAP Password: dn: olcDatabase={0}config,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=config - replace: olcRootPW olcRootPW: {SSHA}your_slappasswd_secret modifying entry "olcDatabase={0}config,cn=config"
在/etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif
中olcRootDN
变成base64加密后的值(两个”:”)。
最后,如果要在slapd服务未启动的情况下修改配置可以通过以下命令转换成ldif中间文件:
# slapcat -n0 -F /etc/ldap/slapd.d/ > /tmp/config-in-portable-format.ldif 编辑ldif文件后,重新shengc slapd.d目录 # slapadd -n0 -F /tmp/slapd.d -l /tmp/config-in-portable-format.ldif
使用这类命令行工具有助于对 LDAP concept 理解,如果要达到快速配置的效果,可以使用 ldapbrowser 或 Apache Directory Studio 图形化工具,特别是 Apache Directory Studio 不仅提供了 LDAP Browser/Editor 的功能,还能编辑LDIF文件和自定义schema,智能提示非常友好。
原文地址:https://www.cnblogs.com/quliuliu2013/p/11890644.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python 自动化测试(6):jar包调用
- 微信小程序实战开发五:使用自定义组件配置一个通用的图片轮播组件。
- 亿级流量系统如何玩转 JVM
- 微信小程序实战开发六:使用weui-flex创建一个可自由配置的布局组件。
- JDBCJava连接MySql数据库
- Python中的集合
- Centos7下误删python2和yum的解决办法
- Java正则表达式匹配日期及基本使用
- VM虚拟机中linux centOS 联网单网卡配置教程
- Python操作redis数据库
- pytest 测试框架学习(1):初识
- 爬虫工程师也应该会的 NodeJS 知识(三)- 快速抛弃 execjs
- 八皇后问题Python实现
- 进击吧!Pythonista(6/100)
- 进击吧!Pythonista(9/100)