https://bugs.openldap.org/show_bug.cgi?id=9676
Issue ID: 9676 Summary: slapadd -n0 does need -F parameter, despite the documentation Product: OpenLDAP Version: 2.5.7 Hardware: All OS: All Status: UNCONFIRMED Severity: normal Priority: --- Component: slapd Assignee: bugs@openldap.org Reporter: dpa-openldap@aegee.org Target Milestone: ---
My reading of the documentation of slapadd is, that when `slapadd -n0 -linit0.ldif` is called, and the default config directory exists, and is empty, sladadd will create the cn=config database in the default config directory.
``` -F confdir specify a config directory. If both -f and -F are specified, the config file will be read and converted to config directory format and written to the specified directory. If neither option is specified, an attempt to read the default config directory will be made before trying to use the default config file. If a valid config directory exists then the default config file is ignored. If dry-run mode is also specified, no conversion will occur.
```
My default config directory is "/data/config" ( CFLAGS="-DSLAPD_DEFAULT_CONFIGDIR='"/data/config"' )
calling strace slapadd -n0 -linit0.ldif prints:
[pid 573949] newfstatat(AT_FDCWD, "/data/config", <unfinished ...> [pid 573949] <... newfstatat resumed>{st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 [pid 573949] mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 <unfinished ...> [pid 573949] <... mmap resumed>) = 0x7f050183a000 [pid 573949] gettimeofday( <unfinished ...> [pid 573949] <... gettimeofday resumed>{tv_sec=1631220679, tv_usec=401535}, NULL) = 0 [pid 573949] openat(AT_FDCWD, "/data/config/cn=config.ldif", O_RDONLY <unfinished ...> [pid 573949] <... openat resumed>) = -1 ENOENT (No such file or directory) [pid 573949] munmap(0x7f050183a000, 1052672 <unfinished ...> [pid 573949] <... munmap resumed>) = 0 [pid 573949] newfstatat(AT_FDCWD, "//etc/openldap/slapd.conf", <unfinished ...> [pid 573949] <... newfstatat resumed>0x7ffda7228410, 0) = -1 ENOENT (No such file or directory) [pid 573949] write(2, "slapadd: bad configuration file!\n", 33 <unfinished ...>
So it fails.
If I call instead slapadd -n0 -linit0.ldif -F/data/config
the output is [pid 575257] openat(AT_FDCWD, "/home/d/data/config", O_RDONLY|O_CLOEXEC <unfinished ...> [pid 575257] <... openat resumed>) = 12 [pid 575257] epoll_ctl(4, EPOLL_CTL_ADD, 12, {events=EPOLLIN|EPOLLOUT|EPOLLRDHUP|EPOLLET, data={u32=740160072, u64=139733206168136}} <unfinished ...> [pid 575257] <... epoll_ctl resumed>) = -1 EPERM (Operation not permitted) [pid 575257] epoll_ctl(4, EPOLL_CTL_DEL, 12, 0xc0005a1b34 <unfinished ...> [pid 575257] <... epoll_ctl resumed>) = -1 EPERM (Operation not permitted) [pid 575257] getdents64(12, <unfinished ...> [pid 575257] <... getdents64 resumed>0xc000710000 /* 2 entries */, 8192) = 48 [pid 575257] getdents64(12, <unfinished ...> [pid 575257] <... getdents64 resumed>0xc000710000 /* 0 entries */, 8192) = 0 [pid 575257] close(12 <unfinished ...> [pid 575257] <... close resumed>) = 0 …
and data/config is filled with content