0

问题在于通过 Apache Web 服务器提供的 Subversion 存储库的安全设置。

我使用基于路径的身份验证来保护一些公司信息免受外部合作者的侵害。我需要一些东西来测试授权给了我想要的人,即我需要检查我没有在配置中犯错误。

有一个简单的测试方法:使用用户的用户名和密码模拟对资源的访问。但是这种方法需要知道用户的密码。

例如,下面的 BASH 脚本在指定路径 ($url) 上测试每个用户的授权。注意:users-files.txt 包含用户的用户名和密码,格式为“username:password”。

url="http://my.company.com/svn/repo1/private-data/"
while read line; do
  username="${line%:*}"
  password="${line#*:}"
  if wget --quiet --user="$username" --password="$password" -- "$url"; then
    echo -e "$username:\tgranted"
  else
    echo -e "$username:\tdenied"
  fi
done < users-list.txt

有一种方法可以在不知道用户密码而只知道用户名的情况下进行此检查?我是运行 HTTPD 和 Subversion 的机器的根。HTTPD 是否提供了一些审计工具?

身份验证配置如下:

<Location /svn/>
   DAV svn
   SVNParentPath /var/svn/
   AuthType Basic
   AuthBasicProvider ldap
   AuthName "Subversion repository"
   AuthLDAPURL ldap://127.0.0.1:389/ou=People,o=mycompany.com?uid?sub?(objectClass=*)
   Require valid-user
   AuthzSVNAccessFile /var/svn/svn-access-file.conf
   Options Indexes
   SVNListParentPath on
</Location>
4

1 回答 1

2

如果通过“检查”,您的意思是查看定义是什么 - 那么您可以检查服务器上的安全配置文件(特别是文档中称为“规则文件”的内容)以找出允许的人访问什么路径。

如果“检查”是指测试,例如通过 HTTP 连接来验证用户在实践中实际允许的规则——那么不,你不能。在您的示例中,您尝试以给定的用户(名称)实际连接到 Subversion。如果您能够在没有密码的情况下执行此操作,那将是对整个安全系统的嘲弄。

于 2009-01-14T11:37:35.467 回答