管理用户
- Tier: Free, Premium, Ultimate
- Offering: GitLab Self-Managed, GitLab Dedicated
如果您是实例管理员,您有多种选项来管理和控制用户访问权限。
本主题专门与 GitLab Self-Managed 中的用户管理相关。有关组的信息,请参阅组文档。
按类型查看用户
已建立的 GitLab 实例通常有大量人类用户和机器人用户。您可以筛选用户列表 以仅显示人类用户或机器人用户。
要按类型查看用户:
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 在搜索框中,输入筛选条件。
- 要显示人类用户,输入 Type=Humans。
- 要显示机器人用户,输入 Type=Bots。
- 按 Enter。
待批准用户
处于待批准状态的用户需要管理员采取行动。用户注册可能处于 待批准状态,因为管理员启用了以下任一选项:
当用户在启用此设置时注册账户:
- 用户被置于待批准状态。
- 用户会看到一条消息,告知他们的账户正在等待管理员批准。
待批准用户:
管理员必须批准他们的注册才能允许他们 登录。
查看待批准的用户注册
要查看待批准的用户注册:
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 在搜索框中,按 State=Pending approval 筛选,然后按 Enter。
批准或拒绝用户注册
可以在管理员区域批准或拒绝待批准的用户注册。
要批准或拒绝用户注册:
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 在搜索框中,按 State=Pending approval 筛选并按 Enter。
- 对于您要批准或拒绝的用户注册,选择垂直省略号( ),然后选择批准或拒绝。
批准用户:
- 激活他们的账户。
- 将用户状态更改为活跃。
- 占用订阅席位。
拒绝用户:
- 阻止用户登录或访问实例信息。
- 删除该用户。
查看待角色提升的用户
如果启用了角色提升需要管理员批准,将现有用户提升为计费角色的成员资格请求需要管理员批准。
要查看待角色提升的用户:
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 选择角色提升。
显示请求最高角色的用户列表。 您可以批准或拒绝这些请求。
阻止和解除阻止用户
GitLab 管理员可以阻止和解除阻止用户。 当您不希望用户访问实例但想保留其数据时,应该阻止该用户。
被阻止的用户:
阻止用户
前提条件:
- 您必须是实例的管理员。
您可以阻止用户访问实例。
要阻止用户:
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 对于您要阻止的用户,选择垂直省略号( ),然后选择阻止。
用户会收到一封电子邮件通知,告知其账户已被阻止。在此邮件之后,他们将不再收到通知。
要举报其他用户的滥用行为,请参阅举报滥用。有关管理员区域中滥用报告的更多信息,请参阅解决滥用报告。
解除阻止用户
可以在管理员区域解除阻止被阻止的用户。为此:
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 在搜索框中,按 State=Blocked 筛选并按 Enter。
- 对于您要解除阻止的用户,选择垂直省略号( ),然后选择解除阻止。
用户状态设置为活跃,他们占用一个 席位。
也可以使用 GitLab API 解除阻止用户。
对于 LDAP 用户,解除阻止选项可能不可用。要启用解除阻止选项, 首先需要删除 LDAP 身份:
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 在搜索框中,按 State=Blocked 筛选并按 Enter。
- 选择一个用户。
- 选择身份选项卡。
- 找到 LDAP 提供商并选择删除。
停用和重新激活用户
GitLab 管理员可以停用和重新激活用户。 如果用户最近没有活动,并且您不希望他们在实例上占用席位,应该停用该用户。
被停用的用户:
当您停用用户时,他们的项目、组和历史记录保持不变。
停用用户
前提条件:
- 用户在过去 90 天内没有活动。
要停用用户:
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 对于您要停用的用户,选择垂直省略号( ),然后选择停用。
- 在对话框中,选择停用。
用户会收到一封电子邮件通知,告知其账户已被停用。在此邮件之后,他们将不再收到通知。 更多信息,请参阅用户停用邮件。
要使用 GitLab API 停用用户,请参阅停用用户。有关永久用户限制的信息,请参阅阻止和解除阻止用户。
要从 GitLab.com 订阅中移除用户,请参阅 从订阅中移除用户。
自动停用不活跃用户
管理员可以启用自动停用满足以下任一条件的用户:
- 创建超过一周且从未登录。
- 在指定时间段内没有活动(默认和最小值为 90 天)。
为此:
- 在左侧边栏底部,选择管理员。
- 选择设置 > 通用。
- 展开账户和限制部分。
- 在不活跃用户下,勾选在不活动一段时间后停用不活跃用户。
- 在停用前的不活动天数下,输入停用前的天数。最小值为 90 天。
- 选择保存更改。
启用此功能后,GitLab 每天运行一次作业来停用不活跃用户。
每天最多可以停用 100,000 个用户。
默认情况下,用户账户被停用时会收到电子邮件通知。 您可以禁用用户停用邮件。
GitLab 生成的机器人被排除在不活跃用户自动停用之外。
自动删除未确认用户
- Tier: Premium, Ultimate
- Offering: GitLab Self-Managed
前提条件:
- 您必须是管理员。
您可以启用自动删除满足以下两个条件的用户:
- 从未确认其电子邮件地址。
- 在过去指定天数之前注册了 GitLab。
您可以使用设置 API 或在 Rails 控制台中配置这些设置:
Gitlab::CurrentSettings.update(delete_unconfirmed_users: true)
Gitlab::CurrentSettings.update(unconfirmed_users_delete_after_days: 365)当启用 delete_unconfirmed_users 设置时,GitLab 每小时运行一次作业来删除未确认的用户。
该作业仅删除在过去 unconfirmed_users_delete_after_days 天之前注册的用户。
此作业仅在 email_confirmation_setting 设置为 soft 或 hard 时运行。
每天最多可以删除 240,000 个用户。
重新激活用户
您可以从管理员区域重新激活被停用的用户。
为此:
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 在搜索框中,按 State=Deactivated 筛选并按 Enter。
- 对于您要重新激活的用户,选择垂直省略号( ),然后选择激活。
用户状态设置为活跃,他们占用一个 席位。
被停用的用户也可以通过 UI 重新登录自行重新激活其账户。 也可以使用 GitLab API 重新激活用户。
禁止和解除禁止用户
GitLab 管理员可以禁止和解除禁止用户。 当您想要阻止用户并从实例中隐藏其活动时,应该禁止该用户。
被禁止的用户:
禁止用户
要阻止用户并隐藏其贡献,管理员可以禁止该用户。
要禁止用户:
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 在您要禁止的成员旁边,选择垂直省略号( )。
- 从下拉列表中,选择禁止成员。
解除禁止用户
要解除禁止用户:
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 在搜索框中,按 State=Banned 筛选并按 Enter。
- 在您要解除禁止的成员旁边,选择垂直省略号( )。
- 从下拉列表中,选择解除禁止成员。
用户状态设置为活跃,他们占用一个 席位。
删除用户
使用管理员区域删除用户。
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 对于您要删除的用户,选择垂直省略号( ),然后选择删除用户。
- 输入用户名。
- 选择删除用户。
只有在组有继承或直接所有者时才能删除用户。如果用户是唯一的组所有者,则不能删除该用户。
您也可以删除用户及其贡献,例如合并请求、问题以及他们是唯一组所有者的组。
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 对于您要删除的用户,选择垂直省略号( ),然后选择删除用户和贡献。
- 输入用户名。
- 选择删除用户和贡献。
在 15.1 版本之前,被删除用户是直接成员中唯一所有者的组也会被删除。
信任和取消信任用户
您可以从管理员区域信任和取消信任用户。
默认情况下,用户不受信任,并被阻止创建被认为是垃圾邮件的问题、注释和代码片段。当您信任用户时,他们可以创建问题、注释和代码片段而不会被阻止。
前提条件:
- 您必须是管理员。
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 选择一个用户。
- 从用户管理下拉列表中,选择信任用户。
- 在确认对话框中,选择信任用户。
该用户被信任。
- 在左侧边栏底部,选择管理员。
- 选择概览 > 用户。
- 在搜索框中,按 State=Trusted 筛选并按 Enter。
- 选择一个用户。
- 从用户管理下拉列表中,选择取消信任用户。
- 在确认对话框中,选择取消信任用户。
该用户不被信任。
故障排除
- Offering: GitLab Self-Managed
在管理用户时,您可能需要根据某些条件对他们执行批量操作。以下 Rails 控制台脚本显示了一些示例。您可以启动 Rails 控制台会话并使用类似以下的脚本:
停用最近没有活动的用户
管理员可以停用最近没有活动的用户。
如果未正确运行或在适当条件下运行,更改数据的命令可能会造成损坏。始终先在测试环境中运行命令,并准备好备份实例以供恢复。
days_inactive = 90
inactive_users = User.active.where("last_activity_on <= ?", days_inactive.days.ago)
inactive_users.each do |user|
puts "user '#{user.username}': #{user.last_activity_on}"
user.deactivate!
end阻止最近没有活动的用户
管理员可以阻止最近没有活动的用户。
如果未正确运行或在适当条件下运行,更改数据的命令可能会造成损坏。始终先在测试环境中运行命令,并准备好备份实例以供恢复。
days_inactive = 90
inactive_users = User.active.where("last_activity_on <= ?", days_inactive.days.ago)
inactive_users.each do |user|
puts "user '#{user.username}': #{user.last_activity_on}"
user.block!
end阻止或删除没有项目或组的用户
管理员可以阻止或删除没有项目或组的用户。
如果未正确运行或在适当条件下运行,更改数据的命令可能会造成损坏。始终先在测试环境中运行命令,并准备好备份实例以供恢复。
users = User.where('id NOT IN (select distinct(user_id) from project_authorizations)')
# 移除了多少用户?
users.count
# 如果这个数量看起来合理:
# 您可以阻止这些用户:
users.each { |user| user.blocked? ? nil : user.block! }
# 或者您可以删除它们:
# 出于审计目的需要"当前用户"(您的用户)
current_user = User.find_by(username: '<your username>')
users.each do |user|
DeleteUserWorker.perform_async(current_user.id, user.id)
end