我在apache2上配置了我的svn服务器,如下所示:
<Location /svn_test>
DAV svn
SVNParentPath /path/to/SvnTest
AuthType Basic
AuthName "Subversion repository"
AuthUserFile "/path/to/passwd"
AuthzSVNAccessFile "/path/to/authz"
Require valid-user
SVNAdvertiseV2Protocol Off
AuthzSVNAnonymous Off
</Location>
Run Code Online (Sandbox Code Playgroud)
和authz文件配置如下:
[groups]
g=hy
[test:/]
hy=r
*=
[test:/subdir]
hy=r
*=
[test:/subdir1]
hy=rw
*=
Run Code Online (Sandbox Code Playgroud)
问题是,我想将subdir的权限与其他目录分开控制,但如果我将subdir1的权限更改为"rw",我可以写入subdir,如果我将subdir1的权限更改为"r",则获得subdir的权限按预期成为"r".
事实上,如果我将任何目录的权限更改为"rw",那些我希望它只读的目录就变成可写的.
我在下面粘贴了一些apache日志,以防它有用.
每次我重新启动apache2时,都会抱怨python版本不匹配,但尽管如此,一切正常,我确定它是否相关:
[Fri Mar 27 15:55:44.381138 2015] [mpm_worker:notice] [pid 10693:tid 140245999884160] AH00295: caught SIGTERM, shutting down
[Fri Mar 27 15:55:45.111049 2015] [:error] [pid 13438:tid 139851301021568] python_init: Python version mismatch, expected '2.7.5+', found '2.7.4'.
[Fri Mar 27 15:55:45.111523 2015] [:error] [pid 13438:tid 139851301021568] python_init: …Run Code Online (Sandbox Code Playgroud) [groups]
developer = a,b,c
doc = r,x
[/doc]
@doc = rw
@developer = rw
[/]
@developer = rw
* =
Run Code Online (Sandbox Code Playgroud)
如果现在组doc的成员尝试检出文档,则它不起作用.我希望doc的成员能够查看sub-dir doc,禁止任何其他内容.任何想法如何实现这一目标?
亲切的问候ronny
[更新]
client:svn,版本1.5.4(r33841)服务器:svn,版本1.4.6(r28521)
通过svn + ssh访问:/ user @ host/fullpath-to-repos
[更新]
[更新]
[更新4] *这不是我自己的服务器,我无法用它做我想做的事.它是一个非常老的服务器,至少运行10年,有数百个用户.标准的东西应该工作.如果我错过了什么,请纠正我.
[更新5] 信不信由你.我使用了错误的路径,现在一切都运行良好,我很抱歉浪费你的时间.我将把他的efford给予FoxyBOA赏金.
我们的系统正在从单体架构转向微服务架构。微服务架构带来了我们需要解决的技术挑战,其中之一是 AuthN/AuthZ。
我们的方法是拥有一个身份验证服务,可以对用户进行身份验证并生成访问/刷新令牌 (JWT)。然后,访问令牌将通过微服务链在请求标头中传递,这样每个微服务只需验证令牌即可确定用户已成功通过身份验证。对于 AuthZ 部分,权限强制是在微服务本身中完成的。我的问题与 AuthZ 有关。
为了说明这个谈话,让我们举一个具体的例子,一个接待员想要注册一个新成员到他的保真计划,例如从一个 Web 应用程序。为了支持这个用例,我们假设系统有 2 个微服务,ReceptionService 和 MemberService。ReceptionService 提供了一个 REST API 来启动会员注册流程。它需要用户权限“注册”才能执行。MemberService 提供一个 REST API 来创建受 CRUD 权限保护的新成员资源。请求流将是:
为了针对这种情况设计解决方案,我的团队研究了以下假设/先决条件:
为了能够完成上述示例,需要为用户分配 2 种不同的权限,这打破了我们的一些假设/先决条件。为了克服这个问题,我的一位同事提议考虑在我们的 AuthN 系统中将微服务声明为身份/用户,以便为它们分配适当的权限。最初提供的用户令牌随后将被调用链中的参与服务令牌替换。回到这个例子,新的请求流将是:
用户先前登录的 Web 应用程序将成员注册请求发送到 ReceptionService API,在标头中包含用户访问令牌。
ReceptionService 验证用户令牌,确保用户被授予“注册”权限,执行它需要做的任何业务逻辑,最后向 MemberService API 发送一个成员创建请求,在头中包含它自己的服务令牌(因此替换原始用户令牌)。
MemberService 验证服务令牌,确保服务被授予“member.create”权限,最后创建成员。
使用此解决方案,AuthN 系统中的服务身份将通过从管理权限分配的管理员用户中过滤出来的方式进行标记。对服务身份的权限分配将是预先定义的,用户不可能对其进行配置。虽然它满足了我们的假设/先决条件,但我对这种方法几乎没有担忧:
难道我们的一些假设/先决条件是错误的?
有没有人想出一种方法允许远程用户在VisualSVN服务器中更改自己的密码?我们让它以'独立'(非ActiveDirectory)模式运行,我发现这个优秀产品的唯一缺点是用户无法设置或更改其密码.
这是我可以忍受的东西,但密码永远不会改变的安全含义是众所周知的.我确信必须能够添加功能,但我在VisualSVN使用的任何技术中都没有一点天赋 - 所以只是想知道是否有人这样做过?
我决定自己实施这项计划.密码加密是我感谢一些帮助的第一个障碍.我发现VisualSVN有一个密码文件,htpasswd其中有一个用户列表,格式如下:
JoePublic:$ APR1 $ LPQ $ kF8nZjjuFxgJBExK8ruf20
JoePublic是用户名,我假设冒号是分隔符,其余的是某种密码哈希.在这种情况下使用的实际密码是ForgetMeNot.
这似乎不是MD5或SHA哈希,但我在这方面并不是非常明智,所以很可能.鉴于上述信息,任何人都可以推断出使用的算法吗?
我接管了项目的软件负责人,现在正在管理所述项目的SVN存储库.使用authz文件控制对不同部分的访问.已经为开发人员,潜在客户,测试人员和cm控件设置了组.
我们希望限制访问的多个分支和标记中存在一个文件.为了将其锁定,除了引导组之外,我不想要读取或写入访问权限.有没有办法在没有列出每个分支/标签区域的情况下执行此操作?如果可能的话,我不希望任何人在旧版本中找到它.
我的authz文件的例子在这里:
### Groups
[groups]
developers = user1, user2
leads = fearless_leader
##############################################
### Defaults for all repos in this directory
##############################################
[/]
*=r
@developers = r
@leads = rw
##############################################
### Project repository settings
##############################################
[project_src:/]
@developers = rw
@leads = rw
##############################################
### myPrivateKey.pfx settings
##############################################
[project_src:/project/branches/release1/deploy/licenses/myPrivateKey.pfx]
@developers =
@leads = rw
Run Code Online (Sandbox Code Playgroud)
我希望我可以使用通配符来执行以下操作(但这不起作用):
##############################################
### myPrivateKey.pfx settings
##############################################
[project_src:/project/branches/*/deploy/licenses/myPrivateKey.pfx]
@developers =
@leads = rw
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我们在Windows中使用VisualSVN Server作为SVN服务器.但它在管理权利方面的能力非常有限.此外,我们无法使用svn_access_file,因为我们的用户将使用Windows身份验证方法进行身份验证.
是否有任何工具来管理使用/支持Windows身份验证的权限?
我在Windows上运行SVN服务器
我为这样的项目创建了一个repo:
E:\ SVN\WEB\MYWEB-WWW
我在"passwd"文件中添加了用户:
[users]
admin = qazwsx
developer1 = 123456
developer2 = qwerty
Run Code Online (Sandbox Code Playgroud)
然后我编辑"authz"文件:
[groups]
Admins = admin
Developers = developer1, developer2
[/]
@Admins = rw
@Developers = r
* =
Run Code Online (Sandbox Code Playgroud)
我的"svnserve.conf"文件如下所示:
anon-access = none
auth-access = write
auth-access = read
password-db = passwd
authz-db = authz
Run Code Online (Sandbox Code Playgroud)
我检查了repo,并使用admin用户登录,一切都很好,但是当我尝试使用admin用户进行提交时,它无法显示此消息"身份验证失败"
我也试过没有使用"admin"用户的组,但同样的错误
authz ×7
svn ×6
apache ×1
collabnet ×1
mod-dav-svn ×1
passwords ×1
rbac ×1
svnserve ×1
tortoisesvn ×1
windows ×1