Домашнее облако 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
Видим что теперь используются системные библиотеки из /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