通过 Apache 使用 SVN 实现基于 Unix 组的访问控制

通过 Apache 使用 SVN 实现基于 Unix 组的访问控制

我有一个使用 Apache 2 通过 HTTPS 托管的 SVN 存储库。为了统一 SVN 以及服务器上其他服务的访问控制列表,并避免处理用户和组的多个副本,我决定让用户使用 PAM 与其 unix 用户进行身份验证,因此访问控制必须基于他们所属的组

我能够根据以下 Apache 配置控制对整个 SVN 存储库的访问

DefineExternalAuth checkPassword pipe /usr/sbin/pwauth  
<Location /svn>
    DAV svn
    SVNParentPath /var/svn
    AuthType Basic
    AuthName "Repo"
    AuthBasicProvider external
    AuthExternal checkPassword
    AuthzSVNAccessFile /var/svn/authz
    Order deny,allow
    Require unix-group svngroup
</Location>

然后,为了尝试微调存储库本身的访问控制列表,我设置了以下授权

[therepo:/]
@svngroup = rw

[therepo:/restricted_files]
@svngroup = 
@vipgroup = rw

但是,这会失败,并且整个存储库将被限制给所有用户,无论他们属于哪个组。我在日志中收到以下错误

Failed to load the mod_authz_svn config: Error while parsing config file: '/var/svn/authz': Access entry refers to undefined group '@svngroup'

这告诉我它没有识别出 svngroup 是一个有效的 unix 组。有什么解决办法吗?还是我被迫拥有用户和组定义的多个副本?

相关内容