osixia / docker-openldap

OpenLDAP container image 🐳🌴
MIT License
4.02k stars 973 forks source link

Converting schema to ldif seems to work, but ldif file could not be found #496

Open mwienhold opened 3 years ago

mwienhold commented 3 years ago

Hello!

I am trying to set up an Openldap server with an extension to the attribute types of a custom object class customPerson:

customPerson.schema:

attributeType ( 2.25.128424792425578037463837247958458780603.2
   NAME 'company'
   EQUALITY caseIgnoreMatch
   SUBSTR caseIgnoreSubstringsMatch
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024}
   SINGLE-VALUE )

objectClass ( 2.25.128424792425578037463837247958458780603.3
   NAME 'customPerson'
   DESC 'customPerson'
   SUP iNetOrgPerson
   STRUCTURAL
   MAY ( company ) )

When I run docker-compose my custom schema seems to be converted, but afterwards the generated ldif file can not be found.

docker-compose.yml:

  openldap:
    image: osixia/openldap:latest
    container_name: openldap
    environment:
      LDAP_DOMAIN: "example.org"
      LDAP_BASE_DN: "DC=example,DC=org"
      LDAP_ADMIN_PASSWORD: "admin"
      LDAP_READONLY_USER: "true"
      LDAP_READONLY_USER_USERNAME: "readonly"
      LDAP_READONLY_USER_PASSWORD: "readonly"
    command: --copy-service --loglevel debug
    volumes:
      - ./.docker/openldap/ldap.conf:/container/service/slapd/assets/ldap.conf
      - ./.docker/openldap/schema/customPerson.schema:/container/service/slapd/assets/config/bootstrap/schema/customPerson.schema
      - ./.docker/openldap/seed:/container/service/slapd/assets/config/bootstrap/ldif/custom

Docker's logs:

[...]
openldap        | config file testing succeeded
openldap        | sed: can't read customPerson.ldif: No such file or directory
openldap        | sed: can't read customPerson.ldif: No such file or directory
openldap        | sed: can't read customPerson.ldif: No such file or directory
openldap        | sed: can't read customPerson.ldif: No such file or directory
openldap        | sed: can't read customPerson.ldif: No such file or directory
openldap        | sed: can't read customPerson.ldif: No such file or directory
openldap        | sed: can't read customPerson.ldif: No such file or directory
openldap        | sed: can't read customPerson.ldif: No such file or directory
openldap        | sed: can't read customPerson.ldif: No such file or directory
openldap        | sed: can't read customPerson.ldif: No such file or directory
openldap        | mv: cannot stat 'customPerson.ldif': No such file or directory
openldap        | Processing file /container/run/service/slapd/assets/config/bootstrap/schema/mmc/dhcp.ldif
[...]
openldap        | ldap_add: Invalid syntax (21)
openldap        |       additional info: objectClass: value #2 invalid per syntax
openldap        | adding new entry "cn=Test1 Benutzer,dc=example,dc=org"
openldap        |
openldap        | ldap_add: Invalid syntax (21)
openldap        |       additional info: objectClass: value #2 invalid per syntax
openldap        | adding new entry "cn=Test1 Benutzer,dc=example,dc=org"
openldap        | *** /container/run/startup/slapd failed with status 21
openldap        |
openldap        | *** Run commands before finish...
openldap        | *** Killing all processes...
openldap        | 5fcfa45e daemon: shutdown requested and initiated.
openldap        | 5fcfa45e slapd shutdown: waiting for 0 operations/tasks to finish
openldap        | 5fcfa45e slapd stopped.
openldap exited with code 1

Am I missing something?

Thank you!

andyswe commented 3 years ago

Having the same error. Did you find a solution? My log output with custom printing in schemas-to-ldif.sh below.

Server starts but custom attributetypes and objectclasses seems not to be added. If I add objects with my ldif file I get, as you also get:

openldap        | ldap_add: Invalid syntax (21)
openldap        |       additional info: objectClass: value #2 invalid per syntax
*** CONTAINER_LOG_LEVEL = 3 (info)
*** Search service in CONTAINER_SERVICE_DIR = /container/service :
*** link /container/service/:ssl-tools/startup.sh to /container/run/startup/:ssl-tools
*** link /container/service/slapd/startup.sh to /container/run/startup/slapd
*** link /container/service/slapd/process.sh to /container/run/process/slapd/run
*** Set environment for startup files
*** Environment files will be proccessed in this order :
Caution: previously defined variables will not be overriden.
/container/environment/99-default/default.startup.yaml
/container/environment/99-default/default.yaml

To see how this files are processed and environment variables values,
run this container with '--loglevel debug'
*** Running /container/run/startup/:ssl-tools...
*** Running /container/run/startup/slapd...
openldap user and group adjustments
get current openldap uid/gid info inside container
-------------------------------------
openldap GID/UID
-------------------------------------
User uid: 911
User gid: 911
uid/gid changed: false
-------------------------------------
updating file uid/gid ownership
Database and config directory are empty...
Init new ldap server...
  Backing up /etc/ldap/slapd.d in /var/backups/slapd-2.4.50+dfsg-1~bpo10+1... done.
  Creating initial configuration... done.
  Creating LDAP directory... done.
invoke-rc.d: could not determine current runlevel
invoke-rc.d: policy-rc.d denied execution of restart.
Start OpenLDAP...
Waiting for OpenLDAP to start...
Started!
Add bootstrap schemas...
Converting /container/service/slapd/assets/config/bootstrap/schema/custom/RHDS.schema
Converting /container/service/slapd/assets/config/bootstrap/schema/mmc/dhcp.schema
Converting /container/service/slapd/assets/config/bootstrap/schema/mmc/dnszone.schema
Converting /container/service/slapd/assets/config/bootstrap/schema/mmc/mail.schema
Converting /container/service/slapd/assets/config/bootstrap/schema/mmc/mmc.schema
Converting /container/service/slapd/assets/config/bootstrap/schema/mmc/openssh-lpk.schema
Converting /container/service/slapd/assets/config/bootstrap/schema/mmc/quota.schema
Converting /container/service/slapd/assets/config/bootstrap/schema/mmc/radius.schema
Converting /container/service/slapd/assets/config/bootstrap/schema/mmc/samba.schema
Converting /container/service/slapd/assets/config/bootstrap/schema/mmc/zarafa.schema
config file testing succeeded
Schemas  /container/service/slapd/assets/config/bootstrap/schema/custom/RHDS.schema /container/service/slapd/assets/config/bootstrap/schema/mmc/dhcp.schema /container/service/slapd/assets/config/bootstrap/schema/mmc/dnszone.schema /container/service/slapd/assets/config/bootstrap/schema/mmc/mail.schema /container/service/slapd/assets/config/bootstrap/schema/mmc/mmc.schema /container/service/slapd/assets/config/bootstrap/schema/mmc/openssh-lpk.schema /container/service/slapd/assets/config/bootstrap/schema/mmc/quota.schema /container/service/slapd/assets/config/bootstrap/schema/mmc/radius.schema /container/service/slapd/assets/config/bootstrap/schema/mmc/samba.schema /container/service/slapd/assets/config/bootstrap/schema/mmc/zarafa.schema
----\n /container/service/slapd/assets/config/bootstrap/schema/custom/RHDS.schema\n -rwxr-xr-x 1 openldap openldap 72844 Jan 12 07:32 /container/service/slapd/assets/config/bootstrap/schema/custom/RHDS.schema RHDS.ldif
RHDS.ldif
/tmp/tmp.rrbZ1kGAKi
sed: can't read RHDS.ldif: No such file or directory
sed: can't read RHDS.ldif: No such file or directory
sed: can't read RHDS.ldif: No such file or directory
sed: can't read RHDS.ldif: No such file or directory
sed: can't read RHDS.ldif: No such file or directory
sed: can't read RHDS.ldif: No such file or directory
sed: can't read RHDS.ldif: No such file or directory
sed: can't read RHDS.ldif: No such file or directory
sed: can't read RHDS.ldif: No such file or directory
sed: can't read RHDS.ldif: No such file or directory
mv: cannot stat 'RHDS.ldif': No such file or directory
----\n /container/service/slapd/assets/config/bootstrap/schema/mmc/dhcp.schema\n -rw-rw-r-- 1 openldap openldap 23903 Jun 15  2020 /container/service/slapd/assets/config/bootstrap/schema/mmc/dhcp.schema dhcp.ldif
dhcp.ldif
/tmp/tmp.rrbZ1kGAKi
----\n /container/service/slapd/assets/config/bootstrap/schema/mmc/dnszone.schema\n -rw-rw-r-- 1 openldap openldap 5705 Jun 15  2020 /container/service/slapd/assets/config/bootstrap/schema/mmc/dnszone.schema dnszone.ldif
dnszone.ldif
/tmp/tmp.rrbZ1kGAKi
----\n /container/service/slapd/assets/config/bootstrap/schema/mmc/mail.schema\n -rw-rw-r-- 1 openldap openldap 3935 Jun 15  2020 /container/service/slapd/assets/config/bootstrap/schema/mmc/mail.schema mail.ldif
mail.ldif
/tmp/tmp.rrbZ1kGAKi
----\n /container/service/slapd/assets/config/bootstrap/schema/mmc/mmc.schema\n -rw-rw-r-- 1 openldap openldap 1049 Jun 15  2020 /container/service/slapd/assets/config/bootstrap/schema/mmc/mmc.schema mmc.ldif
mmc.ldif
/tmp/tmp.rrbZ1kGAKi
----\n /container/service/slapd/assets/config/bootstrap/schema/mmc/openssh-lpk.schema\n -rw-rw-r-- 1 openldap openldap 535 Jun 15  2020 /container/service/slapd/assets/config/bootstrap/schema/mmc/openssh-lpk.schema openssh-lpk.ldif
andyswe commented 3 years ago

Ok, found the other thread. Problem that the filename of your custom schema files can not contain any upper case letters. Renamed: RHDS.schema -> rhds.schema. Seems to work.