正しい権限を維持しながら、あるユーザーから別のユーザーにディレクトリを移動します。

正しい権限を維持しながら、あるユーザーから別のユーザーにディレクトリを移動します。

ユーザーがいるとしaliceますbob

~/Documents今、BobはAliceのディレクトリを自分のホームフォルダに移動しようとしています。

権限を更新するのに最適なワークフローは何ですか(AliceからBobへ)。

これは、(ディレクトリとファイル、再帰的)に対するAliceのすべての権限が/home/alice/Documents/Bobの(ディレクトリとファイル、再帰的)に追加され、/home/bob/Documents/Aliceの権限がここから削除されることを意味します/home/bob/Documents

答え1

ファイル所有者の変更を使用すると、chownアリスの権限がbobに転送されます。プロセスは次のとおりです。

sudo mv ~bob/Documents ~bob/Documents.orig
sudo mv ~alice/Documents/ ~bob/Documents
sudo chown -PR bob ~bob/Documents

編集する:

グループも上書きするには、次のようにします。

sudo chown -PR bob:bob ~bob/Documents

または:

sudo chown -PR bob: ~bob/Documents

Bobのデフォルトグループを使用します。

ただし、~alice/Documentsデフォルト以外のグループ権限がある場合は問題になる可能性があります。この場合、次のようなものを使用することをお勧めします。

sudo find ~bob/Documents -group alice -exec chown -h bob: {} +

ACL が使用中であることを確認することもできます。

答え2

米として:

mv ~bob/Documents ~bob/Documents.orig
cp --remove-destination --no-preserve=ownership -r ~alice/Documents/ ~bob/
sudo rm -fr ~alice/Documents/

答え3

cp -avv /home/alice/Documents/ /home/bob/newDocuments/ && 
  chown -Rvv bob:bob /home/bob/newDocuments/

答え4

BobにAliceのホームフォルダを読み取る権限がない場合は、スーパーユーザーとして作業を実行する必要があります(Bobにまだその権限がない場合)。個人的には、次の方法を使用します。

sudo rsync -a --progress /home/alice/Documents/ /home/bob/Documents/
sudo chown -Rv bob:bob_group /home/bob/Documents
sudo rm -rv /home/alice/Documents
  • rsyncは非常に汎用性があります。ファイルを選択して既存のフォルダをスキップまたは同期したり、リモートホストからコピーしたり、より多くのオプションを使用したりできます。この例では、「-a」はアーカイブを表します。これは、再帰および権限を保持するための-rや-pなど、より多くのrsyncオプションを意味します。また、-o(所有者の保持)と-g(グループの維持)も含まれており、必要に応じてこのオプションを調整できます。したがって、このコマンドが終了すると、BobのホームフォルダにAliceのドキュメントフォルダのレプリカが作成されます。

  • chown は、新しいフォルダの所有者と所有者のグループを変更します。

  • rm は、必要に応じて元のフォルダを削除します。

関連情報