更改 LDAP OU 后如何更新 gitlab 用户

How can you update gitlab users after changing LDAP OU

我目前正在使用 LDAP 身份验证的环境中使用 gitlab-ce(综合,在 Ubuntu VM 上)。 LDAP 管理员最近从

之类的东西重新配置了 OUs

ou=temp, ou=users, ou=baseinfrastructureou=users, ou=baseinfrastructure.

现在,当我使用普通用户帐户做一些像 git pull 这样简单的事情时,该用户帐户将被设置为 ldap_blocked,因为 gitlab 使用 temp 部分查询用户在 cn 字符串中,显然找不到它。

有没有办法更新用户或其他方式,以便 gitlab 不再使用 ou=temp, 部分进行查询?

经过一番搜索,我发现信息存储在 identities table.

在 gitlab omnibus 中,您可以使用 gitlab-psql 启动数据库控制台。

在我的例子中,验证我做的事情是否正确所需的查询是:

SELECT external_uid, replace(external_uid, 'ou=temp,', '') FROM identities;

然后通过执行实际替换它们:

UPDATE identities SET external_uid = replace(external_uid, 'ou=temp,', '');

对于单个用户,您可以使用 gitlab-rails console

找到您的用户:

user = User.find_by_email("user@email")

获取用户 extern_uid:

user.ldap_identity.extern_uid

上面的打印结果应该类似于:=> "uid=username,ou=people,dc=example,dc=com"

根据需要更新值:

user.ldap_identity.extern_uid = "uid=newusername,ou=newpeople,dc=example,dc=com"

验证:

user.ldap_identity.extern_uid
=> "uid=newusername,ou=newpeople,dc=example,dc=com"

最后保存

user.save

我相信这个脚本 Gitlab rake task to mass update ldap dn 可能对一次更新多个用户有用。