Wiem, że to było już wielokrotnie zadawane, ale uważam, że moja sytuacja jest inna.Zmiana pre-revprop SVN nie działa
Próbuję dodać haczyk przedrewolucyjnej zmiany do naszego repozytorium SVN, aby umożliwić wprowadzanie zmian w dzienniku komunikatów.
Przed Dodałem plik pre-revprop-change
ja otrzymuję ten błąd:
$ 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
Nie ma problemu, pomyślałem. Dodam:
$ 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
Tak więc, zgodnie ze wszystkim, co przeczytałem na SO, to powinno być wszystko, co potrzebne, aby to działało. Ale gdy próbuję ponownie edytować wiadomość dziennika, wciąż pojawia się błąd (inny jeden ten czas):
$ 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.
Istnieje kilka punktów do uwaga:
1) repozytorium jest hostowany na serwerze SELinux (rdzeń 10 Fedory). Być może jest coś, co muszę zrobić w odniesieniu do tych uprawnień? Oto uprawnienia se haka:
$ ls -alZ pre-revprop-change
-rwxr-xr-x apache apache unconfined_u:object_r:httpd_sys_content_rw_t:s0 pre-revprop-change
2) Repozytorium jest dostępne za pośrednictwem protokołu WebDAV (uwaga https://
w nazwie repozytorium). Czy jest coś, co muszę skonfigurować po stronie WebDAV, aby umożliwić zmiany przed zmianą?
Czy jest to bezpieczne, zależy od standardów „zabezpieczyć” :) ... ale tak, SELinux może powodować pewne subtelne problemy, które mogą być zdiagnozowane przez włączenie logowania. – 0xC0000022L
Dzięki. Tak, nie sądzę, że nasz serwer ma być hack-centralny, ale chciałem tylko upewnić się, że nie otworzyłem jeszcze ogromnej dziury w bezpieczeństwie! Czy wiesz, dlaczego używanie '' httpd_sys_script_exec_t' nie działało? Z dokumentacji wynika, że powinna ona ... –
Myślałbym również, że to powinno zadziałać. Nie mam pojęcia, dlaczego musi to być 'httpd_exec_t' zamiast' httpd_sys_script_exec_t'. Ale możliwe jest, że SELinux jest w jakiś sposób w stanie odróżnić skrypty, których wyniki trafiają do Apache od tych, które trafiają gdzie indziej.Ty używasz Apache a nie 'svnserve' (nawet jeśli Apache może go proxy), prawda? – 0xC0000022L