• openldap常用命令(转)


    以下内容转载自http://joyssue.blog.51cto.com/95711/285282

    1、删除命令ldapdelete
    # ldapdelete -x -D 'cn=root,dc=it,dc=com' -W 'uid=qq1,dc=it,dc=com'

    2、重新索引ldap数据库命令slapindex
    # slapindex -f slapd.conf

    3、设置使用者密码
    # ldappasswd -x -D "cn=root,dc=it,dc=com" -W "uid=qq1,dc=it,dc=com" -S
    New password:
    Re-enter new password:
    Enter bind password:
    Result: Success (0)
    ## "Enter bind password" 是 "cn=root,dc=it,dc=com"管理员的密码

    4、管理员密码更改
    # slappasswd
    New password
    Re-enter new password
    {SSHA}83DJ4KVwqlk1uh9k2uDb8+NT1U4RgkEs
    接下再拷贝到 path/to/sldap.conf 的 rootpw 即可,重启使用配置文件生效
    5、修改目录内容
    # ldapmodify -x -D "cn=root,dc=it,dc=com" -W -f modify.ldif
    通过ldif文件修改ldap数据,ldif文件格式如下:
    dn: cn=qq,dc=it,dc=com
    changetype: modify
    replace: mail
    mail: modme@example.com
    -
    add: title
    title: Grand Poobah
    -
    add: jpegPhoto
    jpegPhoto:< file:///tmp/modme.jpeg
    -
    delete: description
    -
    6、启用sasl验证
    前提是你在系统中安装了sasl认证库,并在编译openldap时支持它,默认就支持的。到http://asg.web.cmu.edu/cyrus下载。
    # saslpasswd2 -c test
    接着配置slapd.conf文件,加入以下内容。
    sasl-regexp
            uid=(.*),cn=.*,cn=auth
            uid=$1,dc=it,dc=com
    重启服务器使配置文件生效。这个配置是最大权限的配置,如果要细化请查阅相关文档。用以下命令测试。
    # ldapsearch -U qq  -b 'uid=qq,dc=it,dc=com' -D 'dc=it,dc=com' -Y DIGEST-MD5
    采用digest-md5验证,提示密码,输入saslpasswd2的密码。

    7、配置服务器复制
    在一些关键的应用场合,我们需设置多个ldap服务器实例,且数据要保持同步。当一台服务器出现故障或被黑客攻击时,我们就能继续保持应用的正常运行。通过DNS的轮流查询功能,还能实现服务器的负载均衡,提高响应速度。在openldap中有一个slurpd进程,利用slurpd进程可帮助我们实现多台ldap服务器数据的同步功能。下面简单介绍一下主、从ldap服务器的配置。
    slurpd运行在主服务器上,它能把主服务器上的变化通过LDAP协议传送到从服务器上。从服务器上的变化不能传送到主服务器上,也就是说是单向同步的。主从服务器的版本最好一样,以减少兼容性问题。主从服务器的安装方法是一样的,关键是配置文件有所不同。我的操作系统是debian sarge,在确保主从服务器能正常运行的前提下进行以下配置:
    首先,把主从服务器关闭。通过以下三步操作静态同步主从服务器上的数据:
    把主服务器上/var/lib/ldap目录下的所有数据库文件全部拷贝到从服务器的同目录中,覆盖原有文件。
    把主服务器上的/etc/ldap/schema目录下的所有schema文件拷贝到从服务器的同目录中,覆盖原有文件。
    把主服务器上/etc/ldap/slapd.conf文件拷贝到从服务器的同目录中,覆盖原有文件。
    配置主服务器上的slapd.conf文件,取消replogfile指令前的注释符号,取消后的结果如下:
    # Where to store the replica logs for database #1
    replogfile      /var/lib/ldap/replog
    增加replica指令,如:
    #replace config
    replica uri=ldap://192.168.6.195:389     #指定从服务器主机名和端口号
            binddn="cn=admin,dc=com"         #指定需同步的DN的管理员
            bindmethod=simple credentials=1  #指定验证方式和需同步的DN的管理员密码
    配置从服务器上的slapd.conf文件,增加updatedn指令,如:
    updatedn "cn=admin,dc=com"          #与主服务器的binddn对应
    在从服务器的配置文件中,不要包含replica和replogfile指令。
    先启动主服务器的slapd和slurpd,再启动从服务器的slapd。

    8、一个完整的global.ldif文件例子:
    dn: dc=info, dc=net
    objectClass: top
    objectClass: organization
    o: info.net
    dn: ou=People, dc=info, dc=net
    objectClass: top
    objectClass: organizationalUnit
    ou: People
    description: User Info
    dn: cn=Admin, dc=info, dc=net
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    cn: Admin
    sn: Admin
    userPassword: Admin
    description: Administrator for info.net
    dn: id=1, ou=people, dc=info, dc=net
    objectclass: top
    objectclass: InfoPerson
    id: 1
    username: 张三
    tel:021-63138990
    card_id:ABC001
    我们也可用slapadd命令来导入数据。该命令可以导入包含一些系统信息的ldif文件,如:
    dn: dc=it,dc=com
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    dc: it
    structuralObjectClass: organization
    entryUUID: d97b06da-d77e-1028-9866-d4ec7ac00d12
    creatorsName: cn=anonymous            #系统信息
    createTimestamp: 20041201005115Z      #系统信息
    o:: 5bm/5bee5biC6JmO5aS055S15rGg6ZuG5Zui5pyJ6ZmQ5YWs5Y+4
    userPassword:: e01ENX14TXBDT0tDNUk0SU56RkNhYjNXRW13PT0=
    entryCSN: 2004120603:50:08Z#0x0001#0#0000     #系统信息
    modifiersName: cn=admin,dc=it,dc=com          #系统信息
    modifyTimestamp: 20041206035008Z              #系统信息

     
    openldap常用命令(转)
    slapd
    4 使用IPv4标准
    6 使用IPv6标准
    -d debug模式 一般用 -1,1,256
    -f 指定配置文件的路径
    -h 可以指定启动服务的端口 ldap://:2004 用2004端口启动服务
    slurpd
    -d debug模式 一般用4
    -f 指定配置文件
    -r 指定复制
    ldapadd
    -x 进行简单认证
    -D 用来绑定服务器的DN
    -h 目录服务的地址
    -w 绑定DN的密码
    -f 使用ldif文件进行条目添加的文件
    例子 ldapadd -x -D "cn=root,dc=starxing,dc=com" -w secret -f /root/test.ldif
    ldapadd -x -D "cn=root,dc=starxing,dc=com" -w secret (这样写就是在命令行添加条目)
    ldapsearch
    -x 进行简单认证
    -D 用来绑定服务器的DN
    -w 绑定DN的密码
    -b 指定要查询的根节点
    -H 制定要查询的服务器
    ldapsearch -x -D "cn=root,dc=starxing,dc=com" -w secret -b "dc=starxing,dc=com"
    使用简单认证,用 "cn=root,dc=starxing,dc=com" 进行绑定,
    要查询的根是 "dc=starxing,dc=com"。这样会把绑定的用户能访问"dc=starxing,dc=com"下的
    所有数据显示出来。
    ldapdelete
    参数和ldapadd差不多,就不写了
    ldapdelete -x -D ´cn=root,dc=it,dc=com´ -w secert ´uid=zyx,dc=it,dc=com´
    这样就可以删除´uid=zyx,dc=it,dc=com´记录了,应该注意一点,如果o或ou中有成员是不能删除的。
    ldappasswd
    -x 进行简单认证
    -D 用来绑定服务器的DN
    -w 绑定DN的密码
    -S 提示的输入密码
    -s pass 把密码设置为pass
    -a pass 设置old passwd为pass
    -A 提示的设置old passwd
    -H 是指要绑定的服务器
    -I 使用sasl会话方式
    #ldappasswd -x -D ´cm=root,dc=it,dc=com´ -w secret ´uid=zyx,dc=it,dc=com´ -S
    New password:
    Re-enter new password:
    就可以更改密码了,如果原来记录中没有密码,将会自动生成一个userPassword。
    ldapmodify
    -a 添加新的条目.缺省的是修改存在的条目.
    -C 自动追踪引用.
    -c 出错后继续执行程序并不中止.缺省情况下出错的立即停止.比如如果你的ldif 文
    件内的某个条目在数据库内并不存在,缺省情况下程序立即退出,但如果使用了该参数,程
    序忽略该错误继续执行.
    -n 用于调试到服务器的通讯.但并不实际执行搜索.服务器关闭时,返回错误;服务器
    打开时,常和-v 参数一起测试到服务器是否是一条通路.
    -v 运行在详细模块.在标准输出中打出一些比较详细的信息.比如:连接到服务器的
    ip 地址和端口号等.
    -M[M] 打开manage DSA IT 控制. -MM 把该控制设置为重要的.
    -f file 从文件内读取条目的修改信息而不是从标准输入读取.
    -x 使用简单认证.
    -D binddn 指定搜索的用户名(一般为一dn 值).
    -W 指定了该参数,系统将弹出一提示入用户的密码.它和-w 参数相对使用.
    -w bindpasswd 直接指定用户的密码. 它和-W 参数相对使用.
    -H ldapuri 指定连接到服务器uri(ip 地址和端口号,常见格式为
    ldap://hostname:port).如果使用了-H 就不能使用-h 和-p 参数.
    -h ldaphost 指定要连接的主机的名称/ip 地址.它和-p 一起使用.
    -p ldapport 指定要连接目录服务器的端口号.它和-h 一起使用.
    如果使用了-h 和-p 参数就不能使用-H 参数.
    -Z[Z] 使用StartTLS 扩展操作.如果使用-ZZ,命令强制使用StartTLS 握手成功.
    -V 启用证书认证功能,目录服务器使用客户端证书进行身份验证,必须与-ZZ 强制启用
    TLS 方式配合使用,并且匿名绑定到目录服务器.
    -e 设置客户端证书文件,例: -e cert/client.crt
    -E 设置客户端证书私钥文件,例: -E cert/client.key
    #ldapmodify -x -D "cn=root,dc=it,dc=com" -W -f modify.ldif
    将modify.ldif中的记录更新原有的记录
     
    OPENLDAP 命令操作
     
    手动录入方法
    第一步是要建立DN:
    # ldapadd -x -D 'cn=root,dc=it,dc=com' -W
    dn: dc=it,dc=com
    objectClass: dcObject
    objectClass: organization
    dc: it
    o: Corporation
    description: d Corporation
    注意:如果你用复制/粘贴功能把以上内容拷贝过去,一定要注意每行后面不要有空格,建议还是手工输入,按Ctrl+d存盘。
    第二步是建立RDN:
    # ldapadd -x -D 'cn=root,dc=it,dc=com' -W
    #-x表示用简单验证,-D表示指定目录,-W表示弹出密码输入提示
    输入密码,这里的密码是在配置文件中rootpw项设置的密码,不是操作系统中root用户的密码。验证通过后就可输入以下内容:
    dn: uid=qq,dc=cs,dc=tjut
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    uid: qq
    cn: qq
    sn: qq
    telephoneNumber: 138888888
    description: openldap test
    telexNumber: tex-8888888
    street: my street
    postOfficeBox: postofficebox
    displayName: qqdisplay
    homePhone: home1111111
    mobile: mobile99999
    mail:qq@qq.com
    输入完所有信息后,按Ctrl+d结束存盘。如果出现出错信息,请查一下对象类和属性的对应关系有没有错或输入失误。初学者就容易出错的地方是对象类和属性的对应关系没有处理好。对象类和属性是在schema文档中定义的。它们之间的关系是这样的,对象类中有些属性是必选的,有些属性是可选的。录入信息的属性必须在对象类中有定义才能用。
    输入以下命令可查询到刚才输入的信息。
    # ldapsearch -x -b 'dc=it,dc=com'
    -b选项是设置目录起点,如果设置了客户端的BASE配置参数,该项可不用。
    如果按以上配置文件设置了acl,用上面的查询命令是查询不到受保护的内容的。如上面的userPassword and mail。要查询到这些受限内容,需要通过验证才可以:
    # ldapsearch -x -LLL -h it.com -b 'dc=it,dc=com' -D 'uid=qq,dc=it,dc=com' -W 'uid=qq'
    接着提示输入密码。输入userPassword的密码回车,所有信息就都出来了。
    2.2.2. 文件方式
    .ldif文件方式也就是把以上手工输入的内容先写入一个.ldif文件中,然后,用ldapadd命令的-f参数导入。
    # ldapadd -x -D "cn=root,dc=it,dc=com" -W -f test.ldif
    一个完整的global.ldif文件例子:
    dn: dc=info, dc=net
    objectClass: top
    objectClass: organization
    o: info.net
     
    dn: ou=People, dc=info, dc=net
    objectClass: top
    objectClass: organizationalUnit
    ou: People
    description: User Info
     
    dn: cn=Admin, dc=info, dc=net
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    cn: Admin
    sn: Admin
    userPassword: Admin
    description: Administrator for info.net
     
    dn: id=1, ou=People, dc=info, dc=net
    objectclass: top
    objectclass: InfoPerson
    id: 1
    username: 张三
    tel:021-63138990
    card_id:ABC001
    我们也可用slapadd命令来导入数据。该命令可以导入包含一些系统信息的ldif文件,如:
    dn: dc=it,dc=com
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    dc: it
    structuralObjectClass: organization
    entryUUID: d97b06da-d77e-1028-9866-d4ec7ac00d12
    creatorsName: cn=anonymous #系统信息
    createTimestamp: 20041201005115Z #系统信息
    o:: 5bm/5bee5biC6JmO5aS055S15rGg6ZuG5Zui5pyJ6ZmQ5YWs5Y+4
    userPassword:: e01ENX14TXBDT0tDNUk0SU56RkNhYjNXRW13PT0=
    entryCSN: 2004120603:50:08Z#0x0001#0#0000 #系统信息
    modifiersName: cn=admin,dc=it,dc=com #系统信息
    modifyTimestamp: 20041206035008Z #系统信息
     
     
     
    再次提醒,注意每行后面不要留有空格。
     
    2.2.3. 脚本方式
    脚本录入方式需要自已编写脚本,或到网上下载。有一个用PHP写的LDAP管理工具不错,叫phpLDAPadmin。可以到以下网址下载:http://phpldapadmin.sourceforge.net。安装方法也很简单,只要解压出来,拷贝到apache的web目录下,按说明配置一下设定文档,就ok了。
    2.3. 常用命令介绍
    接着为大家介绍一下几个常用的ldap命令,如果你用了phpLDAPadmin程序,其实它已经有一个很好的图形介面帮你完成这些命令了。但了解一下还是对你还是很有益的,因为命令方法才是最根本的。
    删除命令ldapdelete
    # ldapdelete -x -D 'cn=root,dc=it,dc=com' -W 'uid=qq1,dc=it,dc=com'
    重新索引ldap数据库命令slapindex
    # slapindex -f slapd.conf
    设置使用者密码,当然了,你的用户需要有userPassword项了。
    #ldappasswd -x -D "cn=root,dc=it,dc=com" -W "uid=qq1,dc=it,dc=com" -S
    New password:
    Re-enter new password:
    Enter bind password:
    Result: Success (0)
     
     
     
    "Enter bind password" 是 "cn=root,dc=it,dc=com"管理员的密码。
     
    管理员密码更改
    #slappasswd
    New password
    Re-enter new password
    {SSHA}83DJ4KVwqlk1uh9k2uDb8+NT1U4RgkEs
    接下再拷贝到 path/to/sldap.conf 的 rootpw 即可,重启使用配置文件生效
    通过ldapmodify修改目录内容
    # ldapmodify -x -D "cn=root,dc=it,dc=com" -W -f modify.ldif
    通过ldif文件修改ldap数据,ldif文件格式如下:
    dn: cn=qq,dc=it,dc=com
    changetype: modify
    replace: mail
    mail: modme@example.com
    -
    add: title
    title: Grand Poobah
    -
    add: jpegPhoto
    jpegPhoto:< file:///tmp/modme.jpeg
    -
    delete: description

  • 相关阅读:
    poj3468(A Simple Problem with Integers)线段树+树状数组
    关于JVM——JVM内存模型
    关于JVM——类加载机制
    关于JVM(二)
    关于JVM(一)
    关于LongAdder
    关于Future
    关于Fork/Join
    关于Atomic
    关于LockSupport
  • 原文地址:https://www.cnblogs.com/google4y/p/2115979.html
Copyright © 2020-2023  润新知