Subversionのアクセス制御をファイル単位で制御可能か調べていました。
ディレクトリ単位でのアクセス制御は以下のリンクが参考になります。
Per-Directory Access Control
Path-Based Authorization
と、パスベースで制御も出来るようです。
これを使えば一応ファイル単位でアクセス制御ができそうですが、ソースを見たところ、ワイルドカード等は使えないようです。
また、パスベースの制御はどうやら、推奨されていないようです。
関数svn_repos_authz_check_access
svn_error_t *
svn_repos_authz_check_access(svn_authz_t *authz, const char *repos_name, const char *path, const char *user, svn_repos_authz_access_t required_access, svn_boolean_t *access_granted, apr_pool_t *pool)
{
const char *current_path = path;
/* If PATH is NULL, do a global access lookup. */
if (!path)
{
*access_granted = authz_get_global_access(authz->cfg, repos_name,
user, required_access,
pool);
return SVN_NO_ERROR;
}
/* Determine the granted access for the requested path. */
while (!authz_get_path_access(authz->cfg, repos_name,
current_path, user,
required_access,
access_granted,
pool))
{
/* Stop if the loop hits the repository root with no
results. */
if (current_path[0] == '/' && current_path[1] == '\0')
{
/* Deny access by default. */
*access_granted = FALSE;
return SVN_NO_ERROR;
}
/* Work back to the parent path. */
svn_path_split(current_path, ¤t_path, NULL, pool);
}
/* If the caller requested recursive access, we need to walk through
the entire authz config to see whether any child paths are denied
to the requested user. */
if (*access_granted && (required_access & svn_authz_recursive))
*access_granted = authz_get_tree_access(authz->cfg, repos_name, path,
user, required_access, pool);
return SVN_NO_ERROR;
}