linux - svn 提交后 Hook 没有在工作副本目录中创建文件的权限

标签 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 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 对任何人都有读取权限,所以如果您尝试过

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

然后尝试钩子(Hook),我认为它会起作用

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

关于linux - svn 提交后 Hook 没有在工作副本目录中创建文件的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1184571/

相关文章:

linux - 如何在Linux下运行windows下写的R代码?

linux - 用于阻止和解除阻止端口的脚本

svn - Subversion 是否丢失了我在分支中的一些修订?

java - 用于客户分发的SVN结构

unix - 在 POSIX sh 中循环环境变量

linux - 使用 bash 脚本重命名 xml 文件扩展名

java - 在 linux 后台运行一个进程

svn - 在 SVN 中重新集成带有外部的分支失败

c++ - 当链接计数为2时,有没有办法完全删除一个inode?

linux - 根据特定的搜索模式拆分文件,并使用 AWK 命令在拆分文件中包含特定行数