sshfs unterbricht Symlinks vom SFTP-Server


16

Weiß jemand, wie man einen Remote-SFTP-Pfad über SSHFS bereitstellt, damit Sie mit Symlinks arbeiten können? Wenn ich das mache, verweisen alle von mir erstellten Symlinks auf die falschen Dateien (nicht die, mit denen ich verlinkt bin.) Alle Symlinks, die mich interessieren, sind relativ (nicht absolut), sodass sie genauso angezeigt werden, wie sie es auf dem Remotecomputer tun würden ideal sein.

Wenn ich sshfs mit den Standard-Mount-Optionen verwende, kann ich keinen Symlink zu einer anderen Datei im aktuellen Verzeichnis erstellen:

$ cd /mnt/path/to/sshfs/mount
$ ln -s ./test ./test2
$ ls test2
lrwxrwxrwx 1 root webusers   11 Jul  3 09:11 test2 -> /test

Was offensichtlich falsch ist, da sich das Linkziel im aktuellen Verzeichnis befindet ( ./test), aber hier können Sie sehen, dass sshfs einen /testfalschen Link erstellt - das Linkziel /mnt/path/to/sshfs/mount/testnicht /test.

Durch Hinzufügen der transform_symlinksOption beim Mounten des sshfs-Dateisystems erhalte ich stattdessen einen relativen Link mit demselben Befehl, der jedoch immer noch auf die falsche Stelle verweist:

$ cd /mnt/path/to/sshfs/mount
$ ln -s ./test ./test2
$ ls test2
lrwxrwxrwx 1 root webusers   11 Jul  3 09:13 test2 -> ../../../test

Hier habe ich versucht, auf ./testdas aktuelle Verzeichnis zu verlinken , aber stattdessen habe ich einen Link zu ../../../testdrei Ebenen höher!

Das Verbinden mit dem Kommandozeilen-SFTP-Client sftpanstatt mit sshfs zu mounten funktioniert jedoch:

sftp> open ...
sftp> symlink test test2
...
$ cd /mnt/path/to/sshfs/mount
$ ls test2
lrwxrwxrwx 1 root webusers   11 Jul  3 09:13 test2 -> test

Dies sagt mir, dass der Remote-SFTP-Server einwandfrei funktioniert (da ich Symlinks mit einem dedizierten SFTP-Client erstellen kann), aber aus irgendeinem Grund kann ich über sshfs keine funktionierenden Symlinks erstellen.

Seltsamerweise funktionieren die Symlinks gut, wenn ich sshfs verwende, um einen Pfad auf einem SSH-Server bereitzustellen, der Shell-Zugriff bietet (im Gegensatz zu einem SFTP-Server) - ich kann sie korrekt erstellen. Es scheint nur problematisch zu sein, wenn eine Verbindung zu einem Nur-SFTP-Server besteht.

Was mache ich falsch? Gibt es eine spezielle Option, die ich an sshfs übergeben muss, wenn ich eine Verbindung zu einem SFTP-Server herstelle, damit die Symlinks funktionieren?


Ich verstehe Ihre Frage nicht: sshfs verwendet immer SFTP. Was meinst du mit "via ssh statt sftp"? Anscheinend haben Sie Probleme mit einem bestimmten SFTP-Server. Was wird bei Verwendung eines SFTP-Clients beim Ausführen ls -lIhrer Testsymlinks angezeigt?
Gilles 'SO- hör auf, böse zu sein'

Sorry, wenn ich sftpin Kleinbuchstaben sage, meine ich die Befehlszeilen-SFTP-Schnittstelle, dh /usr/bin/sftp. Mein letztes Beispiel in diesem Beitrag ist, wenn ich den Symlink mit diesem SFTP-Client erstelle, wie Sie es wünschen.
Malvineous

Ich habe immer noch keine Ahnung, was du meinst. Bearbeiten Sie Ihren Beitrag, um zu klären, was Sie lokal tun, was Sie über ein SSHFS-Mount ohne die transform_symlinksOption tun, was Sie über ein SSH- Mount mit der transform_symlinksOption tun und was Sie mit einem SFTP-Client tun. Symlinks funktionieren normalerweise über SSHFS, daher lautet die Antwort auf Ihren ersten Satz "nichts" - entweder ist ein Fehler aufgetreten oder Sie geben nicht die richtigen Befehle ein, aber Ihre Berichterstellung ist zu unklar, um zu wissen, was falsch ist.
Gilles 'SO- hör auf böse zu sein'

Ich habe versucht zu klären, wonach ich bitte, so gut ich kann, aber ich bin mir nicht ganz sicher, wonach Sie suchen, da mir die Frage klar erscheint. Wenn es immer noch unklar ist, sagen Sie mir bitte genau, welche Teile keinen Sinn ergeben und warum, und ich werde versuchen, mich auf diese Teile zu konzentrieren. Hoffentlich sind Ihre Fragen jetzt beantwortet.
Malvineous

Antworten:


13

Verwenden Sie die folgende Option , um entfernte absolute (beginnend mit /) Symlinks so zu transformieren , dass sie relativ zum sshfsEinhängepunkt sind follow_symlinks:

sshfs -o follow_symlinks ...

Die transform_symlinksOption tut nichts für mich, siehe dieses Problem .


richtige Antwort in meinem Fall. Ich habe zuvor keine verknüpften Dateien / Ordner gesehen, und jetzt sehe ich sie und kann ihr folgen.
Abmeldung

1

Ich habe das von Ihnen beschriebene Verhalten bereits gesehen, aber wenn ich es jetzt teste, kann ich problemlos Symlinks in einem von sshfs gemounteten Verzeichnis erstellen:

$ touch T
$ ln -s T L
$ ls -l T L
lrwxrwxrwx 1 user user 1 Apr  9 16:10 L -> T
-rw-rw-r-- 1 user user 0 Apr  9 16:10 T

$ echo hello >> L
$ cat T
hello
$ pwd
/home/user/oak/tmp
$ mount | grep oak
user@oak: on /home/user/oak type fuse.sshfs (rw,nosuid,nodev,user=user)

Ich habe sshd auf der Fernbedienung vor ungefähr 4 Monaten aktualisiert . Die alte Version wäre mehrere Jahre alt gewesen. Vielleicht hat das Upgrade das Problem behoben. Dies könnte einen Hinweis darauf geben, was ich gerade verwende:

$ ssh oak 'ident $(which sshd)' | grep ssh
/usr/sbin/sshd:
 $NetBSD: sshd.c,v 1.13.4.1 2015/04/30 06:07:31 riz Exp $
 $NetBSD: sshpty.c,v 1.2.26.1 2015/04/30 06:07:31 riz Exp $
 $NetBSD: sshlogin.c,v 1.4.22.1 2015/04/30 06:07:31 riz Exp $

Ich habe nichts getan, um sshfs zu ändern, außer was Ubuntu automatisch macht.
HTH.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.