gpt4 book ai didi

linux - SVN Hook pre-revprop-change 不工作

转载 作者:IT王子 更新时间:2023-10-29 00:00:35 32 4
gpt4 key购买 nike

我知道这已经被问过很多次了,但我相信我的情况有所不同。

我正在尝试向我们的 SVN 存储库添加一个 pre-revprop-change Hook ,以允许对日志消息进行更改。

在我添加 pre-revprop-change 文件之前,我遇到了这个错误:

$ 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

没问题,我想。我会添加它:

$ 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 上阅读的所有其他内容,这应该是我需要让它工作的全部内容。但是,当我再次尝试编辑日志消息时,仍然出现错误(这次不同):

$ 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.

有几点需要注意:

1) 存储库托管在 SELinux 服务器 (Fedora core 10) 上。关于这些权限,也许我需要做些什么?以下是钩子(Hook)的 SE 权限:

$ ls -alZ pre-revprop-change
-rwxr-xr-x apache apache unconfined_u:object_r:httpd_sys_content_rw_t:s0 pre-revprop-change

2) 正在通过 WebDAV 访问存储库(注意存储库名称中的 https://)。是否需要在 WebDAV 端进行设置以允许 pre-revprop-change 更改?

最佳答案

经过几个小时的尝试,我找到了答案。而且,由于它似乎不存在于 Internet 上的其他任何地方,我将在此处发布...

问题是由 SELinux 引起的(这并不奇怪)。似乎 apache (/usr/sbin/httpd) 没有必要的权限来运行具有上述 SE 权限的 hook 脚本。为了让它执行,需要更改 SELinux 权限

$ chcon -t httpd_exec_t pre-revprop-change

(我首先尝试将其更改为 httpd_sys_script_exec_t,但这不足以让脚本执行。但是使用 httpd_exec_t 类型它起作用了。)

最后一个问题:这样做安全吗?

关于linux - SVN Hook pre-revprop-change 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10736505/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com