特定のアクティブ グループを使用してリモートからローカルにファイルをコピーするにはどうすればよいですか?

特定のアクティブ グループを使用してリモートからローカルにファイルをコピーするにはどうすればよいですか?

これは 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 のルートです。

これが1回限りのコピーである場合、リモートマシンにグループを作成するにはルートアクセスが必要になります。そのため、次の操作を実行できます。細心の注意を払って- スクリプトを root として実行して、新しいグループを作成します。

両方のマシンで一致する GID を持つグループを作成する必要があります (グループ名は自由に選択できます)。おそらく、両方のマシンで同じ UID セットを持つ必要があります (ユーザー名は自由に選択できます)。

理想的には、グループ名とユーザー名は「簡潔にするため」、2 台のマシンで同じになります。

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

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

ただし、たとえこれをドライラン モードで実行し、結果を慎重にデスクチェックしたとしても、これは非常にリスクの高い手順であると思われます。

答え2

可能であれば、set GID bitリモート マシンで を設定するだけです。

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

(または、/a必要に応じて - から開始します)。これは 1 回限りの構成変更です。

したがって、リモート マシン上で実行されるものはすべてabcプライマリ グループとして設定され、そのままscp正常に動作します。

関連情報