Перейти к основному содержанию

Seafile — настройка LDAP

Seafile

Домашнее облако seafile поддерживает аутентификацию Active Directory через LDAP (LDAPS), что делает его уже не совсем домашним, а немного корпоративным.

Ссылки

https://download.seafile.com/published/seafile-manual/deploy/using_ldap.md

Работаю под рутом.

LDAP

Для настройки AD аутентификации через LDAP нужно внести дополнительные настройки в файл ccnet.conf.

Для использования email адреса (user@example.com) в качестве логина:

[LDAP]
HOST = ldap://your_domain_controller.example.local:389/
BASE = cn=users,dc=example,dc=com
USER_DN = ldap@example.local
PASSWORD = password
LOGIN_ATTR = mail

Для использования UserPrincipalName (user@example.local) в качестве логина:

[LDAP]
HOST = ldap://your_domain_controller.example.local:389/
BASE = cn=users,dc=example,dc=com
USER_DN = ldap@example.local
PASSWORD = password
LOGIN_ATTR = userPrincipalName
  • HOST — IP адрес или FQDN адрес контроллера домена.
  • BASE — Distinguished name (DN) путь к пользователям домена. Нельзя использовать root DN (dc=example,dc=com).
  • USER_DN — доменная учётная запись с правами на чтение AD.
  • PASSWORD — пароль от USER_DN.
  • LOGIN_ATTR — что использовать в качестве логина, может принимать значения mail или userPrincipalName.

LDAPS

Для пресечения передачи паролей в открытом виде по сети часто требуется настроить AD аутентификацию через LDAPS. Здесь задачка посложнее. Внесём настройки в ccnet.conf.

[LDAP]
HOST = ldaps://your_domain_controller.example.local:636/
BASE = cn=users,dc=example,dc=com
USER_DN = ldap@example.local
PASSWORD = password
LOGIN_ATTR = mail
FILTER = memberOf=CN=seafile-users,OU=Seafile,OU=Groups,OU=YourCompany,DC=example,DC=com
  • HOST — IP адрес или FQDN адрес контроллера домена. Для LDAPS лучше использовать FQDN.
  • BASE — Distinguished name (DN) путь к пользователям домена. Нельзя использовать root DN (dc=example,dc=com).
  • USER_DN — доменная учётная запись с правами на чтение AD.
  • PASSWORD — пароль от USER_DN.
  • LOGIN_ATTR — что использовать в качестве логина. В документации сказано, что для LDAPS можно использовать только mail. Однако, я успешно применил userPrincipalName.
  • FILTER — необязательно, distinguished name (DN) путь к группе AD. Позволяет ограничить доступ к seafile конкретной AD группой.

TLS

Иногда seafile не может приконнектиться к AD с использованием TLS. Если LDAP работает, а LDAPS никак не хочет работать, начинаем шаманить. Можно посмотреть документацию, там есть инструкция для Centos 6 и Ubuntu 14.

В Ubuntu 18:

cd ${SEAFILE_INSTALLATION_DIR}/seafile-server-latest/seafile/lib
mkdir disabled_libs_use_local_ones_instead
mv liblber-2.4.so.2 libldap-2.4.so.2 disabled_libs_use_local_ones_instead/

По сути мы отключаем библиотеки ldap, зашитые в seafile, вместо них будут использоваться системные библиотеки (если они установлены в ОС). Проверим путь к библиотекам:

cd ${SEAFILE_INSTALLATION_DIR}/seafile-server-latest/
ldd ./seafile/bin/ccnet-server

seafile

Видим что теперь используются системные библиотеки из /usr/lib/... Перезагружаем сервер.

service seafile restart
service seahub restart

Эти изменения нужно будет повторять после каждого обновления seafile.

Примечание

Для работы LDAPS, возможно, нужно разрешить использование TLS в /etc/ldap/ldap.conf:

# TLS certificates (needed for GnuTLS)
TLS_CACERT      /etc/ssl/certs/ca-certificates.crt
                   |
                   v
# TLS certificates (needed for GnuTLS)
TLS_CACERT      /etc/ssl/certs/ca-certificates.crt
TLS_REQCERT     allow
 

Похожие материалы