sshfs rompe enlaces simbólicos del servidor SFTP


16

¿Alguien sabe cómo montar una ruta SFTP remota a través de SSHFS para que pueda trabajar con enlaces simbólicos? Cuando hago esto, todos los enlaces simbólicos que creo apuntan a los archivos incorrectos (no a los que vinculé). Todos los enlaces simbólicos que me interesan son relativos (no absolutos), por lo que aparecerán exactamente como lo hacen en la máquina remota. ser ideal

Al usar sshfs con las opciones de montaje predeterminadas, no puedo crear un enlace simbólico a otro archivo en el directorio actual:

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

Lo cual es obviamente incorrecto, ya que el destino del enlace está en el directorio actual ( ./test), pero aquí puede ver que sshfs crea un enlace /testincorrecto, el destino del enlace /mnt/path/to/sshfs/mount/testno lo está /test.

Al agregar la transform_symlinksopción cuando monte el sistema de archivos sshfs, obtengo un enlace relativo en su lugar con el mismo comando, pero aún apunta al lugar incorrecto:

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

Aquí traté de vincularme ./testen el directorio actual, ¡pero en su lugar obtuve un enlace a ../../../testtres niveles arriba!

sftpSin embargo, conectarse con el cliente SFTP de línea de comandos en lugar de montar con sshfs funciona:

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

Esto me dice que el servidor SFTP remoto funciona bien (ya que puedo crear enlaces simbólicos con un cliente SFTP dedicado), pero por alguna razón no puedo crear enlaces simbólicos que funcionen a través de sshfs.

Por extraño que parezca, cuando uso sshfs para montar una ruta en un servidor SSH que proporciona acceso de shell (a diferencia de un servidor solo de SFTP), los enlaces simbólicos funcionan bien: puedo crearlos correctamente. Solo parece ser problemático cuando está conectado a un servidor solo de SFTP.

¿Qué estoy haciendo mal? ¿Hay una opción especial que debo pasar a sshfs cuando me conecto a un servidor SFTP para que funcionen los enlaces simbólicos?


No entiendo tu pregunta: sshfs siempre usa SFTP. ¿Qué quiere decir con "vía ssh en lugar de sftp"? Parece que tienes problemas con un servidor SFTP en particular. Si usa un cliente SFTP, ¿qué muestra cuando ejecuta ls -lsus enlaces simbólicos de prueba?
Gilles 'SO- deja de ser malvado'

Lo siento, cuando digo sftpen minúsculas me refiero a la interfaz SFTP de la línea de comandos, es decir /usr/bin/sftp. Mi último ejemplo en la publicación es cuando hago el enlace simbólico usando este cliente SFTP, tal como lo solicitas.
Malvineous

Todavía no tengo idea de lo que quieres decir. Edite su publicación para aclarar lo que está haciendo localmente, lo que está haciendo sobre un montaje sshfs sin la transform_symlinksopción, lo que está haciendo sobre un montaje ssh con la transform_symlinksopción y lo que está haciendo con un cliente sftp. Los enlaces simbólicos funcionan normalmente a través de SSHFS, por lo que la respuesta a su primera oración es "nada": o ha encontrado un error o no está escribiendo los comandos correctos, pero su informe no es muy claro para saber qué está mal.
Gilles 'SO- deja de ser malvado'

He tratado de aclarar lo que pido lo mejor que puedo, pero no estoy muy seguro de lo que buscas, ya que la pregunta me parece clara. Si aún no está claro, dígame específicamente qué partes no tienen sentido y por qué, e intentaré concentrarme en esos bits. Esperemos que sus preguntas ahora sean respondidas.
Malvineous

Respuestas:


13

Para transformar los /enlaces simbólicos absolutos remotos (comenzando con ) para que sean relativos al sshfspunto de montaje, use la follow_symlinksopción:

sshfs -o follow_symlinks ...

La transform_symlinksopción no hace nada por mí, vea este problema .


respuesta correcta en mi caso. No veía archivos / carpetas con enlaces simbólicos antes, y ahora lo veo y puedo seguirlo.
cierre de sesión el

1

He visto el comportamiento que describiste antes, pero al probarlo ahora puedo crear enlaces simbólicos muy bien en un directorio montado en 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)

Actualicé sshd en el control remoto hace aproximadamente 4 meses. La versión anterior habría tenido varios años. Tal vez la actualización solucionó el problema. Esto puede dar alguna pista de lo que estoy usando ahora:

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

No he hecho nada para cambiar sshfs, excepto lo que Ubuntu hace automáticamente.
HTH

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.