【问题标题】:Read only access to svn repository via ssh (svn+ssh)通过 ssh (svn+ssh) 只读访问 svn 存储库
【发布时间】:2019-12-29 03:24:32
【问题描述】:

我们希望将颠覆存储库设为只读。对 subversion 实例中的单个存储库执行此操作对于 ssh 不起作用。 ssh 访问似乎绕过了 svn 的控制。

遵循此处的建议: Read-only access of Subversion repository

写入权限应该受到限制,但这并没有发生。 尽管将存储库更改为只读,但该存储库仍可写访问。

【问题讨论】:

标签: linux svn ssh permissions


【解决方案1】:

限制访问的最简单方法(假设没有需要写入权限的用户)是删除 SVN 存储库中文件上的w(写入)位。

chmod -R gou-w /path/to/svn-repo

这将阻止文件系统/操作系统级别的写入。

如果某些用户仍需要访问权限,您可以为每个用户类创建单独的 svn+ssh 端点,这些端点映射到主机服务器上的不同用户,使用组写入与其他写入位来确定哪个组有权影响写入:

mkgrp writers-grp
chgrp -R writers-grp /path/to/svn-repo
chmod ug+w /path/to/svn-repo
chmod o-w /path/to/svn-repo

然后我会在服务器上针对写入用户注册 SSH 密钥,并阻止密码访问。

可以允许“只读”用户使用众所周知的密码。

这不像配置 SVN 服务器配置那样“聪明”或“优雅”,但只要用户保持他们的 SSH 密钥保密,它就可以很好地工作。

【讨论】:

  • 我做了一些更简单的事情,而且效果很好。在我们的案例中,不需要优雅的解决方案。我们正在停用 svn 实例。但是,有些实例有几百个存储库,我们需要阻止写访问。一旦我们迁移到 Git,一些开发人员似乎忘记了停止使用 subversion。通常需要一种更优雅的方法,你提到这一点很好。感谢您的回答!
【解决方案2】:

使用start-commit 挂钩限制提交访问。

说明

start-commit 钩子在提交事务之前运行 创建的。它通常用于决定用户是否有提交 特权。

如果 start-commit 钩子程序返回非零退出值,则 提交在提交事务创建之前就停止了,并且 打印到 stderr 的任何内容都会编组回客户端。

输入参数

传递给钩子程序的命令行参数依次是:

  1. 存储库路径
  2. 尝试提交的经过身份验证的用户名
  3. 客户端传递给服务器的以冒号分隔的功能列表,包括深度、mergeinfo 和 log-revprops(新 颠覆 1.5)。

常见用途

  • 访问控制(例如,出于某种原因暂时锁定提交)。
  • 一种仅允许来自具有特定权限的客户端访问的方法 能力。

【讨论】:

  • 这是一个优雅的解决方案。响应将基于钩子进行定制。这绝对更适合长期解决方案。在我们的案例中,subversion 将在短时间内完全停用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
相关资源
最近更新 更多