gpt4 book ai didi

mysql - 使用 Mysql 和 Apache 的 Subversion 访问控制(mod-dav-svn、mod-auth-sql、apache、mysql)

转载 作者:行者123 更新时间:2023-11-30 23:42:29 25 4
gpt4 key购买 nike

我正在尝试在我的 Apache 服务器上配置一个站点,以使用 mod_dav_svn 和 mysql 身份验证。

我正在使用一个包含三个表的数据库

auth_users
----------
uid username passwd
1 UserA pass
2 UserB pass

.

auth_groups
-----------
gid group
1 repo_rw
2 repo_ro

.

users_groups
uid gid
1 1
2 2

因此:-

UserA 是组 repo_rw 的成员UserB 是组 repo_ro 的成员

然后我在我的 httpd.conf 文件中使用以下内容:-

<VirtualHost *:80>
DocumentRoot /var/www
ServerName repo.srv.domain.com
ServerPath /var/www

<Location /svn>
DAV svn

SVNPath /var/svn/repo

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /dev/null
AuthBasicAuthoritative Off

AuthMySQL_Authoritative on
AuthMySQL_Empty_Password off
AuthMySQL_Encryption_Types Plaintext

AuthMySQL_Password_Table "auth_users u"
AuthMySQL_Username_Field "u.username"
AuthMySQL_Password_Field "u.passwd"

AuthMySQL_Group_Table "auth_groups g RIGHT JOIN users_groups ug ON (ug.gid=g.gid) RIGHT JOIN auth_users u ON (ug.uid=u.uid)"
AuthMySQL_Group_Field "g.group"

<Limit GET PROPFIND OPTIONS REPORT>
Require group repo_rw
</Limit>
</Location>
</VirtualHost>

在此配置中,我能够授予用户对存储库/var/svn/repo 的读写访问权限,并作为此存储库的有效用户进行身份验证。

我还可以添加多个 VirtualHost 条目,将不同位置的“repo”替换为新的存储库名称,并提供对各个存储库的受控读写访问。

我的问题是我无法添加对存储库的只读访问权限,也无法添加匿名只读访问权限。

我看过应该可以添加

<LimitExcept GET PROPFIND OPTIONS REPORT>
Require group repo_ro
</Limit>

到该部分,这应该提供对存储库的只读访问权限,但是我无法完成这项工作。拖尾 mysql 日志显示仅 repo_rw 被查询。

如果有人能提供任何建议,我将不胜感激!

最佳答案

这个方法好像不行。网上有很多资源表明它会,但似乎没有一个适用于当前版本的 apache/mysql/modules。

粒度访问控制有两个选项 1) 仅 auth 文件,跳过 mysql 身份验证并使用标准的 apache auth 方法,或 2) madify hook 脚本以定义用户具有的访问权限。

关于mysql - 使用 Mysql 和 Apache 的 Subversion 访问控制(mod-dav-svn、mod-auth-sql、apache、mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1891693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com