【问题标题】:svn post-commit hook doesn't have permissions to create file in working copy directorysvn post-commit hook 没有权限在工作副本目录中创建文件
【发布时间】:2009-07-26 13:19:21
【问题描述】:

我被这个任务困住了。

我已经编写了 svn post-commit 钩子,它应该更新服务器上的工作副本,如果有什么改变的话。但似乎它没有对该文件夹的权限,但我已将它们设置为允许每个人在那里读写。

所以这里是测试脚本:

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

DIR="/root/root/trunk"

touch $DIR/worked

我得到了输出:

Committed revision 51.

Warning: 'post-commit' hook failed with error output:
touch: cannot touch `/root/root/trunk/worked': Permission denied

以及目标文件夹的权限:

[root@ovz6022 trunk]# ls -la
total 24
drwxrwxrwx 5 apache apache 4096 Jul 26 07:08 .
drwxrwxrwx 6 apache apache 4096 Jul 24 02:14 ..
-rwxrwxrwx 1 apache apache 1367 Jul 24 02:45 pom.xml
drwxrwxrwx 4 apache apache 4096 Jul 24 02:23 src
drwxrwxrwx 6 apache apache 4096 Jul 24 13:31 .svn
drwxrwxrwx 7 apache apache 4096 Jul 24 11:18 target

有什么想法吗?

【问题讨论】:

    标签: linux svn unix permissions post-commit


    【解决方案1】:

    我认为您的问题可能是 /root 目录权限覆盖除 root 以外的任何人,无法访问它下面的任何内容。

    在我的电脑上 /root 有权限 rwx------ root:root 我相信这意味着只有以 root 身份运行的可执行文件才能访问下面的任何内容。

    但是我的主文件夹 /home/rich 对任何人都有读取权限,所以如果你尝试过

    1. mkdir -p /home/myuser/workingdir/trunk
    2. chmod -R 777 /home/myuser/workingdir
    3. chown -R myuser:apache /home/myuser/workingdir

    然后试试我认为它会工作的钩子

    您需要问自己为什么要在 /root 中签出代码。您应该始终以具有完成工作所需的最低权限的用户身份工作。除了安装之外,您应该能够编译和编辑您的工作副本,而不需要 linux 必须提供的最高级别的权限。

    【讨论】:

    • 因为它是在那里创建的。有意义吗?
    • 谢谢,这行得通。仍然不明白为什么设置了所有权限的 root 子目录失败
    • 如果 apache 甚至没有对 /root 的读取权限,那么它怎么知道“/root/root/trunk/worked”存在,因为发现该目录存在需要读取它。
    • 'access denied' 和 'not found' 是不同的错误。如果设置了 x 位,则可以“读取”目录。
    【解决方案2】:

    尝试创建工作目录,你确定你的 WC 路径需要两个 /root/root 吗,你试图运行什么命令 - 创建一个非常小、简单的钩子(例如,只是 svn export 或 svn co)和试试看 - 也将脚本发布给我们。

    根据错误,您似乎正在尝试更新尚不存在的内容。

    【讨论】:

    • 脚本刚刚执行:touch $DIR/worked。我从同一个脚本中调用“touch ./worked”,它将在 /usr/local/svn/hooks 中创建工作文件。所以这个命令没问题。
    【解决方案3】:

    工作是一个目录吗?触摸对目录有用吗?我的 linux 能力很弱,但我认为它只是用于创建/更新文件的时间戳。如果是这样,那可能是您的问题。

    【讨论】:

    • 感谢您修复我的帖子 :) 这是一个非常敏感的“工作”文件。如果不存在,则系统创建它,否则修改时间戳
    • 这是我测试写入文件夹权限的一种方式
    猜你喜欢
    • 2011-05-27
    • 2010-12-08
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多