特定のアクティブグループを使用してリモートからローカルにファイルをコピーする方法は?

特定のアクティブグループを使用してリモートからローカルにファイルをコピーする方法は?

これはSingularityだけでなく、Linux全体の複製に関する質問です。リモートディレクトリからローカルディレクトリに再帰的にコピーしようとしています。私の定義ファイルには次のものがあります。

scp -r $USER@$HOST_MACHINE:/a/b/c ${SINGULARITY_ROOTFS}/a/b 

問題は、アクセスabcにグループが必要であることです。グループがありますが、リモートシステムのアクティブグループにはありません。いくつかのバリエーションを試しましたが、すべて失敗しました。たとえば、/a/b/c$USER@$HOST_MACHINEsg

sg abc scp -r $USER@$HOST_MACHINE:/a/b/c ${SINGULARITY_ROOTFS}/a/b 

ローカルではなくローカルabcしかないので失敗します。$HOST_MACHINEを使用してみましsshたが、リモートディレクトリではなくローカルディレクトリにコピーする必要があります。

rsync と scp のドキュメントを見ていますが、コピーする前にリモート コンピュータのアクティブ グループにグループを追加する方法が見つかりません。基本的に私は次の方法を探しています。

scp -active_group abc -r $USER@$HOST_MACHINE:/a/b/c ${SINGULARITY_ROOTFS}/a/b 

特別なグループを使用してリモートからローカルにファイルをコピーする方法は?

既定では、次の手順を実行できます。

  • リモートコンピュータにSSHで接続します。
  • コマンドをクリーンアップまたは使用しますsg
  • リモートからローカルにコピーします。
  • リモートシステムをシャットダウンします。

ただし、スクリプトは自動的に実行する必要があるため中断されます。私もこれを行う方法があると思いますが、私はそれを逃しています。

答え1

ローカルUID / GID名がリモートUID / GID名と一致するという保証はありません。

ただし、UID / GID値はマシン間転送に重要です。保証される唯一のUID値はルート(UID = 0)です。

ワンタイムコピーの場合、リモートシステムにグループを作成するにはrootアクセス権が必要です。だからあなたはできます -注意して- 新しいグループを作成するには、rootでスクリプトを実行します。

両方のシステムでGIDが一致するグループを作成する必要があります。 [グループ名はユーザーが選択]。おそらく両方のシステムが同じUIDセットを持つ必要があります。 [ユーザー名はユーザーが選択]。

理想的には、「単純化のために」グループ名とユーザー名は両方のコンピューターで同じでなければなりません。

/etc/group'groupname':'x':GID:user1,user2,... をリストする区切りファイルです。

/etc/passwdよく知られているユーザー名、UIDへの相互参照を提供します。

しかし、これは非常に危険度の高いプロセスのようです。体験版モードで実行し、結果を再確認しても同様です。

答え2

set GID bit可能であれば、リモートシステムでこれを設定できます。

$chmod g+s abc -R /a/b/c 

(または/a必要に応じて - で始まります)。これはワンタイム構成の変更です。

したがって、リモートシステムで実行されるすべての操作はabcデフォルトグループに設定され、scpそのまま正常に動作します。

関連情報