【问题标题】:Cannot run svn update as www-data in post-commit hook无法在提交后挂钩中将 svn update 作为 www-data 运行
【发布时间】:2015-10-03 04:54:39
【问题描述】:

我在 Debian 下使用 svn,我通常使用某个用户提交我的 web 文件,这与 www-data 不同。 我的提交过程没问题,但我想编写一个提交后挂钩,它能够执行 svn update AS www-data 到 svn 存储库的另一个工作副本,以测试代码的实时更新。

我正在尝试以这种方式编写提交后挂钩: sudo -u www-data /usr/bin/svn 更新

不幸的是,提交过程完成后,我的工作副本没有更新。但是当我尝试在 CLI 中执行之前的 sudo 语句时,该语句成功并且工作副本被正确更新。你对此有一些线索吗?

我已经以不需要输入用户密码来执行 sudo 的方式配置 /etc/sudoers。

【问题讨论】:

    标签: svn debian sudo


    【解决方案1】:
    1. Subversion 中的 Post-* 挂钩在 空环境 中执行
    2. svn up 不带参数使用 . 作为目标,我不记得当前目录(如果存在)用于钩子进程,但我想它不是你的 LIVE-WC,所以更好的方法是 /usr/bin/svn update /PATH/TO/LIVE
    3. 您可以将 stdout|stderr 重定向到文件中以便稍后查看一些详细信息(或将挂钩的输出编组回您的 SVN 客户端并实时查看挂钩操作 - 添加 1>&2 到命令的尾部)

    【讨论】:

    • 谢谢你的回复,我会努力更新钩子的。
    • 我把钩子放进去:/usr/bin/sudo -g www-data -u www-data /usr/bin/svn update FULL/PATH/TO/LIVE/WC >> /tmp /svn_log.txt 。不幸的是,这还不起作用,并且没有写入日志文件。进行提交的用户可以在没有密码的情况下执行 sudo。如果我在 Debian shell 中将其键入为“提交用户”,则前一条语句会成功。
    【解决方案2】:

    解决了。

    问题出在我在 /etc/sudoers 中配置我的用户以将 /usr/bin/svn 作为 www-data 访问的方式。我使用的语法完全错误。

    现在我有一个名为 working_copy 的组,其中包括我的提交用户和 www-data。在 /etc/sudoers 我有这一行:

    %working_copy ALL=(www-data:working_copy) NOPASSWD: /usr/bin/svn

    前提是我的提交用户可以在没有密码的情况下执行 sudo。

    感谢@LazyBadger!

    【讨论】:

      猜你喜欢
      • 2014-08-10
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 2011-07-02
      • 2016-06-02
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多