Как разблокировать пользователей LDAP в GitLab-CE

Некоторые из наших пользователей GitLab, которые проходили аутентификацию через LDAP, блокировались, когда была заблокирована учетная запись пользователя аутентификации LDAP. Как я могу их разблокировать? GitLab-EE, кажется, обеспечивает эту функцию принудительной синхронизацией состояния LDAP. Как я могу сделать это с GitLab-CE?

6 ответов

Решение

Я в основном пошел прямо в базу данных:

sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d gitlabhq

а также

update public.users set state='active';

Примечание: это разблокирует всех пользователей

У меня был пользователь с состоянием ldap_blockedЧтобы исправить, я пошел user.state='active' который вернулся => "active" тогда я сделал user.unlock_access!для хорошей меры (вероятно, не обязательно). Затем пользователь был разблокирован в веб-консоли.

Подробнее

Я выполнил инструкции здесь: https://docs.gitlab.com/12.10/ee/security/unlock_user.html

Что включает в себя вход в рубиновую консоль:

sudo gitlab-rails console -e production

Затем поиск пользователя и сохранение во временной переменной:

userJohn = User.find_by(email: 'john.smith@yourdomain.com')
userJohn.state
=> "ldap_blocked"

Затем я немного отклонился от инструкций, установив пользователя в активный режим напрямую, который, казалось, работал (в инструкциях говорилось userJohn.unlock_access! что не сработало для меня)

userJohn.state='active'
=> "active"
userJohn.state #me checking to make sure
=> "active"

После десяти неудачных попыток входа в систему пользователь попадает в заблокированное состояние.

Чтобы разблокировать заблокированного пользователя:

  1. SSH на ваш сервер GitLab.
  2. Запустите консоль Ruby on Rails:

Для Омнибуса GitLab:

      sudo gitlab-rails console -e production

Для установок из исходников:

      sudo -u git -H bundle exec rails console -e production

Найдите пользователя, которого нужно разблокировать. Вы можете искать по электронной почте или идентификатору.

      user = User.find_by(email: 'admin@local.host')

или же

      user = User.where(id: 1).first

Разблокировать пользователя:

      user.unlock_access!
user.save

Выйдите из консоли, нажав Control + d.

Теперь пользователь должен иметь возможность войти в систему.

Если пользователь LDAP блокируется, это обычно означает:

  1. Соединение с сервером LDAP было прервано или иным образом не работало (неверные учетные данные администратора в файле конфигурации)
  2. Пользователь больше не существует в LDAP.

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

Чтобы завершить ответ user5167528 , если у вас длинный список пользователей, вы можете использовать следующий скрипт:

      ldap_blocked_users = User.where(state: 'ldap_blocked')

ldap_blocked_users.each do |user|
  puts "Username: #{user.username}, Email: #{user.email}"
  user.update!(state: 'active')
end

Вы также можете разблокировать учетные записи из пользовательского интерфейса:

https://gitlab.com/gitlab-org/gitlab-ce/issues/13179

Другие вопросы по тегам