SVN hook pre-revprop-change nicht funktioniert
Ich weiß, das wurde schon oft gefragt, aber ich glaube, dass meine situation anders ist.
Ich versuche, fügen Sie ein pre-revprop-change-hook zu unserem SVN-repository zu aktivieren, die änderungen vorgenommen werden, um log-Nachrichten.
Bevor ich Hinzugefügt die pre-revprop-change
Datei wurde ich immer diese Fehlermeldung:
$ svn propset -r 557 --revprop svn:log "New message!" https://myserver/repos/myrepo
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one property change failed; repository is unchanged
svn: Error setting property 'log':
Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook
Kein problem, dachte ich. Ich werde es hinzufügen:
$ cd /var/www/svn/myrepo/hooks
$ # Create the simplest hook possible
$ echo '#!/bin/sh' > pre-revprop-change
$ echo 'exit 0' >> pre-revprop-change
$ # Check that it looks correct
$ cat pre-revprop-change
#!/bin/sh
exit 0
$ # Looks good, now make it executable
$ chmod a+x pre-revprop-change
$ # Check the permissions
$ ls -al pre-revprop-change
-rwxr-xr-x 1 apache apache 17 2012-05-24 12:05 pre-revprop-change
$ # Run it, to make sure it runs, and check the error code
$ ./pre-revprop-change
$ echo $?
0
So, nach allem, was ich gelesen habe SO, das sollte alles, was ich brauche, damit es funktioniert. Aber, wenn ich versuche zu Bearbeiten, die log-Meldung wieder, ich bekomme immer noch eine Fehlermeldung (eine andere diesmal):
$ svn propset -r 557 --revprop svn:log "New message!" https://myserver/repos/myrepo
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one property change failed; repository is unchanged
svn: Error setting property 'log':
Revprop change blocked by pre-revprop-change hook (exit code 255) with no output.
Gibt es ein paar Punkte zu beachten:
1) Das repository gehostet wird auf einem SELinux-server (Fedora core 10). Vielleicht gibt es etwas, dass ich tun im Hinblick auf die Berechtigungen? Hier sind die SE Berechtigungen der Haken:
$ ls -alZ pre-revprop-change
-rwxr-xr-x apache apache unconfined_u:object_r:httpd_sys_content_rw_t:s0 pre-revprop-change
2) auf Das repository Zugriff über WebDAV (Hinweis: die https://
im repository-name). Gibt es etwas, das ich brauche, um das setup auf die WebDAV Seite zu ermöglichen, pre-revprop-change verpasst?
InformationsquelleAutor Lee Netherton | 2012-05-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem mehrere Stunden zu versuchen, habe ich die Antwort gefunden. Und, wie es scheint nicht zu existieren, anderswo im internet, werde ich es hier posten...
Das problem verursacht wurde durch SELinux (keine große überraschung). Es scheint, dass der apache (
/usr/sbin/httpd
) nicht über die erforderlichen Berechtigungen zum ausführen der hook-Skript mit den genannten SE-Berechtigungen. Um es auszuführen, die SELinux-Berechtigungen, die erforderlich sind, um sich mit(Zuerst habe ich versucht es zu verändern
httpd_sys_script_exec_t
war, aber das war nicht genug, um das Skript auszuführen. Aber mit derhttpd_exec_t
Typ hat es geklappt.)Letzte Frage: ist das eine sichere Sache zu tun?
Danke. Ja, ich glaube nicht, dass unsere server zu hacken-zentrale, aber ich wollte nur sicherstellen, dass ich noch nicht gerade erst eröffnet, eine massive Sicherheitslücke! Wissen Sie, warum mit der
httpd_sys_script_exec_t
hat nicht funktioniert? Es scheint aus den Unterlagen, die es haben sollte...Ich hätte gedacht, dass das auch hätte funktionieren sollen. Keine Ahnung, warum es
httpd_exec_t
statthttpd_sys_script_exec_t
. Aber es ist möglich, dass SELinux ist irgendwie in der Lage zu unterscheiden, Skripts, deren Ausgang geht auf den Apache-Server von denen, wo es anderswohin geht. Sie wo die mittels Apache und nichtsvnserve
(obwohl Apache proxy kann es), richtig?Yep, definitiv durch apache. Der svn WebDAV-url konfiguriert ist, in die
/etc/httpd/conf.d/
- Verzeichnis. Und ich war der Zugriff über diehttps://
url.InformationsquelleAutor Lee Netherton
Hatte eine ähnliche Sache auf CentOS. Das problem war wahrscheinlich irgendwo Zwischenspeichern, wenn ich die Datei bearbeitet und dann ändern Sie es wieder zu arbeiten begonnen.
Also, wenn jemand ein ähnliches problem, versuchen Sie einfach:
InformationsquelleAutor Nux