Вы здесь

NextCloud - ошибка в логах Error files Backends provided no user object for user

Столкнулся с периодической ошибкой в логах NextCloud 11 и 12 версий:

Error files Backends provided no user object for ivanov_8308

Если вы используете авторизацию через Active Directory, пользователи с цифрами на конце появляются в том случае, если в панели администрирования в разделе Интеграция LDAP/AD (site.ru/settings/admin/ldap) на вкладке Эксперт нажать на кнопку Очистить соответствия Имя - пользователь LDAP.

Если во время нажатия есть активные залогиненные пользователи, то в базе данных будет создано новое соответствие их логин с постификсом в виде четырех цифр - например для пользователя с логином ivanov.a будет создано соответствие ivanov_8308 и новый каталог на сервере с таким же именем. Соответственно

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

Как исправить?

  1. К примеру был у нас пользователь ivanov но после нажатия кнопки Очистка соответствия создалось новое соответствие ivanov_8308, и файлы у юзера в аккаунте пропали.
  2. Чтобы вернуть пользователю файлы, нужно на самом сервере перенести их из вновь созданной папки с кривым логином (ivanov_8308,) в папку со старым логином - ivanov.

  3. Теперь подключаемся к базе данных NextCloud и переименовываем соответствие с кривым логином таблице oc_ldap_user_mapping:
    MariaDB [nextcloud]>  update oc_ldap_user_mapping set owncloud_name="ivanov" WHERE owncloud_name = "ivanov_8308";
  4. Выполняем переиндексацию файлов пользователя ivanov на сервере NextCloud. У меня NextCloud работает в отдельном Docker-контейнере, поэтому подключаемся к оболочке контейнера и выполняем:
    occ files:scan ivanov

Ошибка Error files Backends provided no ivanov_8308 object for ivanov_8308возникает, если у этого пользователя с кривым логином, были расшарены через ссылку какие-либо файлы, либо предоставлен общий доступ в файлам/директориям.
Так как такого пользователя мы уже переименовали и файлы перенесли, нужно переименовать имя пользователя в базе данных в таблице from oc_share, чтобы у него сохранились все расшаренные ресурсы:

MariaDB [nextcloud]>  update oc_ldap_user_mapping set uid_owner ="ivanov" WHERE uid_owner = "ivanov_8308";

Вывод - старайтесь не нажимать кнопку Очистить соответствия Имя - пользователь LDAP без крайней необходимости, и делайте это при минимальной активности пользователей.

Также рекомендуем