Возможно, Вы могли использовать incron, который использует inotify для запуска команд на основе действия файловой системы. Вы могли затем возможно наблюдать точку монтирования и использовать incron для инициирования lsof для поиска, какой процесс получает доступ к нему.
Это связано с тем, что продолжение строки в файле ldif удаляет первый пробел, и атрибут считается следующим: {0} to * by dn.base = "gidNumber = 0 + uidNumber = 0, cn = peercred, cn = external, cn = auth "writeby * none
(недопустимо)
Итак, поставьте дополнительный пробел перед продолжением строки:
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write
by * none
Имейте в виду, что эта ошибка возникает, когда у вашего оператора olcAccess также есть другие проблемы с синтаксисом. Например, я использовал ключевое слово в одном из моих предложений 'by', которое ему не принадлежало, и вместо того, чтобы сказать мне «здесь нельзя использовать 'UID'» , оно продолжало говорить «slapd: line 0: ожидание доступа получило [мой DN] ». Ошибки для этой штуки тупые.
Необходимо создать этот файл mod_acl.ldif со следующим содержимым, с точным форматом, очень хитроумно. И используйте следующую команду:
ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f mod_acl.ldif
Ожидаемый результат:
modifying entry "olcDatabase={1}mdb,cn=config"
dn: olcDatabase={1}mdb,cn=config
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,krbPrincipalKey
by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write
by * none
-
add: olcAccess
olcAccess: to dn.base=""
by * read
-
add: olcAccess
olcAccess: to *
by dn="cn=admin,dc=example,dc=com" write
by * read
Будьте внимательны, тип базы данных Ldap может меняться в зависимости от вашей реализации
может быть mdb
, hdb
или другим, зависящим от вашей установки.