Используемые термины: Nextcloud , Active Directory , FreeIPA , Linux .
Для хранения пользователей Nextcloud можно использовать как внутреннюю базу, так и внешнюю, например, сервер каталогов (LDAP). Так как реализации последнего могут быть разные, мы рассмотрим настройку для Active Directory и FreeIPA. Также мы выполним конфигурирование как в веб-интерфейсе, так и из командной строки.
Подготовка сервера к настройке
Включение модуля LDAP в Nextcloud
Через веб-интерфейс
Из командной строки
Настройка модуля
Через веб-интерфейс
Из командной строки
Просмотр пользователей
Подготовка системы
1. Предполагается, что у нас уже есть настроенный сервер Nextcloud, например, по одной из инструкций:
2. Также необходимо убедиться в наличие модуля php-ldap. В противном случае в процессе настройки мы можем получить ошибку the library ldap is not available .
Чтобы посмотреть наличие модуля можно выполнить команду на сервере:
php -m | grep ldap
Если мы получим в ответ пустую строку, то необходимо установить пакет php-ldap и перезапустить службу, обрабатывающую скрипты php.
а) На Linux CentOS:
yum install php-ldap
systemctl restart php-fpm
systemctl restart httpd
* в данном примере мы перезапускаем и php-fpm , и httpd . В вашей системе может использоваться только один сервис.
б) На Linux Ubuntu:
apt install php-ldap
Если у нас установлена не нативная для репозитория версия php, то при установке расширения нужно добавлять в названии версию, например:
apt install php7.4-ldap
systemctl restart php7.4-fpm
systemctl restart apache2
* в данном примере мы перезапускаем и php7.4-fpm , и apache2 . В вашей системе может использоваться только один сервис. Имя для сервиса php7.4-fpm может быть другим — это зависит от версии PHP.
Посмотреть версию php можно командой:
php -v
Однако, в системе может быть установлено несколько версий PHP. Полный список можно посмотреть командой:
update-alternatives —list php
3. У нас должна быть учетная запись на сервере LDAP с правами чтения (DN user). От данной учетной записи будет выполняться подключение к серверу каталогов.
В моем примере будет создана запись с именем bind .
Включение модуля (приложения) интеграции с LDAP
По умолчанию, после установки Nextcloud приложение для интеграции с LDAP установлено, но не активировано. Рассмотрим 2 способа его включения.
Графический интерфейс
Переходим к списку приложений:
Находим LDAP user and group backend :
Справа от приложения кликаем по Включить :
Командная строка
Из командной строки мы можем управлять Nextcloud с помощью утилиты occ, которая находится в каталоге самого портала.
Для включения приложения интеграции LDAP вводим команду…
а) на CentOS / Red Hat / Fedora:
sudo -u apache php /var/www/nextcloud/occ app:enable user_ldap
б) на Ubuntu / Debian:
sudo -u www-data php /var/www/nextcloud/occ app:enable user_ldap
* где в приведенных 2-х командах /var/www/nextcloud — путь, в котором установлен nextcloud.
* обе команды аналогичны, за исключением пользователя, от которого они запускаются. В CentOS apache , а в Ubuntu www-data .
Настройка интеграции
Рассмотрим также 2 способа — с помощью веб-интерфейса и командной строки.
Графический интерфейс
Переходим к настройкам, кликнув по значку пользователя и выбрав Настройки :
Выбираем подраздел Интеграция LDAP / AD :
В открывшемся окне, на вкладке Сервер добавляем имя сервера (можно задать просто имя домена). После нажимаем кнопку Определить порт — мы должны увидеть порт для подключения к каталогу (как правило, 389 или 636):
* в данном примере мы задали имя сервера (домена) remontka.local . Обратите внимание, что не все реализации LDAP позволяют системе определить порт — в таком случае, просто пропишем его вручную.
Ниже вводим данные для учетной записи, которая была нами подготовлена ранее — после кликаем по Сохранить учетные данные :
* как говорилось выше, для связки с ldap была создана запись bind . В разных реализациях LDAP могут быть разные требования для указания учетной записи. Например, во FreeIPA необходимо указать uid=bind,cn=users,cn=accounts,dc=remontka,dc=local .
Для базы поиска пользователей и групп можно просто кликнуть по Определить базу поиска DN — тогда будет определен корень домена. Или можно ввести самому конкретное подразделение:
* в моем примере данные из AD будут искаться в организационном юните Пользователи , который находится в корне домена remontka.local . Для других реализаций ldap определение может не работать — вводим вручную. Также, база должна быть соответствующей, например, для FreeIPA это cn=users,cn=accounts,dc=remontka,dc=local .
Нажимаем Проверить базу поиска DN :
Если наши настройки верны, мы должны увидеть фразу «Конфигурация в порядке»:
Нажимаем Продолжить — мы должны перейти на вкладку Пользователи :
На данной вкладке можно ничего не трогать, или настроить дополнительные фильтры. После кликаем по кнопке Проверить настройки и пересчитать пользователей :
* в моем примере было найдено 388 пользователей.
В нижней части мы должны увидеть Конфигурация в порядке . Кликаем по Продолжить :
Мы окажемся на странице Учетные данные :
Мы можем задать поле, которое будем использовать в качестве логина:
* в данном примере мы оставляем значение по умолчанию — имена пользователя ldap.
Ниже мы можем проверить учетную запись, введя ее в специальное поле и нажав Проверить настройки :
… если учетная запись найдена, мы увидим сообщение Пользователь найден и настройки проверены :
Внизу проверим, чтобы конфигурация была в порядке и нажимаем Продолжить :
На последней вкладке можно задать фильтры для групп или оставить по умолчанию.
Интеграция настроена. Пользователи будут загружаться из каталога ldap, но их идентификаторы будут отображаться в виде UID — это произвольные набор цифр и букв и его использовать не удобно. Чтобы изменить атрибут для имени nextcloud, кликаем по ссылке Эксперт :
Задаем атрибут из ldap, который мы будем использовать для внутреннего имени системы:
* в данном примере мы задали атрибут sAMAccountName . Он характерен для логина в Active Directory. Для FreeIPA указываем uid .
Командная строка
Для дальнейшего удобства, определим переменную с пользователем, от которого работает веб-сервер.
а) для CentOS / Red Hat:
webuser=apache
б) для Ubuntu / Debian:
webuser=www-data
Теперь создаем конфигурацию:
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:create-empty-config
Мы должны увидеть в ответ что-то на подобие:
Created new configuration with configID s01
* в данном примере создана конфигурация с идентификатором s01 — последующие команды будут вводиться с данным ID.
Посмотреть информацию о созданной конфигурации можно командой:
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:show-config
Теперь задаем настройки.
Указываем ldap-сервер для подключения и порт:
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:set-config s01 ldapHost «remontka.local»
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:set-config s01 ldapPort «389»
* в данном примере мы сервер remontka.local и порт 389 (не зашифрованные запросы к ldap).
Задаем пользователя, от которого будем выполнять подключения к каталогу:
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:set-config s01 ldapAgentName «bind»
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:set-config s01 ldapAgentPassword «bind»; history -d $((HISTCMD-1))
* мы указали, что подключение будет выполняться от пользователя bind с паролем bind . Дополнительная команда history -d $((HISTCMD-1)) удалить из истории строку с паролем.
Задаем область поиска учетных записей:
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:set-config s01 ldapBase «ou=Пользователи,dc=remontka,dc=local»
Задаем фильтры пользователя, поля для логина и класса объекта:
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:set-config s01 ldapLoginFilter «(&(|(objectclass=person))(uid=%uid))»
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:set-config s01 ldapUserFilter «(|(objectclass=person))»
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:set-config s01 ldapUserFilterObjectclass «person»
Указываем поле для атрибута электронной почты:
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:set-config s01 ldapEmailAttribute «mail»
Проверяем конфигурацию:
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:test-config s01
Мы должны увидеть:
The configuration is valid and the connection could be established!
Если же мы увидим ошибку, смотрим лог и устраняем проблемы:
tail /var/www/nextcloud/data/nextcloud.log
Активируем конфигурацию:
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:set-config s01 ldapConfigurationActive «1»
Пользователи будут загружаться из каталога ldap, но их идентификаторы будут отображаться в виде UID — это произвольные набор цифр и букв и его использовать не удобно. Чтобы изменить атрибут для имени nextcloud, вводим:
sudo -u ${webuser} php /var/www/nextcloud/occ ldap:set-config s01 ldapExpertUsernameAttr «sAMAccountName»
Список пользователей
Чтобы посмотреть список пользователей, кликаем по изображению аккаунта и выбираем Пользователи :
Система должна подгрузить пользователей из ldap.