domingo, 4 de noviembre de 2012

SSHFS: Acceder localmente a un directorio remoto


sshfs es un cliente de un sistema de ficheros, basado en el protocolo SSH de transferencia de ficheros.

La mayoría de los servidores de SSH ya soportan este protocolo por lo que es muy sencillo configurarlo (En el servidor no es necesario configurar nada, y en el cliente es tan fácil como hacer login mediante SSH)

sshfs está basado en FUSE (Filesystem in USErspace)

FUSE proporciona un módulo del kernel y una API para implementar sistemas de ficheros en espacio de usuario.



Instalar sshfs en Debian.


En el ordenador remoto necesita estar ejecutándose el servidor SSH.

En el ordenador local instalaremos el cliente de sshfs.

$ sudo aptitude install sshfs

El kernel en el sistema local necesita estar compilado con soporte para FUSE:
CONFIG_FUSE_FS=m



Privilegios (grupo fuse)


En Debian, un usuario que quiera montar un directorio mediante sshfs necesita pertenecer al grupo fuse.

Para añadir el usuario "your_user" al grupo fuse (se hará efectivo la siguiente vez que se loguee)
$ sudo add your_user fuse

Para ver los grupos a los que pertenecerá el usuario la siguiente vez que haga login:
$ groups your_user

Los grupos a los que actualmente pertenece el usuario:
$ groups

Si fuse no aparece en el listado, pero ya lo has añadido, tienes que loguearte de nuevo:
$ sudo login your_user



Si intentamos montar un directorio remoto sin los privilegios necesarios nos dará un error:
$ sshfs remote_user@IP_ADDRESS:/path/remote/directory mountpoint
fuse: failed to open /dev/fuse: Permission denied

Efectivamente vemos que para acceder al dispositivo /dev/fuse necesitamos pertenecer al grupo fuse:

$ ls -l /dev/fuse
crw-rw---T 1 root fuse 10, 229 Oct 10 10:50 /dev/fuse



Montar y desmontar un directorio remoto



Para montar un directorio:

$ sshfs remote_user@IP_address:/path/to/remote/directory mountpoint

Damos el nombre del usuario remoto "remote_user", y la dirección IP del sistema remoto "IP_Address".

También es necesario especificar el path del directorio remoto que queremos montar localmente "/path/to/remote/directory"

El punto donde montaremos localmente el directorio remoto: "mountpoint"



Desmontar el directorio:
(el usuario que lo montó previamente puede ejecutar:)
$ fusermount -u mountpoint

o el usuario root
$ sudo umount mountpoint


NOTA: Si el directorio remoto lo monta el usuario local "user", sólo ese usuario podrá acceder a ese directorio localmente. Otros usuarios no tienen permisos para verlo, ni siquiera root.



Referencia


http://fuse.sourceforge.net/sshfs.html

http://fuse.sourceforge.net


Puede que también le interese


SSH cliente y servidor: Introducción


No hay comentarios:

Publicar un comentario