关于在用户和机器之间复制文件的非常基本的问题

关于在用户和机器之间复制文件的非常基本的问题

所以我有一台 MacBook,运行 macOS Catalina(基于 Unix 兼容 BSD)。

我正在购买一台新 Mac,我想将大量照片和其他内容(例如 GPG 密钥、SSH 密钥等)复制到外部硬盘驱动器,然后当我的新机器到达时,将文件复制到同一硬盘驱动器上机器。

目前文件如下所示:

.rw-r--r-- 1 312 john staff 13 Dec 2019 gpg.keys

如果我将其复制到外部磁盘cp -a(实际上是cp -pPR),然后复制到新的MacBook(复制到具有相同名称的同一主文件夹,假设我在新机器上设置了用户john),那么权限一切正常,或者john从权限的角度来看这两个用户是否“不兼容”。

也许我把这件事过于复杂化了,但我想确保文件具有正确的权限......

也许进一步说明,如果我将具有权限的文件从本地计算机复制到外部 FAT32 驱动器,然后返回给新计算机上的John用户,如何处理?Davecp

答案1

你可以这么做。两个 John 帐户需要相同的 UID。在旧计算机中查找 UID(在 /etc/passwd 第一个字段中,john 后面有数字),然后使用 john 和相同的 UID 设置新计算机。假设我们发现 john 在旧计算机上的 uid 为 1234。将 ID 为 1234 的用户 john 添加到新计算机

useradd -u 1234 -c "John The Ripper" john

您可以做的另一件事是,当文件以 root 身份到达新计算机时,您可以执行递归 chown 将文件所有者设置为新的 john,这样您就不必匹配 UID。这样您就不必匹配两台计算机中的 UID。

chown -R john:john /path/to/drive/

任何一种方法都会起作用并给出相同的结果。

关于你的第二个问题。当您复制 (cp) 文件时,所有者将更改为复制该文件的用户。如果移动 (mv) 文件,属性和所有者保持不变。因此,为了回答您的问题,如果您以 dave 身份复制该文件,它将拥有所有者 dave。如果您移动该文件,它将保留原始所有者 john。

如果您以 root 身份复制文件,那么 root 将拥有它们。

请注意,UID 控制文件所有权。测试你能做什么

useradd -u 2345 jimi 
su - jimi from root 
touch /tmp/jimifile 
ls -lah /tmp/jimi* (jimi owns jimifile now)
userdel -r jimi 
ls -lah /tmp/jimi* (will show un-owned jimifile with user id 2345) 
useradd -u 2345 janis 
ls -lah /tmp/jimi* (now will show janis owns jimifile)

相关内容