Install CentOS Directory Server (CDS) 8.1.0 on Centos 5.5
#CDS requires Centos 5.3 or newer
#install openldap-clients, as CDS ldap clients are not very friendly
$yum install java-1.6.0-openjdk openldap-clients centos-ds#Link /usr/bin/java to the java 1.6 binary
$alternatives --config java
Setup CentOS Directory Server
#Create ldap user/group for ldap daemon
$groupadd ldap; useradd -g ldap -s /sbin/nologin ldap#Start installation wizard
$setup-ds-admin.pl#start management console
$centos-idm-console
CentOS Directory Server directory structure
/etc/init.d/dirsrv #server startup script
/etc/init.d/dirsrv-admin #admin server startup script
/etc/dirsrv/slapd-$instance/ #server config
/etc/dirsrv/slapd-$instance/dse.ldif #server config for "cn=config"
/etc/dirsrv/slapd-$instance/scheme/99user.ldif #user defined scheme
/etc/dirsrv/admin-serv #admin server config
/usr/lib/dirsrv/slapd-$instance/ #useful scripts: start&stop; backup&restore ...
/var/lib/dirsrv/slapd-$instance/db/ #database
/var/lib/dirsrv/slapd-$instance/bak #default backup dir
/var/log/dirsrv/slapd-$instance/ #logs
$ldapsearch -x -s base -b "" # Root DSE; Show version, supported plugin etc
CentOS Directory Server backup and restore
##Backup
#/etc/dirsrv/slapd-$instance/dse.ldif needs to be backup manually.
1) in GUI, select backup Directory Server2) in CLI, /usr/lib/dirsrv/slapd-$instance/db2bak
##Restore
#stop ldap server
$service dirsrv stop#Restore using CLI, Usage: bak2db archivedir [-n backendname]
$/usr/lib/dirsrv/slapd-station08/bak2db /var/lib/dirsrv/slapd-station08/bak/station08-2011_06_30_15_11_51 -n userRoot#By default, backend instance name is userRoot or NetscapeRoot
$grep nsslapd-backend /etc/dirsrv/slapd-station08/dse.ldifnsslapd-backend: userRootnsslapd-backend: NetscapeRoot
CentOS Directory Server export and import
##---------------------Export to ldif
LDAP command lines1) in GUI, tasks -> export databases.
2) in CLI, db2ldif
#Find out instance name
$ /usr/lib/dirsrv/slapd-$instance/suffix2instance -s "dc=stationn08, dc=example, dc=com"
Suffix, Instance name pair(s) under "dc=stationn08,dc=example,dc=com":
suffix "dc=station08, dc=example, dc=com"; instance name "userRoot"$grep nsslapd-backend /etc/dirsrv/slapd-station08/dse.ldifnsslapd-backend: userRootnsslapd-backend: NetscapeRoot#Export using backend instance name
$/usr/lib/dirsrv/slapd-$instance/db2ldif -n userRoot -a /tmp/all-userroot.ldif#Export using suffix name
$/usr/lib/dirsrv/slapd-$instance/db2ldif -s 'dc=example,dc=com' -a /tmp/all.ldif##---------------------Import from ldif
#if Server is live
in GUI, Tasks->Import databases;
in CLI, ldif2db.pl (It is recommended to use GUI for import due to the complexity of the script).#If server is offline, use ldif2db script
$service dirsrv stop$/usr/lib/dirsrv/slapd-$instance/ldif2db -n userRoot -i /tmp/all.ldif
CDS has built-in “mozldap-tools”, which have similar commands suites to openldap-clients, but Openldap-clients is easier to use because it support client configuration.
OpenLDAP client configuration files and command line options
##OpenLDAP client configuration files
$/etc/openldap/ldap.conf #Global client conf, but BINDDN (Authenticated user) is ignored in Global conf
$HOME/ldaprc, $HOME/.ldaprc #user ldap configuration file, set BINDDN here
$CWD/ldaprc #local ldap configuration file
#Typical configuration
$cat /etc/openldap/ldap.confBASE dc=station08, dc=example, dc=comURI ldap://station08.example.com$cat /root/.ldaprcBINDDN cn=Directory Manager##common command line options
-x Simple authentication, not SASL bind
-W prompt for bind password
-w passwd bind password (for simple authentication)
-D binddn bind DN #username to authenticate
-b basedn base dn for search
-h host LDAP server-H URI LDAP Uniform Resource Identifier(s) #ldap://station08.example.com:389
-c continuous operation mode (do not stop on errors), useful for skipping entries already exist when importing from ldif.-Z try to start TLS request (-ZZ to require successful response) or -H ldaps://
Command line Search Operation
Command line change operation# by default, search filter is (objectclass=*) and display ALL attributes. search is allowed for anonymous user, no password prompted
$ldapsearch -x#
$ldapsearch -x -LLL #less verbose, -LLL stripeout all comments
$ldapsearch -x -s base #(search scope). one of base, one(one-level sub), sub (whole subtree) or children, default is sub
#Search filters, RFC 2254
#NO ">" or" < "operator
= Exact match; >= greater than or equal; <= less than or equal; ~= aproximate match* wildcard#Logical operators
NOT ! #( ! (uidNumber=500) )
OR | # (| (uidNumber>=502)(uid~=jim))
AND & # (& (uidNumber>=502)(uid~=jim))
#Escaped chars
Character ASCII value---------------------------* 0x2a( 0x28) 0x29\ 0x5cNUL 0x00Escaped "(" can be expressed as "\(" or "\28"e.g search telephoneNumber: (02)98660000 use ldapsearch -x '(telephonenumber=\(02\)98660000)'
Change operation need admin privilege which is specified by BINDDN in /$HOME/.ldaprc or "-D" in CLI
##types of changing whole record,
changetype: addchangetype: deletechangetype: moddnchangetype: modify##----------------------changetype: add
#default change type is add, no need to declare changetype: add, as long as “-a” is specified in ldapmodify
$cat /tmp/f1.ldifdn: uid=jsmith,ou=People, dc=station08, dc=example, dc=comuid: jsmithgivenName: johnobjectClass: topobjectClass: personobjectClass: organizationalPersonobjectClass: inetorgpersonsn: smithcn: john smith$ldapmodify -x -W -a -f /tmp/f1.ldifEnter LDAP Password:adding new entry "uid=jsmith,ou=People, dc=station08, dc=example, dc=com"
##----------------------changetype: delete
#Option 1, use ldapmodify command
$cat /tmp/f1.ldifdn: uid=jsmith,ou=People, dc=station08, dc=example, dc=comchangetype: delete$ldapmodify -x -W -f /tmp/f1.ldifEnter LDAP Password:deleting entry "uid=jsmith,ou=People, dc=station08, dc=example, dc=com"
#Option 2, use ldapdelete command, note the ldif format difference
#ldapdelete support recursive delete with "-r"
$cat /tmp/f1.ldifuid=jsmith,ou=People, dc=station08, dc=example, dc=com$ldapdelete -x -W -f /tmp/f1.ldif##----------------------changetype: moddn
#change RDN relative distingished name, the first part of DN
#Option 1, use ldapmodify command
$cat /tmp/f1.ldifdn: uid=jsmith,ou=People, dc=station08, dc=example, dc=comchangetype: modrdnnewrdn: uid=jsmith2deleteoldrdn: 1$ldapmodify -x -W -f /tmp/f1.ldifEnter LDAP Password:modifying rdn of entry "uid=jsmith,ou=People, dc=station08, dc=example, dc=com"
rename completed#Option 2, use ldapmodrn to achive same result
$ cat /tmp/f1.ldifuid=jsmith,ou=People, dc=station08, dc=example, dc=comuid=jsmith2$ldapmodrdn -x -r -W -f /tmp/f1.ldif##----------------------changetype: modify
#add, replace,delete attributes of a record, not record itself
#multile actions separated by "-"
$cat /tmp/f1.ldifdn: uid=jsmith,ou=People, dc=station08, dc=example, dc=comchangetype: modifyadd: mailmail: jsmith@example.com-delete: facsimileTelephoneNumber-replace: telephonenumbertelephonenumber: +1 408 555 1234$ldapmodify -x -W -f /tmp/f1.ldif
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.