{{< details >}}

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: 私有化部署

{{< /details >}}

如果你是一位实例管理员,你有几个选项可以管理和控制用户访问。

{{< alert type=”note” >}}

本主题专门与极狐GitLab 私有化部署中的用户管理相关。有关群组的信息,请参阅群组文档

{{< /alert >}}

用户等待批准

处于_等待批准_状态的用户需要管理员的操作。用户注册可能处于等待批准状态,因为管理员启用了以下任意选项:

当用户在启用此设置时注册账户:

  • 用户处于 等待批准 状态。
  • 用户会看到一条消息,告诉他们他们的账户正在等待管理员的批准。

等待批准的用户:

  • 在功能上与一个被阻止的用户相同。
  • 无法登录。
  • 无法访问 Git 仓库或极狐GitLab API。
  • 不会收到极狐GitLab 的任何通知。
  • 不会占用一个席位

管理员必须批准他们的注册以允许他们登录。

查看等待批准的用户注册

{{< history >}}

  • 按状态过滤用户在极狐GitLab 17.0 中引入。

{{< /history >}}

查看等待批准的用户注册:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 在搜索框中,按 状态=等待批准 过滤,并按下 Enter

批准或拒绝用户注册

{{< history >}}

  • 按状态过滤用户在极狐GitLab 17.0 中引入。

{{< /history >}}

可以在 管理员 区域批准或拒绝等待批准的用户注册。

批准或拒绝用户注册:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 在搜索框中,按 状态=等待批准 过滤,并按下 Enter
  4. 对于要批准或拒绝的用户注册,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 批准拒绝

批准用户:

  • 激活他们的账户。
  • 将用户状态更改为活动。
  • 消耗一个订阅席位

拒绝用户:

  • 阻止用户登录或访问实例信息。
  • 删除用户。

查看等待角色提升的用户

如果管理员批准角色提升已开启,则将现有用户提升为付费角色的会员请求需要管理员批准。

查看等待角色提升的用户:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 选择 角色提升

显示请求最高角色的用户列表。你可以 批准拒绝 请求。

阻止和取消阻止用户

极狐GitLab 管理员可以阻止和取消阻止用户。当你不希望用户访问实例,但希望保留他们的数据时,应阻止用户。

被阻止的用户:

  • 无法登录或访问任何仓库。
    • 任何关联数据仍保留在这些仓库中。
  • 无法使用斜杠命令
  • 不占用一个席位

阻止用户

先决条件:

  • 你必须是实例的管理员。

你可以阻止用户访问实例。

阻止用户:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 对于要阻止的用户,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 阻止

用户会收到一封电子邮件通知,告知他们的账户已被阻止。在此邮件之后,他们将不再收到通知。

要报告其他用户的滥用,请参阅报告滥用。有关管理员区域内的滥用报告信息,请参阅解决滥用报告

取消阻止用户

{{< history >}}

  • 按状态过滤用户在极狐GitLab 17.0 中引入。

{{< /history >}}

可以在 管理员 区域取消阻止用户。执行此操作:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 在搜索框中,按 状态=被阻止 过滤,并按下 Enter
  4. 对于要取消阻止的用户,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 取消阻止

用户的状态设置为活动,他们消耗一个 席位

{{< alert type=”note” >}}

用户也可以通过极狐GitLab API取消阻止。

{{< /alert >}}

对于 LDAP 用户,取消阻止选项可能不可用。要启用取消阻止选项, 首先需要删除 LDAP 身份:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 在搜索框中,按 状态=被阻止 过滤,并按下 Enter
  4. 选择一个用户。
  5. 选择 身份 标签。
  6. 找到 LDAP 提供者并选择 删除

停用和重新激活用户

极狐GitLab 管理员可以停用和重新激活用户。如果用户没有近期活动,并且你不希望他们占用实例上的席位,你应该停用他们。

被停用的用户:

  • 可以登录极狐GitLab。
    • 如果停用的用户登录,他们将自动重新激活。
  • 无法访问仓库或 API。
  • 无法使用斜杠命令。有关更多信息,请参阅斜杠命令
  • 不占用席位。有关更多信息,请参阅计费用户

当你停用用户时,他们的项目、群组和历史记录仍然存在。

停用用户

先决条件:

  • 用户在过去 90 天内没有活动。

停用用户:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 对于要停用的用户,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 停用
  4. 在对话框中,选择 停用

用户会收到一封电子邮件通知,告知他们的账户已被停用。在此邮件之后,他们将不再收到通知。 有关更多信息,请参阅用户停用邮件

要使用极狐GitLab API停用用户,请参阅停用用户。有关永久用户限制的信息,请参阅阻止和取消阻止用户

要从 JihuLab.com 订阅中移除用户,请参阅 从订阅中移除用户

自动停用不活跃用户

{{< history >}}

  • 可定制的时间段在极狐GitLab 15.4 中引入。
  • 设置为 90 天的非活动期下限在极狐GitLab 15.5 中引入。

{{< /history >}}

管理员可以启用自动停用的用户,他们要么:

  • 创建于一周前且从未登录。
  • 在指定时间段内没有活动(默认和最低为 90 天)。

执行此操作:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 常规
  3. 展开 账户和限制 部分。
  4. 不活跃用户 下,勾选 在一段不活跃期后停用不活跃用户
  5. 停用前的不活跃天数 下,输入停用前的天数。最小值为 90 天。
  6. 选择 保存更改

启用此功能时,极狐GitLab 会每天运行一个作业来停用不活跃用户。

每天最多可停用 100,000 名用户。

{{< alert type=”note” >}}

极狐GitLab 生成的机器人不包括在自动停用不活跃用户中。

{{< /alert >}}

自动删除未确认的用户

{{< details >}}

  • Tier: 专业版,旗舰版
  • Offering:私有化部署

{{< /details >}}

{{< history >}}

  • 在极狐GitLab 16.1 中引入,使用名为 delete_unconfirmed_users_setting功能标志。默认禁用。
  • 在极狐GitLab 16.2 中默认启用。

{{< /history >}}

先决条件:

  • 你必须是管理员。

你可以启用自动删除的用户,他们同时:

  • 从未确认他们的电子邮件地址。
  • 注册极狐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 设置为 softhard 时运行。

每天最多可以删除 240,000 名用户。

重新激活用户

{{< history >}}

  • 按状态过滤用户在极狐GitLab 17.0 中引入。

{{< /history >}}

你可以在 管理员 区域重新激活已停用的用户。

执行此操作:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 在搜索框中,按 状态=已停用 过滤,并按下 Enter
  4. 对于要重新激活的用户,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 激活

用户的状态设置为活动,他们消耗一个 席位

{{< alert type=”note” >}}

已停用用户也可以通过 UI 自行重新激活他们的账户。用户也可以使用极狐GitLab API重新激活。

{{< /alert >}}

禁止和取消禁止用户

{{< history >}}

  • 隐藏被禁止用户的合并请求在极狐GitLab 15.8 中引入,使用名为 hide_merge_requests_from_banned_users功能标志。默认禁用。
  • 隐藏被禁止用户的评论在极狐GitLab 15.11 中引入,使用名为 hidden_notes功能标志。默认禁用。
  • 隐藏被禁止用户的项目在极狐GitLab 16.2 中引入使用名为 hide_projects_of_banned_users功能标志。默认禁用。

{{< /history >}}

极狐GitLab 管理员可以禁止和取消禁止用户。当你想要阻止用户并隐藏他们的活动时,应禁止用户。

被禁止的用户:

  • 无法登录或访问任何仓库。
    • 任何关联的项目、议题、合并请求或评论都被隐藏。
  • 无法使用斜杠命令
  • 不占用一个席位

禁止用户

要阻止用户并隐藏他们的贡献,管理员可以禁止用户。

禁止用户:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 在要禁止的成员旁边,选择垂直省略号 ({{< icon name=”ellipsis_v” >}})。
  4. 从下拉列表中选择 禁止成员

取消禁止用户

{{< history >}}

  • 按状态过滤用户在极狐GitLab 17.0 中引入。

{{< /history >}}

取消禁止用户:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 在搜索框中,按 状态=已禁止 过滤,并按下 Enter
  4. 在要禁止的成员旁边,选择垂直省略号 ({{< icon name=”ellipsis_v” >}})。
  5. 从下拉列表中选择 取消禁止成员

用户的状态设置为活动,他们消耗一个席位

删除用户

使用 管理员 区域删除用户。

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 对于要删除的用户,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 删除用户
  4. 输入用户名。
  5. 选择 删除用户

{{< alert type=”note” >}}

你只能删除一个用户,如果有继承或直接的群组所有者。如果他们是唯一的群组所有者,则无法删除用户。

{{< /alert >}}

你还可以删除用户及其贡献,例如合并请求、议题和他们是唯一群组所有者的群组。

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 对于要删除的用户,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 删除用户及贡献
  4. 输入用户名。
  5. 选择 删除用户及贡献

{{< alert type=”note” >}}

在 15.1 之前,此外,已删除用户是唯一拥有直接成员的群组也被删除。

{{< /alert >}}

信任和取消信任用户

{{< history >}}

  • 在极狐GitLab 16.5 中引入。
  • 按状态过滤用户在极狐GitLab 17.0 中引入。

{{< /history >}}

你可以在 管理员 区域信任和取消信任用户。

默认情况下,用户不被信任,并且无法创建被视为垃圾邮件的议题、笔记和代码片段。当你信任用户时,他们可以创建议题、笔记和代码片段而不会被阻止。

先决条件:

  • 你必须是管理员。

{{< tabs >}}

{{< tab title=”信任用户” >}}

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 选择一个用户。
  4. 用户管理 下拉列表中选择 信任用户
  5. 在确认对话框中,选择 信任用户

用户被信任。

{{< /tab >}}

{{< tab title=”取消信任用户” >}}

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 在搜索框中,按 状态=已信任 过滤,并按下 Enter
  4. 选择一个用户。
  5. 用户管理 下拉列表中选择 取消信任用户
  6. 在确认对话框中,选择 取消信任用户

用户不被信任。

{{< /tab >}}

{{< /tabs >}}

故障排除

在管理用户时,你可能需要根据某些条件对他们执行批量操作。以下 Rails 控制台脚本显示了一些示例。你可以启动 Rails 控制台会话并使用类似以下的脚本:

停用没有近期活动的用户

管理员可以停用没有近期活动的用户。

{{< alert type=”warning” >}}

更改数据的命令如果没有正确运行或在正确条件下运行,会导致损坏。始终在测试环境中先运行命令,并准备好备份实例以恢复。

{{< /alert >}}

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

阻止没有近期活动的用户

管理员可以阻止没有近期活动的用户。

{{< alert type=”warning” >}}

更改数据的命令如果没有正确运行或在正确条件下运行,会导致损坏。始终在测试环境中先运行命令,并准备好备份实例以恢复。

{{< /alert >}}

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

阻止或删除没有项目或群组的用户

管理员可以阻止或删除没有项目或群组的用户。

{{< alert type=”warning” >}}

更改数据的命令如果没有正确运行或在正确条件下运行,会导致损坏。始终在测试环境中先运行命令,并准备好备份实例以恢复。

{{< /alert >}}

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