
這個問題也被問到了這裡。
當我在bash 中使用sudo 遞歸複製某個目錄(dir)時,它僅複製dir 層次結構的第一級,但在不使用sudo 的情況下使用時,它會複製dir 及其所有子目錄,儘管命令列中的命令僅在sudo 的存在。
為什麼會出現這種情況?
例如:
k@l:/$ tree
.
|
|__a
| |
| |__b
| |
| |__1.htm
|
|__c
k@l:/$ sudo cp -r /a/b /c/d
k@l:/$ cd /c
k@l:/c$ ls
d
k@l:/c$ cd d
bash: cd: /c/d: Permission denied
k@l:/c$ tree
.
|__d [error opening dir]
1 directory, 0 files
答案1
當您執行此操作時sudo cp -r /a/b /c/d
,資料夾將複製到/c/d/
root 並以 root 為所有者,因此您會得到一個沒有權限由於您需要 root 權限才能開啟該目錄,請嘗試/c/d/
在 Root 終端機中開啟;或者,您需要更改檔案擁有者或使用chown
/修復權限,chmod
以便目前使用者能夠存取該資料夾。
注意:sudo cd
不起作用,因為cd
它是 shell 命令,而不是程式。
答案2
也許 /c/d 擁有不同所有者的權限 700。嘗試sudo chmod -R 755 /c/d
。
答案3
我寧願使用cp -a
而不是cp -r
.後者可能不會保留某些檔案屬性。
答案4
cp
您可以sudo
作為特定使用者運行,而不是更改命令,執行類似的操作
sudo -u thisUser cp -r /a/b /c/d
thisUser
儘管如此,這僅在擁有以下權限時才有效/a/b