Linux 對家目錄權限嚴格,普通用戶無法直接讀寫他人家目錄。本文介紹兩種無需 root 權限即可完成跨用戶複製的方法:利用 /tmp 公共目錄中轉,或使用 scp 透過 SSH 本地傳輸。
foo 擁有 /home/foo/file.txt。bar 的 /home/bar/。# 以 foo 身份
cp file.txt /tmp/
# 切換至 bar
su - bar
cp /tmp/file.txt ~/
# 退回 foo 清理
exit
rm /tmp/file.txt
為何用 cp 而非 mv? 複製到 /tmp 的檔案擁有者仍為 foo,bar 僅有讀取權限,無寫入/移動權限。即使修改權限讓 bar 可寫,移動過去擁有者仍為 foo,只有 root 能 chown。缺點是需複製兩次,耗時較久。
以 bar 身份拉取:
scp foo@localhost:/home/foo/file.txt ./
# 輸入 foo 密碼,檔案直接傳至 bar 家目錄,擁有者自動變為 bar
以 foo 身份推送:
scp file.txt bar@localhost:/home/bar/
# 輸入 bar 密碼
優點:單次傳輸、目標檔案擁有者自動為接收用戶、加密傳輸安全。前提:雙方需知道對方密碼,且 SSH 服務正常運行。

tar cf - file.txt | ssh bar@localhost "tar xf - -C ~/"(串流傳輸,無臨時檔)。sudo 權限:sudo -u bar cp /home/foo/file.txt /home/bar/ && sudo chown bar:bar /home/bar/file.txt。