sshfs quebra links simbólicos do servidor SFTP

13

Alguém sabe como montar um caminho SFTP remoto via SSHFS para que você possa trabalhar com links simbólicos? Quando faço isso, todos os links simbólicos que eu crio apontam para os arquivos errados (não aqueles com os quais eu me liguei). Todos os links simbólicos nos quais estou interessado são relativos (não absolutos) para que apareçam exatamente como na máquina remota. seja ideal.

Usando o sshfs com as opções de montagem padrão, não consigo criar um link simbólico para outro arquivo no diretório atual:

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

O que é obviamente incorreto, pois o destino do link está no diretório atual ( ./test ), mas aqui você pode ver que o sshfs cria um link para /test , que está incorreto - o destino do link é /mnt/path/to/sshfs/mount/test not /test .

Ao adicionar a opção transform_symlinks quando eu montar o sistema de arquivos sshfs, eu recebo um link relativo com o mesmo comando, mas ele ainda aponta para o lugar errado:

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

Aqui eu tentei linkar para ./test no diretório atual, mas em vez disso eu consegui um link para ../../../test três níveis acima!

Conectar-se com a linha de comando SFTP client sftp em vez de montar com sshfs funciona, no entanto:

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

Portanto, isso me diz que o servidor SFTP remoto está funcionando bem (já que posso criar links simbólicos com um cliente SFTP dedicado), mas por algum motivo não consigo criar nenhum link simbólico funcional no sshfs.

Curiosamente, quando eu uso o sshfs para montar um caminho em um servidor SSH que fornece acesso ao shell (em oposição a um servidor somente SFTP), os links simbólicos funcionam bem - eu posso criá-los corretamente. Parece ser problemático quando conectado a um servidor somente SFTP.

O que estou fazendo de errado? Existe uma opção especial que eu tenho que passar para o sshfs quando estou me conectando a um servidor SFTP para fazer os links simbólicos funcionarem?

    
por Malvineous 03.07.2013 / 01:42

2 respostas

7

Para transformar links simbólicos absolutos remotos (começando com / ) como relativos ao ponto de montagem sshfs , use a opção follow_symlinks :

sshfs -o follow_symlinks ...

A opção transform_symlinks não faz nada para mim. Consulte este problema .

    
por 03.04.2017 / 06:28
1

Eu já vi o comportamento que você descreveu antes, mas testando agora eu posso criar links simbólicos muito bem em um diretório montado pelo 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)

Eu fiz o upgrade de sshd no controle remoto há cerca de 4 meses. A versão antiga teria vários anos de idade. Talvez a atualização tenha resolvido o problema. Isso pode dar alguma pista sobre o que estou usando agora:

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

Eu não fiz nada para mudar o sshfs, exceto o que o Ubuntu faz automaticamente.
HTH.

    
por 09.04.2016 / 23:21