sudoを使用してディレクトリをコピーすると、その階層の最初のレベルだけがコピーされます。


1

この質問もされました ここに

bashでsudoを使ってディレクトリ(dir)を再帰的にコピーすると、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

リスティングにエラーメッセージがあります。あなたはおそらくそれらの意味を最初に学びたいと思うでしょう。
n.m.

回答:


2

するとき sudo cp -r /a/b /c/d フォルダはにコピーされます /c/d/ 所有者としてのrootでrootとして、したがってあなたは アクセス拒否 ディレクトリを開くにはroot権限が必要なので、開いてみてください /c/d/ ルートターミナルで。あるいは、ファイルの所有者を変更するか、またはを使用して許可を修正する必要があります。 chown / chmod そのため、現在のユーザーはフォルダにアクセスできるようになります。

注意: sudo cd それ以来動作しません cd プログラムではなく、シェルコマンドです。


2

多分/ c / dさんには別の所有者の許可が700でした。やってみる sudo chmod -R 755 /c/d


2
+1:それとも試すことができます sudo chown -R me /c/d '。
Jonathan Leffler

うん、それもうまくいくでしょう。
jman

0

もっと使いたい cp -a の代わりに cp -r。後者はいくつかのファイル属性を保存しないかもしれません。


0

を変更する代わりに cp コマンド、あなたは実行することができます sudo 特定のユーザーとして

sudo -u thisUser cp -r /a/b /c/d

それにもかかわらず、これは次の場合にのみ機能します。 thisUser の権限があります /a/b

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.