Czy ktoś wie, jak zamontować zdalną ścieżkę SFTP przez SSHFS, aby można było pracować z dowiązaniami symbolicznymi? Kiedy to robię, wszystkie tworzone przeze mnie dowiązania symboliczne wskazują niewłaściwe pliki (nie te, z którymi się łączyłem). Wszystkie dowiązania symboliczne, którymi jestem zainteresowany, są względne (nie absolutne), więc ich pojawienie się dokładnie tak, jak na komputerze zdalnym bądź idealny.
Używając sshfs z domyślnymi opcjami montowania, nie mogę utworzyć dowiązania symbolicznego do innego pliku w bieżącym katalogu:
$ cd /mnt/path/to/sshfs/mount
$ ln -s ./test ./test2
$ ls test2
lrwxrwxrwx 1 root webusers 11 Jul 3 09:11 test2 -> /test
Co jest oczywiście niepoprawne, ponieważ cel odsyłacza znajduje się w bieżącym katalogu ( ./test
), ale tutaj widać, że sshfs tworzy odsyłacz do /test
niepoprawnego - cel odsyłacza /mnt/path/to/sshfs/mount/test
nie jest /test
.
Dodając transform_symlinks
opcję podczas montowania systemu plików sshfs, otrzymuję łącze względne z tą samą komendą, ale nadal wskazuje to niewłaściwe miejsce:
$ cd /mnt/path/to/sshfs/mount
$ ln -s ./test ./test2
$ ls test2
lrwxrwxrwx 1 root webusers 11 Jul 3 09:13 test2 -> ../../../test
Tutaj próbowałem ./test
utworzyć link do bieżącego katalogu, ale zamiast tego dostałem link do ../../../test
trzech poziomów wyżej!
sftp
Jednak połączenie z klientem SFTP z wiersza poleceń zamiast montowania za pomocą sshfs działa:
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
To mówi mi, że zdalny serwer SFTP działa dobrze (ponieważ mogę tworzyć dowiązania symboliczne za pomocą dedykowanego klienta SFTP), ale z jakiegoś powodu nie jestem w stanie utworzyć żadnych działających dowiązań symbolicznych przez sshfs.
Co dziwne, kiedy używam sshfs do montowania ścieżki na serwerze SSH zapewniającym dostęp do powłoki (w przeciwieństwie do serwera tylko SFTP), dowiązania symboliczne działają dobrze - mogę je poprawnie utworzyć. Wydaje się to problematyczne tylko w przypadku połączenia z serwerem tylko SFTP.
Co ja robię źle? Czy jest specjalna opcja, którą muszę przekazać do sshfs, kiedy łączę się z serwerem SFTP, aby dowiązania symboliczne działały?
ls -l
testowych dowiązań symbolicznych?sftp
małymi literami, mam na myśli interfejs SFTP wiersza poleceń, tj/usr/bin/sftp
. Mój ostatni przykład w poście jest, gdy tworzę dowiązanie symboliczne za pomocą tego klienta SFTP, tak jak prosisz.transform_symlinks
opcji, co robisz na sshf mount ztransform_symlinks
opcją i co robisz z klientem sftp. Dowiązania symboliczne działają normalnie na SSHFS, więc odpowiedź na pierwsze zdanie brzmi „nic” - albo napotkałeś błąd, albo nie wpisujesz właściwych poleceń, ale raportowanie jest zbyt niejasne, aby wiedzieć, co jest nie tak.Odpowiedzi:
Aby przekształcić zdalne bezwzględne (zaczynające się od
/
) dowiązania symboliczne tak, aby były względne względemsshfs
punktu montowania, użyjfollow_symlinks
opcji:Ta
transform_symlinks
opcja nic dla mnie nie robi, zobacz ten problem .źródło
Widziałem zachowanie, które opisałeś wcześniej, ale testując je teraz, mogę dobrze tworzyć dowiązania symboliczne w katalogu zamontowanym w sshfs:
I uaktualniony sshd na pilocie około 4 miesięcy temu. Stara wersja miałaby kilka lat. Być może aktualizacja rozwiązała problem. To może dać wskazówkę co do tego, czego teraz używam:
Nie zrobiłem nic, aby zmienić sshfs, z wyjątkiem tego, co Ubuntu robi automatycznie.
HTH.
źródło