所以我有一台 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
用户,如何处理?Dave
cp
答案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)