【问题标题】:SVN post commit hook won't execute telnetSVN post commit hook 不会执行 telnet
【发布时间】:2013-05-13 10:06:06
【问题描述】:

我有一个 Apache 通过 DAV 提供的 SVN 存储库。

我创建了一个提交后挂钩,我想打开一个到服务器的 telnet 会话。

当我从命令提示符执行命令时,它工作正常。

但是当我用钩子执行它时,它失败了,说它没有执行权限。

我的脚本很简单:

 #!/bin/sh
 REPOS="$1"
 REV="$2"

 echo -e symeon\\nfrobnitz\\n.say \#foo easitag $REV $(svnlook author $REPOS -r $REV)    $(svnlook changed $REPOS -r $REV): $(svnlook log $REPOS -r $REV) | telnet server 8080

挂钩在 RedHat Enterprise Linux 机器上运行。我假设它以 apache 用户身份执行。

有人知道为什么吗?

【问题讨论】:

  • 在 cli 中,sudo su www-data 再试一次
  • 那个用户不存在...
  • 找到 apache 用户的 hanme。可能是apache,httpd,看你的进程列表/你的apache配置找到。

标签: svn telnet post-commit-hook


【解决方案1】:

两点:

  1. 运行 Apache 的用户帐户(假设您使用 Apache 为存储库提供服务)必须有权执行您的脚本尝试执行的所有操作。
  2. 挂钩脚本在空环境中执行 - 没有设置环境变量,甚至没有设置 $PATH。因此,找不到您尝试执行的那些二进制文件(svnlooktelnet)。您需要指定它们的完整路径,或在脚本中设置$PATH

【讨论】:

  • 1.是的,这是正确的。但是什么权利?这真的是更多的问题。 2. 是的,我把脚本改成了完整路径,还是没有骰子。
【解决方案2】:

我在一个相当不起眼的论坛上发现了这个:

默认情况下不允许 apache 用户建立 http 连接。要启用此功能,请从 root 执行以下操作:

setsebool -P httpd_can_network_connect 1

发现于 http://forums.phpfreaks.com/topic/64806-solved-could-not-connect-to-server-permission-denied/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-07
    • 2012-07-27
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    相关资源
    最近更新 更多