{{< details >}}
- Tier: 基础版, 专业版, 旗舰版
- Offering: 私有化部署
{{< /details >}}
如果你是一位实例管理员,你有几个选项可以管理和控制用户访问。
{{< alert type=”note” >}}
本主题专门与极狐GitLab 私有化部署中的用户管理相关。有关群组的信息,请参阅群组文档。
{{< /alert >}}
用户等待批准
处于_等待批准_状态的用户需要管理员的操作。用户注册可能处于等待批准状态,因为管理员启用了以下任意选项:
当用户在启用此设置时注册账户:
- 用户处于 等待批准 状态。
- 用户会看到一条消息,告诉他们他们的账户正在等待管理员的批准。
等待批准的用户:
管理员必须批准他们的注册以允许他们登录。
查看等待批准的用户注册
{{< history >}}
- 按状态过滤用户在极狐GitLab 17.0 中引入。
{{< /history >}}
查看等待批准的用户注册:
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 在搜索框中,按 状态=等待批准 过滤,并按下 Enter。
批准或拒绝用户注册
{{< history >}}
- 按状态过滤用户在极狐GitLab 17.0 中引入。
{{< /history >}}
可以在 管理员 区域批准或拒绝等待批准的用户注册。
批准或拒绝用户注册:
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 在搜索框中,按 状态=等待批准 过滤,并按下 Enter。
- 对于要批准或拒绝的用户注册,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 批准 或 拒绝。
批准用户:
- 激活他们的账户。
- 将用户状态更改为活动。
- 消耗一个订阅席位。
拒绝用户:
- 阻止用户登录或访问实例信息。
- 删除用户。
查看等待角色提升的用户
如果管理员批准角色提升已开启,则将现有用户提升为付费角色的会员请求需要管理员批准。
查看等待角色提升的用户:
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 选择 角色提升。
显示请求最高角色的用户列表。你可以 批准 或 拒绝 请求。
阻止和取消阻止用户
极狐GitLab 管理员可以阻止和取消阻止用户。当你不希望用户访问实例,但希望保留他们的数据时,应阻止用户。
被阻止的用户:
阻止用户
先决条件:
- 你必须是实例的管理员。
你可以阻止用户访问实例。
阻止用户:
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 对于要阻止的用户,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 阻止。
用户会收到一封电子邮件通知,告知他们的账户已被阻止。在此邮件之后,他们将不再收到通知。
要报告其他用户的滥用,请参阅报告滥用。有关管理员区域内的滥用报告信息,请参阅解决滥用报告。
取消阻止用户
{{< history >}}
- 按状态过滤用户在极狐GitLab 17.0 中引入。
{{< /history >}}
可以在 管理员 区域取消阻止用户。执行此操作:
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 在搜索框中,按 状态=被阻止 过滤,并按下 Enter。
- 对于要取消阻止的用户,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 取消阻止。
用户的状态设置为活动,他们消耗一个 席位。
{{< alert type=”note” >}}
用户也可以通过极狐GitLab API取消阻止。
{{< /alert >}}
对于 LDAP 用户,取消阻止选项可能不可用。要启用取消阻止选项, 首先需要删除 LDAP 身份:
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 在搜索框中,按 状态=被阻止 过滤,并按下 Enter。
- 选择一个用户。
- 选择 身份 标签。
- 找到 LDAP 提供者并选择 删除。
停用和重新激活用户
极狐GitLab 管理员可以停用和重新激活用户。如果用户没有近期活动,并且你不希望他们占用实例上的席位,你应该停用他们。
被停用的用户:
当你停用用户时,他们的项目、群组和历史记录仍然存在。
停用用户
先决条件:
- 用户在过去 90 天内没有活动。
停用用户:
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 对于要停用的用户,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 停用。
- 在对话框中,选择 停用。
用户会收到一封电子邮件通知,告知他们的账户已被停用。在此邮件之后,他们将不再收到通知。 有关更多信息,请参阅用户停用邮件。
要使用极狐GitLab API停用用户,请参阅停用用户。有关永久用户限制的信息,请参阅阻止和取消阻止用户。
要从 JihuLab.com 订阅中移除用户,请参阅 从订阅中移除用户。
自动停用不活跃用户
{{< history >}}
- 可定制的时间段在极狐GitLab 15.4 中引入。
- 设置为 90 天的非活动期下限在极狐GitLab 15.5 中引入。
{{< /history >}}
管理员可以启用自动停用的用户,他们要么:
- 创建于一周前且从未登录。
- 在指定时间段内没有活动(默认和最低为 90 天)。
执行此操作:
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > 常规。
- 展开 账户和限制 部分。
- 在 不活跃用户 下,勾选 在一段不活跃期后停用不活跃用户。
- 在 停用前的不活跃天数 下,输入停用前的天数。最小值为 90 天。
- 选择 保存更改。
启用此功能时,极狐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
设置为 soft
或 hard
时运行。
每天最多可以删除 240,000 名用户。
重新激活用户
{{< history >}}
- 按状态过滤用户在极狐GitLab 17.0 中引入。
{{< /history >}}
你可以在 管理员 区域重新激活已停用的用户。
执行此操作:
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 在搜索框中,按 状态=已停用 过滤,并按下 Enter。
- 对于要重新激活的用户,选择垂直省略号 ({{< 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 管理员可以禁止和取消禁止用户。当你想要阻止用户并隐藏他们的活动时,应禁止用户。
被禁止的用户:
禁止用户
要阻止用户并隐藏他们的贡献,管理员可以禁止用户。
禁止用户:
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 在要禁止的成员旁边,选择垂直省略号 ({{< icon name=”ellipsis_v” >}})。
- 从下拉列表中选择 禁止成员。
取消禁止用户
{{< history >}}
- 按状态过滤用户在极狐GitLab 17.0 中引入。
{{< /history >}}
取消禁止用户:
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 在搜索框中,按 状态=已禁止 过滤,并按下 Enter。
- 在要禁止的成员旁边,选择垂直省略号 ({{< icon name=”ellipsis_v” >}})。
- 从下拉列表中选择 取消禁止成员。
用户的状态设置为活动,他们消耗一个席位。
删除用户
使用 管理员 区域删除用户。
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 对于要删除的用户,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 删除用户。
- 输入用户名。
- 选择 删除用户。
{{< alert type=”note” >}}
你只能删除一个用户,如果有继承或直接的群组所有者。如果他们是唯一的群组所有者,则无法删除用户。
{{< /alert >}}
你还可以删除用户及其贡献,例如合并请求、议题和他们是唯一群组所有者的群组。
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 对于要删除的用户,选择垂直省略号 ({{< icon name=”ellipsis_v” >}}),然后选择 删除用户及贡献。
- 输入用户名。
- 选择 删除用户及贡献。
{{< alert type=”note” >}}
在 15.1 之前,此外,已删除用户是唯一拥有直接成员的群组也被删除。
{{< /alert >}}
信任和取消信任用户
{{< history >}}
- 在极狐GitLab 16.5 中引入。
- 按状态过滤用户在极狐GitLab 17.0 中引入。
{{< /history >}}
你可以在 管理员 区域信任和取消信任用户。
默认情况下,用户不被信任,并且无法创建被视为垃圾邮件的议题、笔记和代码片段。当你信任用户时,他们可以创建议题、笔记和代码片段而不会被阻止。
先决条件:
- 你必须是管理员。
{{< tabs >}}
{{< tab title=”信任用户” >}}
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 选择一个用户。
- 从 用户管理 下拉列表中选择 信任用户。
- 在确认对话框中,选择 信任用户。
用户被信任。
{{< /tab >}}
{{< tab title=”取消信任用户” >}}
- 在左侧边栏底部,选择 管理员。
- 选择 概览 > 用户。
- 在搜索框中,按 状态=已信任 过滤,并按下 Enter。
- 选择一个用户。
- 从 用户管理 下拉列表中选择 取消信任用户。
- 在确认对话框中,选择 取消信任用户。
用户不被信任。
{{< /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