sshfs phá vỡ liên kết tượng trưng từ máy chủ SFTP


16

Có ai biết cách gắn một đường dẫn SFTP từ xa thông qua SSHFS để bạn có thể làm việc với các liên kết tượng trưng không? Khi tôi thực hiện việc này, tất cả các liên kết tôi tạo đều trỏ đến các tệp sai (không phải liên kết tôi liên kết.) Tất cả các liên kết tôi quan tâm là tương đối (không tuyệt đối) để chúng xuất hiện chính xác như trên máy từ xa là lý tưởng

Sử dụng sshfs với các tùy chọn gắn kết mặc định, tôi không thể tạo liên kết tượng trưng đến tệp khác trong thư mục hiện tại:

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

Điều này rõ ràng là không chính xác, vì mục tiêu liên kết nằm trong thư mục hiện tại ( ./test), nhưng ở đây bạn có thể thấy rằng sshfs tạo một liên kết /testkhông chính xác - mục tiêu liên kết thì /mnt/path/to/sshfs/mount/testkhông /test.

Bằng cách thêm transform_symlinkstùy chọn khi tôi gắn hệ thống tập tin sshfs, tôi nhận được một liên kết tương đối thay vì cùng một lệnh, nhưng nó vẫn trỏ đến vị trí sai:

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

Ở đây tôi đã cố gắng liên kết đến ./testtrong thư mục hiện tại, nhưng thay vào đó tôi có một liên kết đến ../../../testba cấp độ trở lên!

Tuy nhiên, kết nối với máy khách SFTP dòng lệnh sftpthay vì gắn với sshfs không hoạt động:

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

Vì vậy, điều này cho tôi biết máy chủ SFTP từ xa đang hoạt động tốt (vì tôi có thể tạo liên kết tượng trưng với máy khách SFTP chuyên dụng), nhưng vì một số lý do tôi không thể tạo bất kỳ liên kết hoạt động nào mặc dù sshfs.

Thật kỳ lạ, khi tôi sử dụng sshfs để gắn đường dẫn trên máy chủ SSH cung cấp quyền truy cập shell (trái ngược với máy chủ chỉ có SFTP), các liên kết tượng trưng hoạt động tốt - tôi có thể tạo chúng một cách chính xác. Nó chỉ có vẻ có vấn đề khi được kết nối với một máy chủ chỉ SFTP.

Tôi đang làm gì sai? Có một tùy chọn đặc biệt nào tôi phải chuyển đến sshfs khi tôi kết nối với máy chủ SFTP để làm cho các liên kết tượng trưng hoạt động không?


Tôi không hiểu câu hỏi của bạn: sshfs luôn sử dụng SFTP. Bạn có ý nghĩa gì với những gì qua ssh thay vì sftp? Có vẻ như bạn đang gặp sự cố với một máy chủ SFTP cụ thể. Nếu bạn sử dụng máy khách SFTP, nó sẽ hiển thị gì khi bạn chạy ls -ltrên các liên kết tượng trưng thử nghiệm của mình?
Gilles 'SO- đừng trở nên xấu xa'

Xin lỗi, khi tôi nói sftpbằng chữ thường, tôi có nghĩa là giao diện SFTP dòng lệnh, tức là /usr/bin/sftp. Ví dụ cuối cùng của tôi trong bài viết là khi tôi tạo liên kết tượng trưng bằng ứng dụng khách SFTP này, giống như bạn yêu cầu.
Malvineous

Tôi vẫn không biết ý của bạn là gì. Vui lòng chỉnh sửa bài đăng của bạn để làm rõ những gì bạn đang làm tại địa phương, những gì bạn đang làm trên một sshfs mount mà không có transform_symlinkstùy chọn, những gì bạn đang làm trên một ssh mount với transform_symlinkstùy chọn và những gì bạn đang làm với một máy khách sftp. Các liên kết tượng trưng hoạt động bình thường qua SSHFS, vì vậy câu trả lời cho câu đầu tiên của bạn là không có gì khác - bạn đã gặp phải lỗi hoặc bạn không gõ đúng lệnh, nhưng báo cáo của bạn không rõ ràng để biết điều gì sai.
Gilles 'SO- đừng trở nên xấu xa'

Tôi đã cố gắng làm rõ những gì tôi đang yêu cầu tốt nhất có thể, nhưng tôi không chắc chắn những gì bạn đang theo sau vì câu hỏi dường như rõ ràng với tôi. Nếu vẫn chưa rõ ràng, xin vui lòng cho tôi biết cụ thể những phần nào không có ý nghĩa và tại sao, và tôi sẽ cố gắng tập trung vào các bit đó. Hy vọng rằng câu hỏi của bạn đã được trả lời.
Malvineous

Câu trả lời:


13

Để chuyển đổi các /liên kết tượng trưng tuyệt đối (bắt đầu bằng ) tương đối với sshfsđiểm gắn kết, hãy sử dụng follow_symlinkstùy chọn:

sshfs -o follow_symlinks ...

Các transform_symlinkstùy chọn không làm gì cho tôi, xem vấn đề này .


câu trả lời đúng trong trường hợp của tôi Tôi đã không thấy các tập tin / thư mục được liên kết trước đó và bây giờ tôi thấy nó và tôi có thể theo dõi nó.
đăng xuất

1

Tôi đã thấy hành vi mà bạn mô tả trước đây, nhưng kiểm tra nó bây giờ tôi có thể tạo các liên kết tượng trưng tốt trên thư mục gắn trên sshfs:

$ 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)

Tôi đã nâng cấp sshd trên remote khoảng 4 tháng trước. Phiên bản cũ sẽ có vài năm tuổi. Có thể việc nâng cấp đã khắc phục sự cố. Điều này có thể cung cấp một số manh mối về những gì tôi đang sử dụng:

$ 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 $

Tôi chưa làm gì để thay đổi sshfs, ngoại trừ những gì Ubuntu tự động làm.
HTH.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.