sshfsはSFTPサーバーからのシンボリックリンクを解除します


16

シンボリックリンクで作業できるように、SSHFS経由でリモートSFTPパスをマウントする方法を知っている人はいますか?これを行うと、作成したすべてのシンボリックリンクは間違ったファイル(リンクしたものではありません)を指します。興味のあるすべてのシンボリックリンクは相対(絶対ではない)なので、リモートマシンで表示されるとおりに表示されます理想的です。

デフォルトのマウントオプションで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_symlinkssshfsファイルシステムをマウントするときにオプションを追加すると、同じコマンドで代わりに相対リンクが表示されますが、それでも間違った場所を指します。

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

ここで./testは、現在のディレクトリにリンクしようとしましたが、代わりに../../../test3レベル上のリンクがありました!

sftpただし、sshfsを使用してマウントする代わりに、コマンドラインのSFTPクライアントを使用して接続することはできます。

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を使用して(SFTP専用サーバーではなく)シェルアクセスを提供するSSHサーバーにパスをマウントすると、シンボリックリンクは正常に機能します。正しく作成できます。SFTPのみのサーバーに接続している場合にのみ問題があるようです。

私は何を間違えていますか?シンボリックリンクを機能させるためにSFTPサーバーに接続するときにsshfsに渡す必要がある特別なオプションはありますか?


私はあなたの質問を理解していません:sshfsは常にSFTPを使用します。「sftpではなくsshで」とはどういう意味ですか?特定のSFTPサーバーで問題が発生しているようです。SFTPクライアントを使用している場合ls -l、テストシンボリックリンクで実行すると何が表示されますか?
ジル 'SO-悪であるのをやめる'

申し訳ありませんが、sftp小文字で言うと、コマンドラインのSFTPインターフェイス、つまりを意味します/usr/bin/sftp。投稿の最後の例は、あなたがリクエストしたとおりに、このSFTPクライアントを使用してシンボリックリンクを作成する場合です。
悪意のある

どういう意味かまだわかりません。投稿を編集して、ローカルで実行していること、transform_symlinksオプションなしでsshfsマウントで実行していること、オプションでsshマウントでtransform_symlinks実行していること、sftpクライアントで実行していることを明確にしてください。シンボリックリンクはSSHFSで正常に機能するため、最初の文に対する答えは「何もありません」です。バグに遭遇したか、正しいコマンドを入力していませんが、レポートが不明確すぎて、何が間違っているのかわかりません。
ジル 'SO-悪であるのをやめる'

私は私ができる限り最善を求めていることを明確にしようとしましたが、質問が私にとって明らかであるように見えるので、あなたが何を求めているのかよくわかりません。それでも不明な場合は、どの部分が意味をなさないのか、具体的にはなぜか、具体的に教えてください。うまくいけば、あなたの質問が答えられました。
悪意のある

回答:


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)

約4か月前にリモートでsshdをアップグレードしました。古いバージョンは数年前のものでした。アップグレードで問題が修正された可能性があります。これは、私が今使用しているものについての手がかりを与えるかもしれません:

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

Ubuntuが自動的に行うことを除いて、sshfsを変更することは何もしていません。
HTH。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.