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

OwnCloud — эксперимент со сменой имени пользователя в AD

Owncloud

У одного из пользователей OwnCloud с аутентификацией через AD начались какие-то странные проблемы после смены имени в Active Directory. Добиться подробностей не удалось, после перезагрузки всё заработало.

Интернет подсказал, что иногда кому-то может потребоваться сменить имя пользователя в системе. При этом официально смена имени пользователя (логина) в OwnCloud не предусмотрена. Вместо этого предлагают:

  1. Создать нового временного локального пользователя.
  2. Передать новому пользователю все файлы старого пользователя.
  3. Удалить старого пользователя в OwnCloud.
  4. Залогиниться старым пользователем заново, при этом создастся учётная запись уже с новым именем из AD.
  5. Передать файлы обратно и удалить временного пользователя.

Не проверял как это работает и сохраняются ли при этом расшаренные файлы и папки, нужно будет проверить.

Решил исследовать вопрос смены имени пользователя OwnCloud в AD. Поднимаю свой тестовый стенд с OwnCloud, доменом и несколькими доменными тестовыми пользователями.

own

Имеем юзера по имени user1, полное имя — Василий Васильев. Неоригинально, но наглядно. Юзер входит в OwnCloud под своей доменной учётной записью.

owncloud

У юзера примонтировано несколько общих хранилищ с файлового сервера разными способами. Всё работает.

owncloud

Вот наши доменные пользователи.

owncloud

Сменим имя и логин пользователю на user111, пусть это будет девочка, которая вышла замуж, к примеру.

owncloud

Логинимся в Owncloud под новой учётной записью.

owncloud

Логин у нас под новым именем прекрасно работает, но в OwnCloud пользователь светится под старым именем.

owncloud

Работает всё, но некоторые общие хранилища перестали работать.

owncloud

Атрибут cn, кстати, в AD не изменился тоже.

owncloud

Хранилище "Test external link" понятно почему не работает, у него сохранены имя и пароль для подключения.

owncloud

Меняю сохранённый логин. Шара подключается.

owncloud

У пользователя хранилище подключилось.

owncloud

А вот хранилище "Персональная шара" не работает по другой причине. Дело в том, что папка для пользователя динамическая и формируется из переменной $user, а это у нас как раз новый логин. Естественно, такой папки на файловом сервере не существует.

owncloud

Переименуем папку на файловом сервере.

После этого персональная шара тоже заработала, но предыдущее хранилище отвалилось, поскольку оно смотрело на ту же папку, а мы её переименовали.

owncloud

Снова правлю тестовое хранилище, указываю новую папку user111.

owncloud

Все хранилища заработали.

Не я админ AD

Так, а что делать если не мы управляем AD, а просто рулим OwnCloud? Пользователю сменили имя, а у нас только учётка в AD есть.

Получить данные об атрибутах пользователей можно и из Linux.

Linux — получить информацию о пользователях домена

На помощь приходит утилита ldapsearch.

Утилита доступна в пакете ldap-utils. Установка в Debian:

apt install ldap-utils

Тестовый стенд:

  • Работаем на сервере Ubuntu, не в домене.
  • Имеется домен ilab.local
  • Имеется контроллер домена ilab-dc, FQDN: ilab-dc.ilab.local
  • Мы знаем пароль доменного пользователя user111

Вывести список пользователей в подразделении ILAB, команда перед выполнением запросит пароль:

ldapsearch -x -h ilab-dc.ilab.local -D "user111@ilab.local" -W -b "ou=ILAB,dc=ilab,dc=local"

linux

Можно поиграться с командой grep (атрибуты -A и -B, after и before) и получить данные только конкретного пользователя:

ldapsearch -x -h ilab-dc.ilab.local -D "user111@ilab.local" -W -b "ou=ILAB,dc=ilab,dc=local" | grep "# user1" -A 40
# или
ldapsearch -x -h ilab-dc.ilab.local -D "user111@ilab.local" -W -b "ou=ILAB,dc=ilab,dc=local" | grep "sAMAccountName: user1" -A 11 -B 40

Мы получаем полный список атрибутов, отфильтровать потом нужное не составит труда.

linux

Полное имя

Если нельзя переименовать, та как быть?

У нас ещё есть и полное имя. Давайте исправим в AD.

owncloud

Был Василий, станет Василисой. И такое случается.

owncloud

Всё прекрасное, полное имя подтянулось из Active Directory.

owncloud

Так что можно не заморачиваться и ориентироваться на полное имя.

Работа с БД

Разработчики OwnCloud пишут на форумах, что смена имени пользователя не поддерживается, поскольку оно используется в первичных ключах таблиц БД и может использоваться в сторонних приложениях.

А если всё-таки нужно переименовать? Тем более что сторонних приложений на сервере нет. Есть кейс от одного из админов, которому удалось это сделать:

Есть пользователь "Xyz Test", которого нужно переименовать в "xtest".

  1. Переименовываем папку пользователя "Xyz Test" в директории data на "xtest".
  2. Находим папки в директории пользователя со старым именем:
    find . -name "Xyz Test"

    Переименовываем их в "xtest".

  3. Делаем бэкап БД в файл SQL.

  4. Открываем файл в текстовом редакторе и заменяем "Xyz Test" на "xtest".

  5. Восстанавливаем БД из SQL файла.

  6. Восстанавливаем кэш:

  7. sudo -u www-data php occ files:scan xtest
    # или
    sudo -u www-data php occ files:scan --all

Ссылки

OwnCloud — LDAP/AD интеграция

Теги

 

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

Ошибка при установке Secret Net 7 — не удаётся записать значение в раздел

При установке Secret Net 7 иногда может возникнуть ошибка вида "Не удаётся записать значение в раздел". Дальше идёт указание ветки реестра и значения, которое не удаётся записать. Ошибка наблюдалась на Windows 7 x64 (и x86), а также на Windows Server 2012 R2. Инсталлятор Secret Net 7 запускался от имени администратора. Изменение прав доступа к веткам реестра не помогло решению проблемы.