如何在发行版之间转移文件的所有权?

如何在发行版之间转移文件的所有权?

目前,我将 Ubuntu 安装在一个分区上,并将我的个人文件(图片、文档等)安装在第二个分区上。我想在包含 Ubuntu 的分区中安装 KDE Neon,同时保留个人文件分区。

我还没有安装 Neon,但我已经使用了可启动 USB。

我遇到的问题是,我不知道如何将文件的所有权从一个安装上的帐户转移到另一个安装上的帐户。如果我在同一操作系统上的帐户之间传输文件,我只需使用 chown 即可完成,但我不知道如何跨操作系统执行此操作。

我意识到我可以设置权限,以便其他人具有读取权限,然后使用 Neon 帐户复制我的所有文件,但由于我拥有的文件数量,这将需要几个小时。我宁愿使用 chown 或类似的东西。

答案1

我不知道如何将文件的所有权从一个安装上的帐户转移到另一个安装上的帐户。

文件不属于用户名,而是属于 UID。用户名和UID之间的映射通常在用户数据库文件中管理/etc/passwd。这是一个示例片段

root:x:0:0:root:/root:/bin/bash
tom:x:1000:1000:Tom Pearce,,,:/home/tom:/bin/bash
bill:x:1001:1001:Bill Brewer,,,:/home/bill:/bin/bash
jan:x:1002:1002:Jan Stewer,,,:/home/jan:/bin/bash
peter:x:1003:1003:Peter Gurney,,,:/home/peter:/bin/bash

当您运行时,ls -l每个文件的 UID/GID 所有者都会使用此数据库转换为相应的名称。您可以使用 来查看实际名称ls -ln

因此,要“转移”文件的所有权,您有几种选择

  1. 确保名称到 UID/GID 的映射在两个系统上相同。在本例中不需要chown/,chgrp因为文件所有权映射到两个系统上的同一组名称。

  2. 找出原始UID/GID和目标UID/GID,并一一更改每个受影响的文件。这并不像听起来那么简单,因为您必须小心,不要将文件更改为 UID/GID 对,该文件随后将再次更改。通常,您会将每个文件chown设置chgrp为在任一系统上均未使用的临时 UID 范围,然后将它们从该集更改为实际集。

    # Example to change file UIDs from 1000 to 1010
    find / -mount -user 1000 -exec chown 61010 {} +
    
    # Later, when you've moved all the file ownwerships out of the 1xxx range
    find / -mount -user 61010 -exec chown 1010 {} +
    

相关内容