问题问题 Gerrit 2.14
我希望只有注册用户可以看到项目,而且我希望那个'所有者'项目可以设置它的可见性,共享,隐藏等没有管理员权限,或者让管理员为每个项目设置他/她的权限。例如,我希望项目A,B,C,D,E与B,C由p1拥有,C在p1,p2之间共享。因此,用户p1将看到B,C,而用户p2将看到C。
我相信有三种方法可以实现上述目标:
默认情况下"创建项目"未授予注册用户和" READ for refs / *"
在 All-Projects.git 中设置所有项目继承的权限
Create Group
Registered Users
Create Project
Registered Users
Reference: refs/*
Allow Administrators
Allow Project Owners
Deny Anonymous Users
/* IF I add ALLOW Registered Users here -> see bottom of question */
并且所有剩余的权限都保持不变,我希望能够作为注册用户:
不幸的是,注册用户可以创建项目(如果用户没有选择以前准备的父All-public-projects
- 它授予多个其他权限 - 默认All-projects
被指定为父级)但是用户,应该是项目所有者无法访问此项目。
我知道注册用户也是匿名用户组的成员,但是documentation州
除非将它们定义为BLOCK规则,否则可以覆盖继承的访问权限。 BLOCK规则用于限制项目所有者继承项目的可能性。
只允许Gerrit管理员更改项目的父级。这意味着如果要重新显示项目,则需要联系Gerrit服务器的管理员。
以及
[READ]此类别具有特殊行为,其中在全局所有项目ACL之前评估每个项目的ACL。如果每个项目的ACL已授予Read with' DENY',并且不以其他方式授予Read with' ALLOW',则忽略所有项目ACL中的Read。此行为对于在其他公共服务器上隐藏少数项目非常有用。
对于开源公共Gerrit安装,通常在All-Projects ACL中向Read Anonymous Users授予Read,允许随意浏览任何项目的更改,以及通过SSH或HTTP获取任何项目的存储库。通过向“DENY”提供“阅读”,可以暂时将新项目隐藏在公众视野之外。匿名用户并在每个项目ACL中授予对项目所有者组的读取权。
既然我不想要为每个项目设置权限,我是否认为失败的原因是
对于All-Projects根项目,任何所有者都可以访问' refs / *'被忽略,因为此权限允许用户编辑全局功能,这与能够管理Gerrit服务器相同(例如,用户可以将管理员服务器功能分配给自己的帐户)。
如果我的推理是正确的,我该如何实现目标?
此外,向注册用户授予READ refs / *可以访问项目,也可以访问所有其他项目。那么我怎样才能隐藏其他注册用户的一些项目?或者,如果不可能 - 如何配置权限以防止其他注册用户提交,甚至可能克隆其他项目?
其他问题。 如何快速查看谁被设置为项目的项目所有者?
答案 0 :(得分:0)
我很高兴看到不是唯一有这种要求的人。对我来说,如果通过Gerrit的Web UI创建项目的用户将自动成为项目所有者(仅当用户不是和管理员用户)时,一切都会正常工作。但是,如您所知,当前的Web UI既不会将此信息传递给Gerrit后端,也不允许在创建新项目时分配项目所有者。我看到以下选项:
对我来说,只有选项1或4是可行的,因为另一个意味着太多的开销。我正在考虑编写这样一个插件,我会把它变成开源...大约2个月前,我希望有一些我可以使用的东西,但我找不到任何东西。
关于第二个问题:我通常使用Web UI来转到项目的访问标签,然后检查谁拥有权限“所有者”分支引用/ * 。