当 LDAP 身份验证用户帐户被锁定时,我们的一些通过 LDAP 进行身份验证的 GitLab 用户被阻止。我怎样才能解锁它们?GitLab-EE 似乎通过强制同步 LDAP 状态来提供此功能。我怎样才能用 GitLab-CE 做到这一点?
4 回答
我有一个状态ldap_blocked
为修复的用户,我去了user.state='active'
,=> "active"
然后我做user.unlock_access!
了很好的措施(可能没有必要)。然后用户在 Web 控制台中被取消阻止。
更多详情
我在这里按照说明操作:https ://docs.gitlab.com/12.10/ee/security/unlock_user.html
这涉及进入 ruby 控制台:
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"
我基本上直接进入数据库:
sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d gitlabhq
和
update public.users set state='active';
注意:这将取消阻止所有用户
如果 LDAP 用户被阻止,通常意味着:
- 与 LDAP 服务器的连接被中断或无法正常工作(配置文件中的管理员凭据错误)
- 该用户不再存在于 LDAP 中。
如果用户仍然存在于 LDAP 中,但仍被随机阻止,则可能表明与 LDAP 服务器之间存在零星的通信问题。在这种情况下,尝试再次登录应该会起作用,并且会解除对用户的阻止。
在十次登录尝试失败后,用户进入锁定状态。
要解锁锁定的用户:
- SSH 到您的 GitLab 服务器。
- 启动 Ruby on Rails 控制台:
对于综合 GitLab:
sudo gitlab-rails console -e production
对于源安装:
sudo -u git -H bundle exec rails console -e production
找到要解锁的用户。您可以通过电子邮件或 ID 进行搜索。
user = User.find_by(email: 'admin@local.host')
或者
user = User.where(id: 1).first
解锁用户:
user.unlock_access!
user.save
使用 Control+d 退出控制台
用户现在应该可以登录了。