在gerrit中权限控制是基于群组的. 每个用户有一个或者多个群组, 访问权限被赋予这些群组.访问权限不能赋予个人用户

Gerrit系统自带下面的群组

  • Anonymous Users

  • Change Owner

  • Project Owners

  • Registered Users

Anonymous Users

所有用户都是匿名用户成员, 所有用户都能继承Anonymous Users所有访问权限. 

权限的解读参考:http://www.cnblogs.com/lexuele/p/5133601.html


Gerrit上的所有项目默认是继承All-Projects这个项目的权限,这个项目是Gerrit安装后系统自动创建的。

先看下这个项目的权限

wKiom1cx-VWjhIG7AAG-ea-ZxDw284.png

wKiom1cx-VfT6PgCAAJjCu968pA558.png

wKioL1cx-jiQQbpIAAIwWHiB0bI276.png

所有新建的项目都继承了这些权限,如果需要单独更改某一个Project的权限,则可以从Projects==>List==>Project Name(选择你要更改权限的项目)==>Access==>Edit 来更改权限。

注意:千万不要点击All-Projects按钮来更改权限,应该这个更改是对所有Project生效的,相当于全局的权限设置。我们可以通过Edit来增加一些权限,覆盖掉All-Projects的权限。即当单个项目的权限与全局的权限冲突时,以项目自身设置的权限为准。


权限创建示例:

1、将某个Project只对group1组内的用户可见,当其他组的用户登录gerrit时,在Projects list中是看不到该项目的。

wKiom1cyAiyA6k_OAACJG7loM_k214.png



2、将某个项目的owner改为某个组的所有用户,此权限设定慎用

wKioL1cyBE6ye8ReAABhyPM4V0k771.png


3、伪造提交者

正常情况下,开发者的用户配置,包括邮箱配置必须和Gerrit Web UI上配置的一直,才能执行git push命令,来提交change。

例如,开发者全局配置为:

$ git config --list
user.name=user1
user.email=123456789@qq.com

对应的Gerrit账户上的注册邮箱也必须为123456789@qq.com

如果修改了开发者邮箱配置,那么执行git push命令时会报以下错误:

remote: ERROR:  does not match your user account.

我们可以通过Forge Committer Identity 权限来伪造提交者。配置如下

wKioL1c9YRizSilAAACbOuGVgj4740.png

关于Gerrit权限可以参考这个文档:http://www.jianshu.com/p/d95faa9f8b05