===== LSC project ===== reference * http://lsc-project.org/wiki/ * http://lsc-project.org/wiki/documentation/latest/start * http://lsc-project.org/wiki/documentation/latest/installation#yum_repository ==== yum repo install ==== [root@lsc ~]# vi /etc/yum.repos.d/lsc-project.repo # cat /etc/yum.repos.d/lsc-project.repo [lsc-project] name=LSC project packages baseurl=http://lsc-project.org/rpm/noarch enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-LTB-project # rpm --import http://ltb-project.org/wiki/lib/RPM-GPG-KEY-LTB-project # yum install lsc Installed: lsc.noarch 0:2.1.3-0.el5 ==== dependance java ==== * https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6/html/Installation_Guide/Install_OpenJDK_on_Red_Hat_Enterprise_Linux.html # yum install java-1.7.0-openjdk-devel Installation 1 Paquet (+71 Paquets en dépendance) Taille totale des téléchargements : 52 M Taille d'installation : 191 M Is this ok [y/d/N]: y Installé : java-1.7.0-openjdk-devel.x86_64 1:1.7.0.91-2.6.2.1.el7_1 Dépendances installées : GConf2.x86_64 0:3.2.6-8.el7 alsa-lib.x86_64 0:1.0.28-2.el7 atk.x86_64 0:2.8.0-4.el7 cairo.x86_64 0:1.12.14-6.el7 dbus-glib.x86_64 0:0.100-7.el7 flac-libs.x86_64 0:1.3.0-5.el7_1 fontconfig.x86_64 0:2.10.95-7.el7 fontpackages-filesystem.noarch 0:1.44-8.el7 freetype.x86_64 0:2.4.11-10.el7_1.1 gdk-pixbuf2.x86_64 0:2.28.2-5.el7_1 giflib.x86_64 0:4.1.6-9.el7 graphite2.x86_64 0:1.2.2-5.el7 gsm.x86_64 0:1.0.13-11.el7 gtk2.x86_64 0:2.24.22-5.el7_0.1 harfbuzz.x86_64 0:0.9.20-4.el7 hicolor-icon-theme.noarch 0:0.12-7.el7 hwdata.x86_64 0:0.252-7.8.el7_1 jasper-libs.x86_64 0:1.900.1-26.el7_0.3 java-1.7.0-openjdk.x86_64 1:1.7.0.91-2.6.2.1.el7_1 java-1.7.0-openjdk-headless.x86_64 1:1.7.0.91-2.6.2.1.el7_1 javapackages-tools.noarch 0:3.4.1-6.el7_0 jbigkit-libs.x86_64 0:2.0-11.el7 libICE.x86_64 0:1.0.8-7.el7 libSM.x86_64 0:1.2.1-7.el7 libX11.x86_64 0:1.6.0-2.1.el7 libX11-common.noarch 0:1.6.0-2.1.el7 libXau.x86_64 0:1.0.8-2.1.el7 libXcomposite.x86_64 0:0.4.4-4.1.el7 libXcursor.x86_64 0:1.1.14-2.1.el7 libXdamage.x86_64 0:1.1.4-4.1.el7 libXext.x86_64 0:1.3.2-2.1.el7 libXfixes.x86_64 0:5.0.1-2.1.el7 libXfont.x86_64 0:1.4.7-3.el7_1 libXft.x86_64 0:2.3.1-5.1.el7 libXi.x86_64 0:1.7.2-2.1.el7 libXinerama.x86_64 0:1.1.3-2.1.el7 libXrandr.x86_64 0:1.4.1-2.1.el7 libXrender.x86_64 0:0.9.8-2.1.el7 libXtst.x86_64 0:1.2.2-2.1.el7 libXxf86vm.x86_64 0:1.1.3-2.1.el7 libasyncns.x86_64 0:0.8-7.el7 libdrm.x86_64 0:2.4.56-2.el7 libfontenc.x86_64 0:1.1.1-5.el7 libjpeg-turbo.x86_64 0:1.2.90-5.el7 libogg.x86_64 2:1.3.0-7.el7 libpciaccess.x86_64 0:0.13.1-4.1.el7 libpng.x86_64 2:1.5.13-5.el7 libsndfile.x86_64 0:1.0.25-9.el7 libthai.x86_64 0:0.1.14-9.el7 libtiff.x86_64 0:4.0.3-14.el7 libvorbis.x86_64 1:1.3.3-8.el7 libxcb.x86_64 0:1.9-5.el7 libxslt.x86_64 0:1.1.28-5.el7 lksctp-tools.x86_64 0:1.0.13-3.el7 mesa-libEGL.x86_64 0:10.2.7-5.20140910.el7_1.1 mesa-libGL.x86_64 0:10.2.7-5.20140910.el7_1.1 mesa-libgbm.x86_64 0:10.2.7-5.20140910.el7_1.1 mesa-libglapi.x86_64 0:10.2.7-5.20140910.el7_1.1 mozjs17.x86_64 0:17.0.0-10.el7 pango.x86_64 0:1.34.1-5.el7 pcsc-lite-libs.x86_64 0:1.8.8-5.el7 pixman.x86_64 0:0.32.4-3.el7 polkit.x86_64 0:0.112-5.el7 polkit-pkla-compat.x86_64 0:0.1-4.el7 pulseaudio-libs.x86_64 0:3.0-30.el7 python-javapackages.noarch 0:3.4.1-6.el7_0 python-lxml.x86_64 0:3.2.1-4.el7 ttmkfdir.x86_64 0:3.0.9-41.el7 tzdata-java.noarch 0:2015g-1.el7 xorg-x11-font-utils.x86_64 1:7.5-18.1.el7 xorg-x11-fonts-Type1.noarch 0:7.5-9.el7 Terminé ! # java -version java version "1.7.0_91" OpenJDK Runtime Environment (rhel-2.6.2.1.el7_1-x86_64 u91-b00) OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode) ===== Scenario ldap to ldap ===== ref * https://documentation.fusiondirectory.org/en/documentation/merge_ad_openldap_user * http://rsokolkov.com/synchronizing-users-from-ad-to-openldap/ * http://autoblogs.memiks.fr/planet-libre/?Cl%C3%A9ment-OUDOT-LDAP-Synchronization-Connector-en-mode-2-0 Preparation d'un scenario de synchro de ldap evry vers ldap de fusion mines-telecom [root@lsc lsc]# mkdir /etc/lsc/ldapevry2ldapimt [root@lsc lsc]# cd /etc/lsc/ldapevry2ldapimt [root@lsc ldapevry2ldapimt]# cp /etc/lsc/logback.xml . [root@lsc ldapevry2ldapimt]# cp /etc/lsc/lsc.xml . [root@lsc ldapevry2ldapimt]# vim lsc.xml a suivre [[.:ldap_lsc&#config_lsc_synchro_ldap2ldap|ldap2ldap lsc config plus bas ]] ==== installation openldap-servers ==== [root@lsc ldap2ldap]# yum install openldap-servers openldap-clients Installed: openldap-servers.x86_64 0:2.4.39-7.el7.centos openldap-clients.x86_64 0:2.4.39-7.el7.centos ==== parametrage openldap-server ===== recuperation de schema propres a nos usages accademiques [root@lsc schema]# cp eduperson-200412.schema supann_2009.schema /etc/openldap/schema/ repertoire systeme où sera stocké la base ldap fusion des sources de synchro (initialement backen BDB à passer en lmdb ...) [root@lsc openldap]# vim slapd.conf # directory /var/lib/ldap/imt/ [root@lsc openldap]# mkdir /var/lib/ldap/imt/ [root@lsc openldap]# chown ldap:ldap /var/lib/ldap/imt/ [root@lsc openldap]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/imt/DB_CONFIG [root@lsc openldap]# chown ldap:ldap /var/lib/ldap/imt/DB_CONFIG ==== demarrage du serveur au boot ==== [root@lsc openldap]# systemctl enable slapd.service ln -s '/usr/lib/systemd/system/slapd.service' '/etc/systemd/system/multi-user.target.wants/slapd.service' s'assurer que le firewall est ouver sur ldap , exemple avec firewalld # firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="157.158.0.0/16" service name="ldap" log prefix="ldap_157_158" accept' # firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="157.158.0.0/16" service name="ldaps" log prefix="ldaps_157_158" accept' # firewall-cmd --reload ==== log ldap dans rsyslog ==== [root@lsc openldap]# vim /etc/rsyslog.conf [root@lsc openldap]# systemctl restart rsyslog.service [root@lsc openldap]# grep ldap /etc/rsyslog.conf local4.* /var/log/ldap.log ==== Premier lancement du serveur a vide ==== [root@lsc openldap]# ./olcgene.sh 565ad68c /etc/openldap/slapd.conf: line 208: rootdn is always granted unlimited privileges. 565ad68c /etc/openldap/slapd.conf: line 215: rootdn is always granted unlimited privileges. 565ad68c bdb_db_open: database "dc=mines-telecom,dc=fr": db_open(/var/lib/ldap/imt//id2entry.bdb) failed: No such file or directory (2). 565ad68c backend_startup_one (type=bdb, suffix="dc=mines-telecom,dc=fr"): bi_db_open failed! (2) slap_startup failed (test would succeed using the -u switch) [root@lsc openldap]# ls -al /var/lib/ldap/imt/ total 19552 drwxr-xr-x 2 ldap ldap 4096 Nov 29 11:42 . drwx------ 3 ldap ldap 4096 Nov 29 11:11 .. -rw-r--r-- 1 ldap ldap 845 Nov 29 11:15 DB_CONFIG -rw------- 1 ldap ldap 2801664 Nov 29 11:42 __db.001 -rw------- 1 ldap ldap 17489920 Nov 29 11:42 __db.002 -rw------- 1 ldap ldap 1884160 Nov 29 11:42 __db.003 -rw-r--r-- 1 ldap ldap 2048 Nov 29 11:42 alock -rw------- 1 ldap ldap 8192 Nov 29 11:42 dn2id.bdb -rw------- 1 ldap ldap 32768 Nov 29 11:42 id2entry.bdb -rw------- 1 ldap ldap 10485760 Nov 29 11:42 log.0000000001 [root@lsc openldap]# tail -f /var/log/ldap.log Nov 29 11:42:20 lscimt slapd[3275]: @(#) $OpenLDAP: slapd 2.4.39 (Sep 29 2015 13:31:12) $ mockbuild@worker1.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.39/openldap-2.4.39/servers/slapd Nov 29 11:42:20 lscimt slapd[3276]: slapd starting [root@lsc openldap]# ps auwx |grep slapd ldap 3276 0.0 2.0 429780 5504 ? Ssl 11:42 0:00 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:/// ==== ajout de la racine de l'arbre ldap ==== fichier ldap represantant la racine de l'arbre de fusion ldap # cat root-mt.ldif # mt dn: dc=mines-telecom,dc=fr dc: mines-telecom objectClass: top objectClass: domain objectClass: domainRelatedObject associatedDomain: mines-telecom.fr insertion dans l'instance ldap imt [root@lsc ~]# ldapadd -f root-mt.ldif -H ldap://localhost -D cn=admin,dc=mines-telecom,dc=fr -WEnter LDAP Password: adding new entry "dc=mines-telecom,dc=fr" [root@lsc ~]# tail -f /var/log/ldap.log Nov 29 11:51:38 lscimt slapd[3276]: conn=1002 fd=11 ACCEPT from IP=[::1]:47596 (IP=[::]:389) Nov 29 11:51:38 lscimt slapd[3276]: conn=1002 op=0 BIND dn="cn=admin,dc=mines-telecom,dc=fr" method=128 Nov 29 11:51:38 lscimt slapd[3276]: conn=1002 op=0 BIND dn="cn=admin,dc=mines-telecom,dc=fr" mech=SIMPLE ssf=0 Nov 29 11:51:38 lscimt slapd[3276]: conn=1002 op=0 RESULT tag=97 err=0 text= Nov 29 11:51:38 lscimt slapd[3276]: conn=1002 op=1 ADD dn="dc=mines-telecom,dc=fr" Nov 29 11:51:38 lscimt slapd[3276]: conn=1002 op=1 RESULT tag=105 err=0 text= Nov 29 11:51:38 lscimt slapd[3276]: conn=1002 op=2 UNBIND Nov 29 11:51:38 lscimt slapd[3276]: conn=1002 fd=11 closed et de la sous branche people [root@lsc ~]# vim people.ldif [root@lsc ~]# ldapadd -f people.ldif -H ldap://localhost -D cn=admin,dc=mines-telecom,dc=fr -WEnter LDAP Password: adding new entry "ou=people,dc=mines-telecom,dc=fr" [root@lsc ~]# cat people.ldif dn: ou=people,dc=mines-telecom,dc=fr changetype: add objectClass: organizationalUnit objectClass: top ou: people contenu actuel de notre "coquille vide" [root@lsc ~]# ldapsearch -x objectclass=* -H ldap://localhost -b dc=mines-telecom,dc=fr -D cn=admin,dc=mines-telecom,dc=fr -W dn -LLL Enter LDAP Password: dn: dc=mines-telecom,dc=fr dn: ou=people,dc=mines-telecom,dc=fr ===== Config LSC synchro ldap2ldap ===== le principe ici est de synchroniser des annuaires ldap vers un annuaire mutualisé assurant la fusion des annuaires d'etablissements dans des sous branches propres a l'etablissement . Ici , on fait une exclusion des objectclass et attributs non indispensables a un annuaire pages blanches via le objectclass : [root@lscimt ldapevry2ldapimt]# cat lsc.xml tem-tsp ldap://ldapze.int.fr:389/dc=int,dc=fr cn=adm,dc=int,dc=fr secret SIMPLE IGNORE NEVER VERSION_3 -1 com.sun.jndi.ldap.LdapCtxFactory false mines-telecom ldap://127.0.0.1:389/dc=mines-telecom,dc=fr cn=adm,dc=mines-telecom,dc=fr secret SIMPLE THROW NEVER VERSION_3 -1 com.sun.jndi.ldap.LdapCtxFactory false user org.lsc.beans.SimpleBean user-source-service ou=people,dc=int,dc=fr cn cn mail sn departmentNumber employeeType givenName telephoneNumber user-dest-service ou=evry,ou=people,dc=mines-telecom,dc=fr cn cn objectClass mail sn departmentNumber employeeType givenName telephoneNumber js:"cn=" + javax.naming.ldap.Rdn.escapeValue(srcBean.getDatasetFirstValueById("cn")) + ",ou=evry,ou=people,dc=mines-telecom,dc=fr" ; FORCE true true true true objectclass KEEP "inetOrgPerson" "organizationalPerson" "person" "top" ===== synchro ===== [root@lsc ldapevry2ldapimt]# lsc -s user --config /etc/lsc/ldapevry2ldapimt/ 11:41:14,248 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] 11:41:14,248 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/etc/lsc/ldapevry2ldapimt/logback.xml] 11:41:14,249 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs multiple times on the classpath. 11:41:14,249 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [file:/etc/lsc/ldapevry2ldapimt/logback.xml] 11:41:14,249 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback.xml] occurs at [jar:file:/usr/lib/lsc/lsc-core-2.1.3.jar!/logback.xml] nov. 30 11:41:14 - INFO - Reflections took 105 ms to scan 1 urls, producing 55 keys and 115 values nov. 30 11:41:15 - INFO - Logging configuration successfully loaded from /etc/lsc/ldapevry2ldapimt/logback.xml nov. 30 11:41:15 - INFO - LSC configuration successfully loaded from /etc/lsc/ldapevry2ldapimt/ nov. 30 11:41:15 - INFO - Connecting to LDAP server ldap://127.0.0.1:389/dc=mines-telecom,dc=fr as cn=adm,dc=mines-telecom,dc=fr nov. 30 11:41:15 - INFO - Connecting to LDAP server ldap://ldapze.int.fr:389/dc=int-evry,dc=fr as cn=adm,dc=int,dc=fr nov. 30 11:41:15 - INFO - Starting sync for user nov. 30 11:41:15 - INFO - # Adding new object cn=Guy BERNARD,ou=evry,ou=people,dc=mines-telecom,dc=fr for user # Mon Nov 30 11:41:15 CET 2015 dn: cn=Jacques MARTIN,ou=evry,ou=people,dc=mines-telecom,dc=fr changetype: add employeeType:: UHJvZmVzc2V1ciBpbnZpdMOp mail: jacques.martin@tem-tsp.eu sn: MARTIN departmentNumber: INFO cn: Jacques MARTIN telephoneNumber: +33161764567 objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top givenName: Jacques nov. 30 11:41:15 - INFO - All entries: 5, to modify entries: 5, successfully modified entries: 5, errors: 0 ==== modification d'attributs ==== il est possible de modifier à la volée des valeurs d'attribut pour les rendre conforme a une syntaxte et nomenclature commune . Exemple d'ajout d'un dataset qui modifie lors de la synchro la valeur d'attribut departmentNumber , ici si à la source departmentNumber contient MCI alors le transformer en DSI : departmentNumber FORCE log associés a cette synchro nov. 30 14:45:17 - INFO - # Updating object cn=Jacques MARTIN,ou=evry,ou=people,dc=mines-telecom,dc=fr for user nov. 30 14:45:17 - INFO - # Updating object cn=Albert MARTIN,ou=evry,ou=people,dc=mines-telecom,dc=fr for user # Mon Nov 30 14:45:17 CET 2015 dn: cn=Jacques MARTIN,ou=evry,ou=people,dc=mines-telecom,dc=fr changetype: modify replace: departmentNumber departmentNumber: DSI - # Mon Nov 30 14:45:17 CET 2015 dn: cn=Albert MARTIN,ou=evry,ou=people,dc=mines-telecom,dc=fr changetype: modify replace: departmentNumber departmentNumber: DSI - nov. 30 14:45:17 - INFO - All entries: 5, to modify entries: 2, successfully modified entries: 2, errors: 0 ===== suppression ===== pour supprimer un compte il faut ajouter l'option -c,--clean Cleaning type (one of the available tasks or 'all') et aussi s'assurer qu'il n'y a pas zero entrée dans la source , autrement lsc par sécurité ne supprime rien . déc. 01 14:29:00 - INFO - Starting sync for user déc. 01 14:29:00 - ERROR - Empty or non existant source (no IDs found) voici l'exemple de suppression d'une entrée à la source . [root@lsc ldap2ldapmintel]# lsc -s user -c user --config /etc/lsc/ldap2ldapmintel/ ... déc. 01 15:21:52 - INFO - Reflections took 104 ms to scan 1 urls, producing 55 keys and 115 values déc. 01 15:21:52 - INFO - Logging configuration successfully loaded from /etc/lsc/ldap2ldapmintel/logback.xml déc. 01 15:21:52 - INFO - LSC configuration successfully loaded from /etc/lsc/ldap2ldapmintel/ déc. 01 15:21:52 - INFO - Connecting to LDAP server ldap://127.0.0.1:389/dc=mines-telecom,dc=fr as cn=adm,dc=mines-telecom,dc=fr déc. 01 15:21:52 - INFO - Connecting to LDAP server ldap://ldap4.tem-tsp.eu:389/dc=int-evry,dc=fr as cn=adm,dc=int,dc=fr déc. 01 15:21:52 - INFO - Starting sync for user déc. 01 15:21:52 - ERROR - Empty or non existant source (no IDs found) déc. 01 15:21:52 - INFO - Starting clean for user déc. 01 15:21:52 - INFO - # Removing object cn=Jacques MARTIN,ou=evry,ou=people,dc=mines-telecom,dc=fr for user # Tue Dec 01 15:21:52 CET 2015 dn: cn=Jacques MARTIN,ou=evry,ou=people,dc=mines-telecom,dc=fr changetype: delete déc. 01 15:21:52 - INFO - All entries: 6, to modify entries: 1, successfully modified entries: 1, errors: 0