Linux 文件/目录所有权:我可以 cp 文件,但不能通过 unison 备份

Linux 文件/目录所有权:我可以 cp 文件,但不能通过 unison 备份

我对 Linux 文件/目录所有权有疑问,它允许我使用 复制文件cp,但不能通过实用程序 备份unison文件。问题似乎出在 unison 的临时文件的所有权变更上。我想知道如何纠正这个问题。

该文件的目录结构如下:

/.../A/B/C/D.txt

所有权和权限如下:

A is root:root, 500 (rx)
B is me:root, 500 (rx)
C is me:root, 700 (rwx)
D.txt is me:root, 600 (rw)

如果我cp D.txt在我的桌面上复制一个从 B 开始的拥有相同所有权和权限的文件结构,则一切正常。另一方面,如果我使用 unison 复制目录结构,则会在更改“.unison.D.txt.nnnnn”文件的所有权时失败。有解决办法吗?

UNISON 2.48.3 于 2018 年 11 月 20 日 02:53:54.51 开始传播变更

[BGN] 将 B/C/D.txt 从 /.../A 复制到 /home/me/Desktop/ [即 /home/me/Desktop/B/C/D.txt]

失败:设置文件所有权时出错:
操作不允许 [chown(/home/me/Desktop/B/C/.unison.testing.txt.a14bcb4fe76cb8c262af6a50e2043619.unison.tmp)]

失败 [B/C/D.txt]:设置文件所有权时出错:
操作不允许 [chown(/home/me/Desktop/B/C/.unison.testing.txt.a14bcb4fe76cb8c262af6a50e2043619.unison.tmp)]

UNISON 2.48.3 于 2018 年 11 月 20 日 02:53:54.51 完成变更传播

背景:我正在尝试使用 unison 和 incron 备份 Keybase 的在线文件系统,它位于/run/user/1000/keybase/kbfs。在该目录下,我发现一组文件夹全部归我所有:root。所有目录都是模式 500 (rx),保存我自己的目录 (/.../kbfs/private/me),模式为 700 (rwx)。所有文件都是模式 600 (rw)。我希望在我的桌面上镜像它。

答案1

问题似乎不是出在 unison 身上,而是出在副本的一侧是 keybase 运行的文件系统。Keybase 允许我写入其目录并报告 me:root 所有权,但当 unison 尝试在我的桌面上创建 me:root 文件时,它失败了。我理解文件系统几乎可以报告任何他们想要的权限信息,并且可以按照他们想要的任何方式执行读取/写入/执行操作。

unison 的解决方案是使用group = false来阻止它尝试同步根所有权。在这种情况下,它还需要perms = 0o1700避免尝试设置根或其他人的权限位。

当从 cli 运行 unison 时,这种方法有效,但与 incrond 一起使用时仍会出现问题 - 但这是另一个问题......

相关内容