如何在apache2配置中动态设置组访问权限

时间:2011-01-10 11:23:49

标签: authentication apache2 trac

我有一个包含以下指令的apache配置。它适用于具有多个项目的trac环境,每个项目包含允许访问的不同用户集。

我想使用通配符只允许已定义的组访问此环境,如何才能这样做?目前我的配置允许所有用户:

<LocationMatch "/private/[^/]+/login">
        AuthType Basic
        AuthName "Trac"
        AuthUserFile /home/auth/private.access.user
        Require valid-user
</LocationMatch>

但我希望它能读到:

<LocationMatch "/private/[^/]+/login">
        AuthType Basic
        AuthName "Trac"
        AuthUserFile /home/auth/private.access.user
        Require Group [^/]
</LocationMatch>

这可能吗?

2 个答案:

答案 0 :(得分:0)

我会做的是以下......

<LocationMatch "/private/[^/]+/login">
        AuthType Basic
        AuthName "Trac"
        AuthUserFile /home/auth/private.access.user
        AuthGroupFile /home/auth/private.access.groups
        Require Group group1 group2
</LocationMatch>

组文件/home/auth/private.access.groups只是一个简单的文本(ascii)文件,例如它可能如下所示:

group1: john barry
group2: frank jeremy

我不确定它是否可以在Require Group指令中使用正则表达式(我怀疑它们是),我总是命名组认证文件中列出的组的特定名称。

答案 1 :(得分:0)

使用Trac,我发现允许访问Apache配置中的每个人更容易,然后使用Trac的帐户管理器插件(http://trac-hacks.org/wiki/AccountManagerPlugin)来控制对每个项目的Trac实例的访问。撤消来自“匿名”用户的所有权限,来自group2的用户将无法对group1的Trac实例执行任何操作,除非看到错误页面并被提示登录。