
Es handelt sich um eine Frage zum Kopieren in Linux im Allgemeinen und nicht nur in Singularity. Ich versuche, rekursiv vom Remote-Verzeichnis in das lokale Verzeichnis zu kopieren. In meiner Definitionsdatei habe ich:
scp -r $USER@$HOST_MACHINE:/a/b/c ${SINGULARITY_ROOTFS}/a/b
Das Problem ist, dass ich eine Gruppe brauche, um auf abc
zugreifen zu können . Ich habe diese Gruppe, aber nicht in meinen aktiven Gruppen auf dem Remote-Computer. Ich habe einige Varianten von ausprobiert, aber sie sind alle fehlgeschlagen. Beispiel:/a/b/c
$USER@$HOST_MACHINE
sg
sg abc scp -r $USER@$HOST_MACHINE:/a/b/c ${SINGULARITY_ROOTFS}/a/b
Schlägt fehl, weil ich es abc
nur in $HOST_MACHINE
und nicht lokal habe. Ich habe auch versucht, es zu verwenden, ssh
aber ich muss es in ein lokales Verzeichnis kopieren und nicht in ein Remote-Verzeichnis.
Ich habe in den Dokumenten zu rsync und scp nachgesehen, konnte aber keine Möglichkeit finden, vor dem Kopieren eine Gruppe zu meinen aktiven Gruppen auf Remote-Rechnern hinzuzufügen. Im Grunde suche ich nach einer Möglichkeit, Folgendes zu tun:
scp -active_group abc -r $USER@$HOST_MACHINE:/a/b/c ${SINGULARITY_ROOTFS}/a/b
Wie kann ich mit einer speziellen Gruppe Dateien von einem Remote-Computer in einen lokalen Ordner kopieren?
Grundsätzlich könnte ich folgende Schritte durchführen:
- Führen Sie eine SSH-Verbindung zum Remotecomputer durch.
- Waschen oder den
sg
Befehl verwenden. - Von der Remote-Instanz zur lokalen Datei kopieren.
- Remote-Computer beenden.
Aber das Skript sollte automatisch sein, also bricht es es ab. Ich vermute auch, dass es eine Möglichkeit gibt, dies zu tun, und ich übersehe sie nur.
Antwort1
Es kann nicht garantiert werden, dass Ihre lokalen UID/GID-Namen mit den Remote-UID/GID-Namen übereinstimmen.
Aber es sind die UID/GID-Werte, die bei Übertragungen zwischen Maschinen wichtig sind. Der einzige garantierte UID-Wert ist root – mit einer UID=0.
Wenn es sich um eine einmalige Kopie handelt, benötigen Sie Root-Zugriff, um eine Gruppe auf dem Remote-Computer zu erstellen. Sie könnten also -mit großer Sorgfalt- Führen Sie Ihr Skript als Root aus, nur um eine neue Gruppe zu erstellen.
Sie müssen eine Gruppe mit einer GID erstellen, die auf beiden Maschinen übereinstimmt [Gruppenname ist Ihre Wahl]; vermutlich sollte diese auf beiden Maschinen den gleichen Satz UIDs haben – [Benutzernamen sind Ihre Wahl].
Im Idealfall wären „der Einfachheit halber“ die Gruppennamen und Benutzernamen auf beiden Maschinen identisch.
/etc/group
ist eine durch Trennzeichen getrennte Datei mit der Auflistung von „Gruppenname“: „x“:GID:Benutzer1, Benutzer2, …
/etc/passwd
gibt einen bekannten Querverweis von Benutzername,UID
Allerdings scheint dies ein sehr risikoreiches Verfahren zu sein – selbst wenn Sie es im Probelauf ausgeführt und die Ergebnisse sorgfältig am Schreibtisch überprüft haben.
Antwort2
Wenn möglich, können Sie einfach Folgendes set GID bit
auf dem Remotecomputer festlegen:
$chmod g+s abc -R /a/b/c
(oder beginnen Sie bei /a
– je nach Bedarf). Dies ist eine einmalige Konfigurationsänderung.
Alles, was auf dem Remotecomputer getan wird, wird abc
als primäre Gruppe festgelegt und scp
funktioniert problemlos.