Grabung Zugriffsteuerung mit Mysql und Apache (mod-DAV-Svn, mod-auth-SQL, Apache, MySQL)
-
19-09-2019 - |
Frage
Ich versuche, eine Seite auf meinem Apache-Server mit MySQL-Authentifizierung verwenden mod_dav_svn zu konfigurieren.
Ich verwende eine Datenbank mit drei Tabellen wie folgt
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
Deshalb: -
UserA ist ein Mitglied der Gruppe repo_rw BenutzerB ist ein Mitglied der Gruppe repo_ro
Ich benutze dann die folgende in meiner 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>
In dieser Konfiguration ich in der Lage bin Benutzer rw Zugriff auf das Repository / var / svn / repo zu geben, als gültige Benutzer dieses Repository authentifiziert.
Ich bin auch mehrere Virtualhost Einträge hinzufügen kann „Repo“ in den verschiedenen Standorten zu einem neuen reposiotry Namen ersetzen und einen kontrollierten rw Zugriff auf einzelne Repositories.
Mein Problem ist, dass ich nicht in der Lage bin nur Zugriff auf Repositories hinzufügen Lesen und anonym auch nur Lesezugriff.
Ich habe sollte es möglich sein hinzuzufügen
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require group repo_ro
</Limit>
auf den Abschnitt, und dies sollte nur Zugriff auf das Repository zur Verfügung stellen lesen, ich habe aber nicht in der Lage gewesen, diese Arbeit zu machen. tail-ing MySQL-Log zeigt nur die repo_rw abgefragt wird.
Wenn jemand einen Rat geben kann, würde ich sehr dankbar!
Lösung
Es scheint diese Methode einfach nicht funktionieren. Es gibt mahy Ressourcen onb das Netz darauf hindeutet, es wird, aber keiner scheint mit den aktuellen Versionen von Apache / MySQL / modules zu arbeiten.
Es gibt zwei Optionen für die granulare Zugriffskontrolle 1) Auth-Dateien nur, mysql-Authentifizierung überspringen und halten mit Standard-Apache-auth methods, oder 2) madify Hook-Scripts zu definieren, welche Zugriffs Benutzer haben.