Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux svn post-commit钩子不';我没有在工作副本目录中创建文件的权限_Linux_Svn_Unix_Permissions_Post Commit - Fatal编程技术网

Linux svn post-commit钩子不';我没有在工作副本目录中创建文件的权限

Linux svn post-commit钩子不';我没有在工作副本目录中创建文件的权限,linux,svn,unix,permissions,post-commit,Linux,Svn,Unix,Permissions,Post Commit,我被那项任务困住了 我已经编写了svn post commit hook,它应该会在服务器上更新工作副本,若某些内容发生了更改。但似乎它对那个文件夹并没有权限,但我已经将它们设置为允许每个人在那个里写和读 下面是测试脚本: #!/bin/sh REPOS="$1" REV="$2" DIR="/root/root/trunk" touch $DIR/worked 我得到了输出: Committed revision 51. Warning: 'post-commit' hook fail

我被那项任务困住了

我已经编写了svn post commit hook,它应该会在服务器上更新工作副本,若某些内容发生了更改。但似乎它对那个文件夹并没有权限,但我已经将它们设置为允许每个人在那个里写和读

下面是测试脚本:

#!/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

有什么想法吗

我认为您的问题可能是/root目录权限会覆盖除root之外的任何人访问其下的任何内容

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

但是,我的主文件夹/home/rich对任何人都具有读取权限,因此如果您尝试

  • mkdir-p/home/myuser/workingdir/trunk
  • chmod-R 777/home/myuser/workingdir
  • chown-R myuser:apache/home/myuser/workingdir
  • 那就试试这个钩子我想它会有用的


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

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


    从错误中可以看出,您正在尝试更新尚不存在的内容。

    是否有目录?触摸是否适用于目录?我的linux功能很弱,但我认为它只是用于在文件上创建/更新时间戳。如果是这样,那可能是你的问题。

    因为它是在那里创建的。有道理吗?谢谢,行得通。仍然不明白设置了所有权限的root子目录失败的原因如果apache甚至没有对/root的读取权限,那么它怎么知道存在“/root/root/trunk/worked”,因为找到该目录需要读取它。“拒绝访问”和“未找到”是不同的错误。如果设置了x位,则可以“读取”目录。脚本仅执行:touch$DIR/worked。我从它将在/usr/local/svn/hooks中创建工作文件的相同脚本中调用“touch./worked”。所以这个命令没问题。谢谢你修复我的帖子:)这是一个非常敏感的文件。若它不存在,系统将创建它,否则将修改时间戳,这是我测试在文件夹中写入权限的一种方式