sshfs перериває символьні посилання з сервера SFTP


16

Хтось знає, як змонтувати віддалений шлях SFTP через SSHFS, щоб можна було працювати з посиланнями? Коли я це роблю, усі створені нами символьні посилання вказують на неправильні файли (не ті, з якими я пов’язаний.) Усі символьні посилання, які мене цікавлять, є відносними (не абсолютними), тому їх поява точно так само, як і на віддаленій машині бути ідеальним.

Використовуючи sshfs з типовими параметрами кріплення, я не можу створити посилання на інший файл у поточному каталозі:

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

Що, очевидно, невірно, оскільки ціль посилання знаходиться в поточному каталозі ( ./test), але тут ви бачите, що sshfs створює посилання, на /testяке невірно - ціль посилання /mnt/path/to/sshfs/mount/testне є /test.

Додавши transform_symlinksпараметр, коли я монтую файлову систему sshfs, я отримую замість цього відносне посилання з тією ж командою, але вона все одно вказує на неправильне місце:

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

Тут я спробував посилання на ./testпоточний каталог, але замість цього я отримав посилання на ../../../testтри рівні вгору!

sftpОднак підключення до клієнтського рядка SFTP-клієнта замість монтажу з sshfs працює:

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

Отже, це говорить про те, що віддалений сервер SFTP працює нормально (оскільки я можу створювати посилання з виділеним клієнтом SFTP), але я чомусь не в змозі створити жодних робочих символьних посилань, хоч sshfs.

Як не дивно, коли я використовую sshfs для монтажу контуру на SSH-сервер, що забезпечує доступ до оболонки (на відміну від сервера, що використовується лише для SFTP), символьні посилання працюють добре - я можу їх створити правильно. Це видається проблематичним лише під час підключення до сервера лише для SFTP.

Що я роблю неправильно? Чи є спеціальна опція, яку мені потрібно передати до sshfs, коли я підключаюсь до SFTP-сервера, щоб змусити роботу символьних посилань?


Я не розумію вашого запитання: sshfs завжди використовує SFTP. Що ви маєте на увазі під "ssh замість sftp"? Схоже, у вас виникають проблеми з одним конкретним сервером SFTP. Якщо ви використовуєте клієнт SFTP, що він відображається при запуску ls -lтестових посилань?
Жил "ТАК - перестань бути злим"

Вибачте, коли я кажу sftpв малі регістри, я маю на увазі інтерфейс SFTP командного рядка, тобто /usr/bin/sftp. Мій останній приклад у публікації - це коли я роблю симпосилання за допомогою цього клієнта SFTP так само, як ви просите.
Malvineous

Я досі не маю уявлення про те, що ти маєш на увазі. Відредагуйте свою публікацію, щоб уточнити, що ви робите на локальному рівні, що ви робите над монстром на sshfs, не виходячи з цього transform_symlinksваріанту, що ви робите над монстром на ssh з цим transform_symlinksпараметром та що ви робите з клієнтом sftp. Символьні посилання працюють нормально над SSHFS, тому відповідь на ваше перше речення - "нічого" - або ви зіткнулися з помилкою, або не набираєте правильних команд, але ваш звіт занадто незрозумілий, щоб знати, що не так.
Жил "ТАК - перестань бути злим"

Я намагався пояснити, про що я прошу, якнайкраще, але я не зовсім впевнений, за чим ви хочете, оскільки питання мені здається зрозумілим. Якщо все ще незрозуміло, скажіть, будь ласка, конкретно, які частини не мають сенсу і чому, і я спробую зосередитись на цих бітах. Сподіваємось, на ваші запитання зараз відповіли.
Malvineous

Відповіді:


13

Для перетворення віддалених абсолютних (починаючи з /) посилань на sshfsточку монтажу використовуйте follow_symlinksпараметр:

sshfs -o follow_symlinks ...

Цей transform_symlinksваріант для мене нічого не робить, дивіться це питання .


правильна відповідь у моєму випадку. Раніше я не бачив файли / папки з посиланням, тепер я бачу її і можу слідувати за нею.
вихід з системи

1

Я бачив поведінку, яку ви описували раніше, але тестуючи її зараз, я можу створити символьні посилання в каталозі, встановленому на 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)

Я оновив sshd на пульті близько 4 місяців тому. Старій версії було б кілька років. Можливо, оновлення вирішило проблему. Це може дати деяку підказку щодо того, що я зараз використовую:

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

Я нічого не зробив, щоб змінити sshfs, крім того, що Ubuntu робить автоматично.
HTH.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.