Как разблокировать пользователей 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"
После десяти неудачных попыток входа в систему пользователь попадает в заблокированное состояние.
Чтобы разблокировать заблокированного пользователя:
- SSH на ваш сервер GitLab.
- Запустите консоль 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 блокируется, это обычно означает:
- Соединение с сервером LDAP было прервано или иным образом не работало (неверные учетные данные администратора в файле конфигурации)
- Пользователь больше не существует в 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
Вы также можете разблокировать учетные записи из пользовательского интерфейса: