Comment copier des liens symboliques en tant que liens symboliques d'une machine à une autre?

13

Supposons que j'ai deux systèmes identiques. Sur le premier système, j'ai créé un lien symbolique. Sur le second, je veux copier ce lien symbolique via sftp et le lien symbolique fonctionnera de la même manière (c'est-à-dire si le lien symbolique vers /etc/, après l'avoir copié, seul le lien symbolique sera copié et uniquement le lien symbolique (pas les fichiers liés))

Avez-vous des idées sur la façon dont je peux le faire / si je peux le faire? Je veux seulement copier le lien symbolique, rien d'autre; juste la référence.

TheHidden
la source
cela ne fonctionne pas comme vous le décrivez déjà?
mikeserv
1
sftpne vous laissera pas faire ça. rsyncpeut, comme peutssh cp ...
roaima
La chose que j'essaie de réaliser est de copier la carte symbolique ... Je ne veux pas des fichiers .. Je veux juste le bout de code qui dit FOLDER> ETC ... Je veux juste créer un lien symbolique hors du serveur et déplacer au serveur son nécessaire sur ... im essayant de pirater un fichier joint
TheHidden
1
@roaima ssh cp? comme en scp? Comment?
technical_difficulty

Réponses:

12

Si vous tarez le lien symbolique, vous pouvez copier le tarball sur la machine distante comme vous le souhaitez. Lorsque vous le décompacterez, vous constaterez que vous n'avez copié que le lien symbolique et rien d'autre. Par exemple:

Pour tester cela, j'ai d'abord créé un fichier texte.

echo this is a test > file.txt

Créez ensuite un lien symbolique vers le fichier et compressez-le dans un gzip tar.

ln -s file.txt link.lnk
tar czvf tarball.tar.gz link.lnk

Transférez ce fichier sur votre autre machine, puis décompressez-le:

tar xzvf tarball.tar.gz

Vous constaterez que le lien symbolique est là, mais pas le fichier d'origine vers lequel il pointait.

Bien sûr, si vous vouliez transférer à la fois le fichier d'origine et le lien symbolique tout en préservant leur relation, vous pouvez les mettre tous les deux dans l'archive et ils seraient tous les deux transférés, et le lien symbolique devrait toujours être correctement pointé vers le fichier d'origine lorsque vous décompressez l'archive tar à l'emplacement de destination.

mkrufky
la source
c'est plutôt intéressant mais malheureusement je ne pense pas que cela m'aidera, je n'ai aucun contrôle sur l'esclave tous ces SFTP sont effectués via des API pour verrouiller les dossiers, mais j'essaie de pirater la boîte en utilisant des liens symboliques car il y a un peu de une urgence et je dois obtenir l'accès du maître qui pousse les mises à jour sélectionnées, pour des raisons de sécurité, les fichiers que j'envoie ne s'exécutent pas, mais si je peux créer un lien symbolique, je peux injecter du code dans un processus déjà existant (théoriquement) en remplaçant le fichier via le lien symbolique ... mais pour ce faire, je dois copier un lien symbolique sur 100% brut :(
TheHidden
@ user1779617 On ne sait toujours pas ce que vous entendez par "esclave" et "maître", car vous semblez utiliser les deux termes pour le serveur et le client de manière interchangeable. Si vous devez créer un lien symbolique sur le serveur , vous pouvez le faire avec SFTP, mais selon la configuration, vous ne pourrez peut-être pas regarder en dehors du domaine chrooté du démon SFTP. Veuillez vous référer à la page de manuel de sftp( linux.die.net/man/1/sftp )! Il y a la commande symlinkspécialement pour ce dont vous semblez avoir besoin.
polemon
5

On ne sait pas exactement comment vous souhaitez traiter le lien symbolique. Si je comprends bien, vous souhaitez recréer le lien symbolique sur l'autre système. Les liens symboliques dépendent du système de fichiers, le protocole utilisé pour copier les fichiers doit en être conscient. Un bon exemple est d'utiliser rsyncavec l' -aoption.

plus précisément, l' -loption, mais -ac'est probablement ce que vous voulez.

Il va recréer des liens symboliques sans tirer sur les cibles (déréférencer les liens).

polémon
la source
Je vois hm, donc il n'y aurait aucun moyen de le copier comme un fichier et de conserver le lien? Je n'ai que la possibilité de déplacer directement des fichiers sur J'espérais créer le lien symbolique sur le même système et le copier ou suis-je simplement optimiste?
TheHidden
@ user1779617 tout d'abord: quand vous dites "déplacer", voulez-vous réellement dire "déplacer" ou "copier"? Parce que "déplacer" implique la suppression du fichier d'origine (c'est aussi la raison pour laquelle j'ai édité votre question). Deuxième chose: êtes-vous limité à un protocole de transfert de fichiers spécifique (comme FTP uniquement)? Si oui, nous devrions en discuter dans le cadre de cela, et des systèmes de fichiers dont nous parlons.
polemon
SFTP uniquement, téléchargement uniquement à partir de la machine qui a besoin du lien symbolique, donc je veux dire copie du maître vers l'esclave SFTP uniquement et la connexion sftp est de l'esclave uniquement.
TheHidden
@ user1779617 Je suppose que vous voulez dire "client" (esclave) et "serveur" (maître). sftptraversera les sous-répertoires avec le -rcommutateur, mais ne suivra pas les liens symboliques, car il résume les systèmes de fichiers. sftpprend en charge la création de liens symboliques sur l'hôte. Vous devriez au moins essayer de télécharger uniquement le lien symbolique (lorsque le lien symbolique est ~/etc-> se /etc/passer de get etcla fin /) et voir ce qui se passe. Cela dépend du FS du serveur et du client. Veuillez modifier votre question d'origine en conséquence!
polemon
3

Une solution très simple (pour le répertoire personnel):

tar -c SYMLINKFILE | ssh machine 'tar -x'

ou

tar -c SYMLINKFILE | ssh machine 'tar -xC /some/other/location  '

par exemple

tar -c .bashrc | ssh another_machine 'tar -x'

pour fournir un emplacement .bashrc lié à une autre destination (par exemple, un réseau).

Paul Neuwirth
la source
3

Je sais que @polemon a déjà répondu à cette question.

Mais faire mon peu pour une solution rapide.

J'ai dû faire man rsync pour savoir quel interrupteur je veux utiliser ...

rsync -avz -e ssh /file or sym link/to/copy/ user@ip:/dest/path/

Cependant, dans votre cas, vous devez vous assurer que les liens ne sont pas rompus!

HarshaD
la source
0

Les autres réponses expliquent déjà comment transférer un lien symbolique vers une autre machine. Cependant, quelle que soit la façon dont vous transférez le lien symbolique, vous ne pourrez pas utiliser ce lien symbolique pour accéder à un fichier /etc/via FTP, SFTP, SCP, SSH ou de toute autre manière. Ces services ont tendance à être chrootés vers un répertoire donné ou autrement empêchés de fournir l'accès à des fichiers qui n'ont pas été explicitement partagés. Bien sûr, il existe toujours des moyens de contourner cela sur les anciens systèmes, mais ces vulnérabilités ont tendance à être corrigées et mises à niveau dès qu'elles sont détectées. Je suis désolé, je ne pense pas que ce que vous voulez faire sera possible.

mkrufky
la source
assez bien, au moins j'ai essayé je suppose :(
TheHidden