Tal vez muchos lo desconozcan pero, a diferencia de Linux que soporta un gran número de filesystems, el kernel FreeBSD sólo posee soporte para gestionar sistemas de archivos UFS, ZFS y ext2 (a través del driver ext2fs). Adicionalmente posee soporte de sólo lectura para los sistemas de archivos XFS y ReiserFS. Aunque afortunadamente FreeBSD tiene su propia implementación de FUSE (Filesystem in Userspace), lo que nos permite montar, por ejemplo, sistemas de archivos ext4 y NTFS.

FUSE es un módulo del kernel para sistemas Unix que permite agregar soporte para sistemas de archivos adicionales sin necesidad de editar el código del propio kernel. Como el código que soporta a cada filesystem se ejecuta en espacio usuario, los usuarios sin privilegios tienen la capacidad de gestionarlos (montar, desmontar, etc.), mientras que el módulo FUSE sólo funciona como intermediario a la interfaz del kernel.

Instalar soporte para sistemas de archivos ext4 y NTFS

Para instalar los drivers de los sistemas de archivos ext4 y NTFS desde el gestor de paquetes, ejecutar:

# pkg install fusefs-ext4fuse
# pkg install fusefs-ntfs

Si en cambio se desea compilar desde los fuentes:

# portmaster sysutils/fusefs-ext4fuse
# portmaster sysutils/fuse

Luego es necesario cargar el módulo del kernel FUSE (fuse.ko):

# kldload fuse.ko

Verificar que haya sido cargado correctamente:

root@hal9000:~ # kldstat | grep fuse
10    1 0xffffffff81ae7000 ded6     fuse.ko

Es posible configurar FreebSD para que cargue el módulo fuse.ko automáticamente al iniciar el sistema. Para ello editar el archivo /boot/loader.conf:

# vi /boot/loader.conf

Agregar la línea:

fuse_load="YES"

Montar sistemas de archivos

Para montar un sistema de archivos ext4, por ejemplo el que se encuentra en el dispositivo ada1s1 en el punto de montaje /media/disk1/, simplemente ejecutar:

# ext4fuse /dev/ada1s1 /mnt/disk1/

De forma similar, si se desea montar el filesystem NTFS del dispositivo ada1s2 en el punto de montaje /media/disk2/:

# ntfs-3g /dev/ada1s2 /media/disk2/

Permitir montar a usuarios sin privilegios

Notar que en los ejemplos anteriores he montado les filesystems como superusuario (root). Si se desea poder montarlos como un usuario sin privilegios, es necesario realizar las siguientes configuraciones.

Permitir que usuarios del grupo wheel tengan acceso de lectura/escritura sobre el dispositivo en cuestión (por ejemplo /dev/ada1s1, el cual posee un sistema de archivos ext4) y sobre el dispositivo /dev/fuse. Para ello, editar el archivo /etc/devfs.conf:

# vi /etc/devfs.conf

Agregar las siguientes líneas:

# Permitir acceso rw a usuarios del grupo wheel sobre ada1s1
own     ada1s1  root:wheel
perm    ada1s1  0660
# Permitir acceso rw a usuarios del grupo wheel sobre fuse
own     fuse    root:wheel
perm    fuse    0660

Luego editar el archivo de configuración del kernel /etc/sysctl.conf:

# vi /etc/sysctl.conf

Agregar la siguiente línea para permitir que usuarios sin privilegio puedan montar filesystems:

vfs.usermount=1

Reiniciar el sistema.

Verificar que el módulo fuse haya sido cargado automáticamente:

emi@hal9000:~ % kldstat | grep fuse
 2    1 0xffffffff81956000 1a1f0    fuse.ko

Verificar que los permisos sobre los dispositivos ada1s1 y fuse hayan sido asignados de forma correcta:

emi@hal9000:~ % ll /dev/fuse 
crw-rw----  1 root  wheel  0x45 Dec  5 12:25 /dev/fuse
emi@hal9000:~ % ll /dev/ada1s1
crw-rw----  1 root  wheel  0x67 Dec  5 12:22 /dev/ada1s1

Verificar los permisos sobre el punto de montaje (el usuario debe tener permisos de lectura/escritura sobre el directorio):

emi@hal9000:~ % ll -d /media/disk
drwxrwx---  2 emi  wheel  512 Nov 28 13:03 /media/disk/

Verificar que el kernel permita que los usuarios sin privilegios puedan montar filesystems:

emi@hal9000:~ % sysctl vfs.usermount
vfs.usermount: 1

Todo listo, ahora es posible montar el filesystem como el usuario "emi" perteneciente al grupo "wheel":

emi@hal9000:~ % ntfs-3g /dev/ada1s1 /media/disk/

Verificar mediante:

emi@hal9000:~ % mount | grep disk
/dev/fuse on /media/disk (fusefs, local, synchronous)

Notas

La implementación de ext4 para FUSE es de sólo lectura, hasta el momento.

En cambio, la versión de NTFS-3G es estable, soporta acceso de lectura/escritura y posee todas las características implementadas. Aunque actualmente en FreeBSD no es posible montar un filesystem NTFS como usuario sin privilegios utilizando este driver.

Referencias

FreeBSD Handbook - 21.2. Linux® File Systems

EXT4 implementation for FUSE

NTFS-3G + Ntfsprogs


Tal vez pueda interesarte


Compartí este artículo