關於在使用者和機器之間複製文件的真正基本問題
所以我有一台執行 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)