Hello,
I have an observation on the mod_authz_svn Module in combination with an
authorized user.
I have a configuration with an Apache 2.4, mod_lua and Subversion modules
1.9.xx. This is my repo conf:
<Location /svn/repo>
DAV svn
SVNPath "/.../repo"
LuaHookCheckUserID "/etc/apache2/lua/hook.lua" authcheck_hook
AuthzSVNAccessFile "/.../repo.access"
Require valid-user
</Location>
As you can see, the authorization is done by the Lua-script. As I understand
it, this can be used a full replacement to, for example Basic Authentication.
My simple hook.lua accepts every user and sets the user-field on the
request-object (=the user is accepted):
require 'apache2'
function authcheck_hook(r)
r.user = "myuser"
r:debug("Accepted user " .. r.user)
return apache2.OK
end
So In every case, the user gets authenticated which I can see in the log.
Next, I call the webserver with a simple curl-Command: "curl
http://localhost:4402/svn/repo"
Case 1:
- The accessfile configures my user to have access on repo-root:
[repo:/]
myuser = rw
- The curl-Command shows me a repo-root but none of the files below.
- The error_log shows, that my user got authorized on root:
[Fri Jan 19 21:20:58.735108 2018] [authz_svn:info] [pid 3465:tid
140589093869312] [client ::1:59812] Access granted: 'myuser' GET (null)
- But I'm not allowed to see a file below:
[Fri Jan 19 21:20:58.735706 2018] [authz_svn:info] [pid 3465:tid
140589093869312] [client ::1:59812] Access denied: - GET repo:/muhmiau.txt
Case 2:
- The accessfile configures everybody to have access on repo-root:
[repo:/]
* = rw
- The curl-Command shows me a repo-root and the files below.
- The error-log tells, that my user is allowed to see the root and the file:
[Fri Jan 19 21:26:03.803831 2018] [authz_svn:info] [pid 3425:tid
140589085476608] [client ::1:59814] Access granted: 'myuser' GET (null)
[Fri Jan 19 21:26:03.806508 2018] [authz_svn:info] [pid 3425:tid
140589085476608] [client ::1:59814] Access granted: 'myuser' GET
repo:/muhmiau.txt
Case 3:
- Now I have an accessfile, which allows everyone to rw, but not my user:
[repo:/]
* = rw
myuser =
- Curl shows me the full repo content
- The error_log tells, that my user is allowed to see the root and the file:
[Fri Jan 19 21:29:57.383442 2018] [authz_svn:info] [pid 3426:tid
140589085476608] [client ::1:59816] Access granted: 'myuser' GET (null)
[Fri Jan 19 21:29:57.385402 2018] [authz_svn:info] [pid 3426:tid
140589085476608] [client ::1:59816] Access granted: - GET repo:/muhmiau.txt
That raised several questions:
1. Why is my user not "known" for a special file in Case 1, when it generally
works? (Case 2)
2. Why does the restriction of a right (Case 3) does not lead to a restricted
view? As you can see in the log, the user is not known (like Case 1).
For me, especially Case 3 looks suspicious.
Any help would be appreciated.
Thanks and Kind Regards,
Stefan