Files

關於在使用者和機器之間複製文件的真正基本問題

  • February 11, 2020

所以我有一台執行 macOS Catalina(基於 Unix 兼容的 BSD)的 MacBook。

我正在購買一台新 Mac,我想將很多照片和其他位(如 GPG 密鑰、SSH 密鑰等)複製到外部硬碟驅動器,然後當我的新機器到貨時,將文件複製到同一個機器。

目前文件如下所示:

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

如果我將其複製到外部磁碟cp -a(實際上是cp -pPR),然後復製到新的 MacBook(複製到具有相同名稱的同一個主文件夾,假設我john在我的新機器上設置了一個使用者),一切都會好起來的權限,或者從權限的角度來看,這兩個john使用者是否“不兼容”。

也許我過於復雜了,但我想確保文件具有正確的權限……

也許還有一個例子,如果我將具有權限的文件John從本地機器複製到外部 FAT32 驅動器,然後返回到Dave新機器上的使用者,如何cp處理?

你可以這樣做。兩個 John 帳戶需要相同的 UID。在舊機器中查找 UID(在 /etc/passwd 第一個欄位中,john 後面有數字),然後使用 john 和相同的 UID 設置新電腦。假設我們發現 john 在舊電腦上的 uid 為 1234。將 ID 為 1234 的使用者 john 添加到新電腦

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

您可以做的另一件事是不必匹配 UID,當文件以 root 身份到達新電腦時,執行遞歸 chown 以將文件所有者設置為新的 john。然後您不必匹配兩台電腦中的 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)

引用自:https://unix.stackexchange.com/questions/566912