如何在 GitLab 中默认禁用用户的创建项目权限?

How to disable Create Project permission for users by default in GitLab?

我正在使用带有 LDAP 身份验证的 Omnibus GitLab CE 系统。

由于 LDAP 身份验证,我公司的任何人都可以登录 GitLab,并创建一个与该用户关联的新 GitLab 用户帐户(据我了解)。

我想修改它,以便默认情况下这个新用户(可以根据他的 LDAP 凭据自动登录)不能创建新项目.

然后,我作为管理员,可能会处理大多数新项目的创建。

我可能会将创建项目权限授予一些特殊用户。

( 更新: 这适用于版本 <= 7.7:)

默认权限设置在gitlab.yml

在综合中,即/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

寻找

## User settings
default_projects_limit: 10
# default_can_create_group: false  # default: true

将 default_projects_limit 设置为零,将 default_can_create_group 设置为 false 可能是您想要的。 然后管理员可以更改个人用户的限制。

更新:

此设置包含在 7.8 版的管理 GUI 中(请参阅@Nick M 的回答)。至少在 Centos7 上使用 Omnibus 升级后会保留设置。

注意设置default_can_create_group还在gitlab.yml.

在较新版本的 GitLab >= v7.8 中……

这不是 config/gitlab.yml 中的设置,而是 GUI 中的管理员设置。

只需导航到 https://___[your GitLab URL]___/admin/application_settings/general#js-account-settings,然后将 默认项目限制 设置为 0.

然后您可以在 https://___[your GitLab URL]___/admin/users 访问个人用户的项目限制。


有关 v7.7 和 v7.8 之间更改的更多设置,请参阅 GitLab's update docs

git diff origin/7-7-stable:config/gitlab.yml.example origin/7-8-stable:config/gitlab.yml.example

这是我的快捷 Python 脚本,如果您 已经创建了一些用户 并且想要 更改所有用户,您可以使用它您的现有用户,使他们无法自己创建项目:

#!/usr/bin/env python

import requests
import json

gitlab_url = "https://<your_gitlab_host_and_domain>/api/v3"
headers = {'PRIVATE-TOKEN': '<private_token_of_a_user_with_admin_rights>'}

def set_user_projects_limit_to_zero (user):
    user_id = str(user['id'])
    put = requests.put(gitlab_url + "/users/" + user_id + "?projects_limit=0", headers=headers)
    if put.status_code != 200:
        print "!!! change failed with user id=%s, status code=%s" % (user_id, put.status_code)
        exit(1)
    else:
        print "user with id=%s changed!" % user_id

users_processed = 0
page_no = 1
total_pages = 1
print "processing 1st page of users..."
while page_no <= total_pages:
    users = requests.get(gitlab_url + "/users?page=" + str(page_no), headers=headers)
    total_pages = int(users.headers['X-Total-Pages'])
    for user in users.json():
        set_user_projects_limit_to_zero(user)
        users_processed = users_processed + 1
    print "processed page %s/%s..." % (page_no, total_pages)
    page_no = page_no + 1
print "no of processed users=%s" % users_processed

已测试并使用 GitLab CE 8.4.1 052b38d,YMMV。

对于所有新用户:

参考Nick Merrill回答。

对于所有现有用户:

这是更改项目限制的最佳且快速的方法:

$ gitlab-rails runner "User.where(projects_limit: 10).each { |u| u.projects_limit = 0; u.save }"