OwnCloud — это свободное и открытое веб-приложение для синхронизации данных и совместной работы с файлами в стиле Dropbox. Замечательный инструмент для создания личного, семейного или корпоративного файлового хранилища.
OwnCloud — установка на Ubuntu 20.04
Если нам выпало счастье интегрировать корпоративное хранилище OwnCloud с доменом Windows, то такая возможность существует.
Сегодня будем настраивать LDAP аутентификацию для OwnCloud. Поскольку этот проект похож на NextCloud, инструкция подойдёт для обоих.
NextCloud — LDAP/AD интеграция
Документация:
https://doc.owncloud.com/server/next/admin_manual/configuration/user/user_auth_ldap.html
Подготовка
Для работы LDAP требуется модуль PHP LDAP. Устанавливаем php-ldap, хотя при установке вы уже должны были установить этот пакет. Возможности:
- Поддержка LDAP групп
- Расшарить файл пользователю или группе
- Доступ через WebDAV и OwnCloud Desktop Client
- Версионность, внешнее хранилище и другие функции OwnCloud
- Бесшовное соединение с Active Directory без дополнительных настроек
- Поддержка основных групп в Active Directory (врут, вот это не полностью)
- Только доступ на чтение к LDAP (редактирование и удаление пользователей LDAP не поддерживается)
Если вы планируете использовать LDAPS, то вам понадобится Windows Server CA сертификат в формате PEM с расширением CRT. Импортируем его в /usr/local/share/ca-certificates/ и запускаем update-ca-certificates.
На странице приложений включаем "LDAP Integration".
Создаём в AD (это моя тестовая структура, ваша может отличаться).
- Сервисную учётную запись для чтения каталога LDAP:
- ldap-viewer
- Группы доступа пользователям OwnCloud:
- owncloud
- и другие группы, например, для администрирования или для настроек доступа по разным отделам, я для теста создаю ещё группы fs, groupA, groupB.
Настройка LDAP/LDAPS
Переходим под локальным админом OwnCloud в Настройки → Администрирование → Аутентификация пользователей → LDAP.
Сервер
Указываем путь к основному серверу LDAP. Можно использовать LDAP (389 порт по умолчанию) или LDAPS (636 порт по умолчанию). При необходимости можно добавить несколько серверов.
- ldaps://ilab-dc.ilab.local 636
Указываем имя сервисного пользователя и пароль. Сохранить учётные данные.
- ldap-viewer
Определяем основную базу поиска DN. Можно определить основную базу DN кнопкой. В ней будут искаться пользователи, группы, сервисная учётная запись. DN для пользователей и групп потом можно переопределить в дополнительных настройках. При необходимости можно вверси LDAP фильтры вручную. Чем меньше объектов будет обрабатывать OwnCloud, тем быстрее будет работать аутентификация и LDAP/AD интеграция. Можно проверить базу поиска DN.
- dc=ilab,dc=local
Продолжить.
Пользователи
Настраиваем критерии, по которым проходит поиск пользователей в AD. Указываем классы объектов.
- user
Выбираем группы, в которых искать пользователей. Группы выбираются из основного DN, или DN пользователей, переопределённый в дополнительных настройках.
- owncloud
- fs
- groupA
Можно проверить настройки и пересчитать пользователей. При необходимости LDAP фильтр можно изменить.
Продолжить.
Учётные данные
Настраиваем учётные данные для входа. Можно входить по логину или по email.
Указываем дополнительный атрибут для входа.
- sAMAccountName
При необходимости LDAP фильтр можно изменить. Можно проверить настройки и логин пользователя.
Продолжить.
Группы
Настраиваем критерии, по которым проходит поиск групп в AD. Указываем классы объектов.
- group
Выбираем группы.
- owncloud
- fs
- groupA
Можно проверить настройки и пересчитать группы. При необходимости LDAP фильтр можно изменить.
Дополнительно
Настройки подключения
Здесь можно задать дополнительные опции LDAP.
- Указать адрес и порт резервного LDAP сервера, которые будут использоваться при недоступности основного.
- Можно здесь принудительно отключить основной сервер и использовать только резервный.
- Отключить проверку SSL
- Указать время хранения кэша, по умолчанию TTL = 600.
- Настроить таймаут сети
Настройка каталога
Здесь можно задать дополнительные опции каталога LDAP.
- Атрибут отображаемого имени пользователя
- Атрибут вторичного имени (в скобках), я здесь указываю email
- DN каталога пользователей
- Атрибуты поиска пользователей (cn, displayname, mail)
- Поле отображаемого имени группы
- DN каталога групп
- Атрибуты поиска групп (cn, name)
- Как искать пользователя в группах: member (AD)
- Алгоритм членства в группе: recursiveMemberOf (AD)
- URL участников динамической группы. Этого параметра нет в документации. URL для поиска членства в группе.
- Вложенные группы — да
- Страничный размер блоков, по умолчанию 500
Специальные атрибуты
- Поле квоты — можно задать атрибут пользователя и рулить квотами через LDAP
- Квота по умолчанию. Ограничить размер диска пользователям. Значение по умолчанию.
- Поле адреса email, пишу mail
- Правило именования домашнего каталога пользователя. По умолчанию OwnCloud хранит данные так: "/var/www/owncloud/data/5a9df029-322d-4676-9c80-9fc8892c4e4b". Можно изменить на значение из атрибута LDAP.
- Поле-заполнитель "$home". Нет в документации.
Домашний каталог пользователя должен быть доступен, иначе пользователь не сможет войти в OwnCloud.
Можно проверить конфигурацию.
Эксперт
Атрибут для внутреннего имени. Этот атрибут будет использоваться как уникальный идентификатор пользователя для OwnCloud. Укажу SAMAccountName. Также укажу UUID-атрибут для пользователей и групп: objectGUID.
Больше ничего здесь не использую. Можно проверить конфигурацию.
Заключение
Я обычно применяю не совсем такие настройки для интеграции AD и OwnCloud. Для каждого конкретного случая настройки отличаются, в зависимости от принятых правил и структуры атрибутов AD. К тому же, лучше ограничивать Base DN исходя из политики минимального доступа.
OwnCloud сохраняет изменения в настройках автоматически, при изменении значения поля.
Встречаются баги, например, когда создаёшь группу в AD в процессе настройки, а она не появляется. Это кэш. Закрыть всё, подождать минут 10, повторить. Можно также изменить значение TTL, кэш сбросится.
Старайтесь не использовать встроенные группы AD типа Domain Admins или Domain Users. В документации написано, что есть поддержка этих групп, но с ними всё не так просто. Аутентификация возможна, а вот определение членства в группе хромает.