gerrit集成gitweb所需的权限设置

在Gerrit中集成Gitweb后,仅root用户能正常访问Gitweb页面,其他用户遇到404错误。问题源于从Gerrit 2.5开始,GitWeb要求用户具有【refs/*】的所有read权限。解决方法是在项目ACL中为用户组添加对refs/meta/config的read权限。然而,这可能导致拥有该权限的用户能在Project的Access页面修改权限,并通过Gitweb查看project.config和groups文件,可能引发权限管理问题。为提交权限修改的patch,需要对refs/meta/config赋予和refs/heads/*相同的权限。Gerrit的文档不足,使得解决问题过程较为复杂。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在以前发的博文里提到如何在gerrit里集成gitweb
集成之后发现只有我的root用户(gerrit里注册的第一个用户)才能够点gitweb链接正常打开gitweb页面。其他的普通用户点gitweb链接显示404错误。
经过网上调查发现2.5开始使用gitweb需要有【refs/*】下所有的read权限。
参考链接1 里有下面一段话
『This is due to a change on the level of security applied by GitServlet: now the GitWeb makes sure that the user has full access to ALL branches (refs/meta/config included) otherwise it returns a 404.
The problem is: repo owner and gerrit administrator has implicit access to refs/meta/config ... and thus an extra bit is need on the if() checking permissions.』
这是2.5-rc0发布时的一个bug。后来改掉了。修改内容看参考链接2
但是既然改了为什么我这还不行呢? 读了gerrit 2.5的release note才知道原因。Release note里有下面一句话。
『Make read access to refs/meta/config by default exclusive to project owners 』
这个设定做在了All-Projects的ACL设定里,所以缺省被所有的Project继承。
于是在单独项目的ACL里为项目的用户组增加了对refs/meta/config的read权限。果然用户可以正常显示gitweb页面了。
但是,这个设定带来了一个不好的影响。原来gerrit是用git做自身的ACL管理的,因此所有对refs/meta/config有read权限的用户都可以在Project的Access页面里修改权限,修改后虽然不能直接submit,但是可以作为patch提交review。而且通过gitweb就能够看到project.config和groups文件的全部内容,知道当前项目是如何设置权限的。这样是否合适就仁者见仁智者见智了。另外,对于用户提交的关于权限修改的patch如果想commit的话需要对refs/meta/config做和refs/heads/*一样的权限设定,也就说需要Label Code-Review,Label Verified,Submit三个权限才有可能commit patch。
最后感叹一下,Gerrit的文档真的是很少啊。调查一个问题的原因居然要看到那么多东西。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值