Я пытаюсь настроить TLS для SLAPD, но все равно возникает ошибка «Ошибка TLS init def ctx». Мне удалось отследить ошибку до системного вызова, когда демон пытается открыть файл сертификата CA (open("/etc/ssl/certs/ca.crt", O_RDONLY) = -1 EACCES
). Он открывает файл CRT с флагом O_RDONLY и получает в качестве ответа EACCES. Однако сам файл доступен для чтения всем. Кроме того, я побежал sudo -u openldap cat /etc/ssl/certs/ca.crt
и файл выводится нормально (openldap действительно является пользователем и группой демона). Любой совет?
РЕДАКТИРОВАТЬ:
Права доступа к файлу 644 принадлежат root: root, а права доступа ко всем родительским каталогам 755 принадлежат root: root. Я попытался сменить владельца / группу на openldap, а также попытался изменить права доступа на 777. Также попытался переместить файл в /, но безуспешно. Также попытался запустить с правами root, то есть без параметров -u и -g, но все равно не удалось.
Последние строки вывода strace: http://paste.ubuntu.com/1147299/
AppArmor вероятно запрещает доступ к файлу, проверьте /var/log/kern.log
чтобы подтвердить это:
grep audit /var/log/kern.log
Если это так, отредактируйте /etc/apparmor.d/usr.sbin.slapd
и дайте ему разрешение на этот файл.
/etc/ssl/certs/ r,
/etc/ssl/certs/* r,
Бегать sudo service apparmor reload
после изменения профилей.
Это очень пахнет SELinux или другим модулем безопасности. Selinux включен? Вы можете заглянуть в /var/log/audit/audit.log
для сообщений о том, что selinux заблокировал операцию. Вы также можете попробовать отключить selinux, запустив:
# setenforce 0
А теперь запускай slapd
. Если это сработало, значит, это была ваша проблема, и есть два способа ее исправить:
Вы можете использовать audit2allow
программа для создать соответствующую политику selinux.
См. Ответ mgorven, что делать, если у вас есть AppArmor вместо SElinux.