在服务器或集合级别禁用 TFS 签入权限

Posted

技术标签:

【中文标题】在服务器或集合级别禁用 TFS 签入权限【英文标题】:Disable TFS check-in permissions at the server or collection level 【发布时间】:2019-10-24 19:22:17 【问题描述】:

我想拒绝/限制用户在 TFS 中签入/签出文件。我们正在使用 TFVC 和 2017.1 TFS。

我知道我可以在项目级别执行此操作,但由于我们有 200 个项目,这会很麻烦。这在根或集合级别是否可行。我只希望集合管理员有权访问,但没有其他人。

【问题讨论】:

嗨,Sam,这张票有任何更新,你发现你的问题了吗? jessehouwing 是对的,您是否有机会实施他建议的最新评论?你能解决吗? 不,我正在编写脚本并随时发布进度。感谢您的跟进并感谢@jessehouwing 回复替代方案。 嗨,山姆,感谢您的热情回复。找出问题后,请随时在此处分享,这也将对社区中的其他人有所帮助。 【参考方案1】:

导航到集合中任何团队项目的安全页面,例如:

https://account.visualstudio.com/project-name/_settings/repositories?itemPath=%24%2Fproject-name

然后将itemPath 更改为$/。这应该会打开整个集合的安全页面:

https://account.visualstudio.com/project-name/_settings/repositories?itemPath=%24%2F

来自 Azure DevOps 的屏幕截图,我手头不再有 TFS 2017。

或者使用团队资源管理器的源代码管理资源管理器进入 Visual Studio 中的安全对话框。

在此处设置适当的拒绝,并且应该级联。

【讨论】:

我也想过这个。但这里的挑战是群体。我们使用基于角色的 AD 组来确保 TFS 安全。所以对于 200 个项目,我们有 800 个 AD 组(每个项目 200*4 个角色)。使用这种方法,我需要拒绝 800 个组。 如果命名合理,编写脚本很容易。在这种情况下,Tfssecurity.exe 是您的朋友。您可以使用与此类似的方法,但您需要对正确的名称空间和令牌结构进行一些研究。方法是一样的。 jessehouwing.net/… 或者使用自动包含 200 个相似组的动态广告组,然后拒绝这些。我们使用这些来根据广告属性创建组并动态选择成员。我想这也应该适用于组群......或者脚本广告。 不。我尝试了你的第二种方法,但它对我不起作用。我拒绝了 root $/ 用户的所有权限,但是该用户在单个项目上设置了 ALLOW 权限。我验证用户仍然可以签入和签出文件。 那么您可能需要编写脚本以在每个项目级别重新启用继承。很抱歉……

以上是关于在服务器或集合级别禁用 TFS 签入权限的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps Server:Git权限设置

TFS 2012 配置访问被拒绝:[用户名] 需要以下权限才能执行此操作:查看集合级别信息

vs2010 tfs个别文件为啥没有签入签出了

TFS服务器配置

在 TFS 中为某些用户注册自定义签入策略

TFS命令tf:undo(强制签入别人签出的文件)(转)