我试图通过指挥官产品rsync并获得错误跟踪错误。
使用的命令是
rsync -arv -K -O --no-perms --delete --exclude=.svn --exclude=.snapshot sourcepath svn@ServerB:/tasks
下降文件不归svn用户所有,但它们可由svn用户的主要组写入。
如果我尝试登录到serverB,svn用户即可编辑这些文件。只有rsync失败。
我们无法更改文件的所有权,因为webapp需要位于不同的帐户中。
以下是错误消息。
rsync: mkstemp "/tasks/com/media/.QuerySM.task.Yz4zVg" failed: Permission denied (13)
rsync: mkstemp "/tasks/com/media/.QuerySP.task.eqoVbP" failed: Permission denied (13)
rsync: mkstemp "/tasks/com/media/.QueryST.task.8c1Gsn" failed: Permission denied (13)
rsync: mkstemp "/tasks/com/media/.QueryMW.task.Q18EFI" failed: Permission denied (13)
rsync: mkstemp "/tasks/com/parts/.EFParts.task.0sJVJV" failed: Permission denied (13)
rsync: mkstemp "/tasks/com/parts/.FFModel.task.y6UF1t" failed: Permission denied (13)
rsync版本
rsync version 3.0.6 protocol version 30
目录权限是775。
我现在发现的有趣的事情是它抛出了这个错误,但它实际上复制了文件并以下面的错误结束。
sync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
答案 0 :(得分:0)
如果您的'svn'用户没有对其负责的目录部分的写访问权限,请首先修复这些权限问题。我猜这个问题是缺少对/tasks/com
和/tasks/parts
的写入权限,所以在serverB上:
chown svn /tasks/com/{media,parts}
接下来,如果您对此出现(严重)安全问题感到满意,则可以通过以root身份运行rsync来绕过权限问题:
rsync [other options] --rsync-path="sudo rsync" sourcepath user@serverB:/path/
此--rsync-path
选项告诉rsync在远程服务器(源或目标)上以root身份运行rsync。要使用它,您需要在serverB上设置sudo,以便在尝试运行rsync时您的用户不会收到密码质询。
请注意,这是一种风险。 Rsync可以做很多事情,授予这样的权限几乎可以授予任何可以在服务器上获取shell的人的root权限。