将目录从一个用户移动到另一个用户,并保留正确的权限

将目录从一个用户移动到另一个用户,并保留正确的权限

假设我们有 users:alicebob

现在鲍勃想将爱丽丝的~/Documents目录移到他的主文件夹中。

更新权限(从 Alice 到 Bob)的最佳工作流程是什么?

这意味着 Alice 对(目录和文件,递归)的所有权限都/home/alice/Documents/将添加到 Bob /home/bob/Documents/(目录和文件,递归),并且 Alice 的权限将从 中删除/home/bob/Documents

答案1

如果您使用 更改文件所有者chown,则 alice 的权限将转移给 bob。所以这是流程:

sudo mv ~bob/Documents ~bob/Documents.orig
sudo mv ~alice/Documents/ ~bob/Documents
sudo chown -PR bob ~bob/Documents

编辑:

如果您也想覆盖该组,请使用

sudo chown -PR bob:bob ~bob/Documents

或者:

sudo chown -PR bob: ~bob/Documents

使用 Bob 的主要组。

但是,请注意,如果~alice/Documents具有非默认组权限,这可能会出现问题。在这种情况下,最好使用类似的东西

sudo find ~bob/Documents -group alice -exec chown -h bob: {} +

如果 ACL 正在使用,您可能还需要检查它们。

答案2

正如鲍勃:

mv ~bob/Documents ~bob/Documents.orig
cp --remove-destination --no-preserve=ownership -r ~alice/Documents/ ~bob/
sudo rm -fr ~alice/Documents/

答案3

cp -avv /home/alice/Documents/ /home/bob/newDocuments/ && 
  chown -Rvv bob:bob /home/bob/newDocuments/

答案4

如果鲍勃没有权限读取爱丽丝的主文件夹,您应该以超级用户身份执行一些操作(如果鲍勃还没有该权限),我个人会使用如下内容:

sudo rsync -a --progress /home/alice/Documents/ /home/bob/Documents/
sudo chown -Rv bob:bob_group /home/bob/Documents
sudo rm -rv /home/alice/Documents
  • rsync 用途广泛,您可以选择要跳过的文件或同步现有文件夹或从远程主机复制以及更多其他选项。在这个例子中,“-a”代表存档。它意味着更多的 rsync 选项,例如 -r 和 -p 代表递归和保留权限。它还包括 -o(保留所有者)和 -g(保留组),您可以根据需要调整此选项。因此,在执行此命令结束时,您将在 Bob 的主文件夹中克隆一个 Alice 的 Documents 文件夹。

  • chown 将更改新文件夹的所有者和所有者组

  • rm,如果您愿意,将删除原始文件夹。

相关内容