Un sistema con SaMBa muy sencillo

De Gruvi

Tabla de contenidos

Creación de un sistema de compartición con SaMBa

Acceso a otras máquinas en nuestra red

Instalamos fuse

sudo apt-get install fusesmb

Añadimos el usuario al grupo fuse

sudo adduser minino fuse

Creamos la carpeta en la que se montará(n) la(s) compartida(s) por otro(s) sistema(s) y le damos los permisos necesarios

sudo mkdir /home/Red\ local
sudo chmod 777 /home/Red\ local

Reiniciar para que fusermount se levante

Lanzamos el acceso a la(s) carpeta(s) compartida(s) en la red con:

fusesmb /home/Red\ local

desmontamos la carpeta compartida con:

fusermount -u /home/Red\ local

Compartición (hacia otras máquinas) de una carpeta

Esta es la comparticón básica que incorpora MiniNo.

Esta configuración tiene la ventaja de que es muy sencilla de manejo para quien no sepa nada (o casi) de informática, ya que todo funciona de forma predeterminada, Pero tiene un gran inconveniente, la carpeta Compartida está accesible desde cualquier máquina de la red local y para cualquier usuario, ya que no incluye ninguna protección por contraseña.

Creamos la carpeta a compartir

sudo mkdir /home/Compartida

le damos permisos generales

sudo chmod 777 /home/Compartida

Editamos la configuración samba

nano /etc/samba/smb.conf

Añadimos al final:

[Compartida]
    comment = Compartida desde MiniNo
    browseable = yes
    path = /home/Compartida
#   path = %H/Compartida
    volume = MiniNo
    guest ok = yes
    printable = no
    writable = yes
    available = yes
    create mask = 0765
    directory mask = 0775

Creación de una carpeta Compartida restringida por contraseña

Para usuarios algo avezados es muy sencillo disponer de una carpeta Compartida con acceso protegido por contraseña.

Esta configuración nos va a permitir que si en MiniNo tenemos dos o más usuarios, está conectado uno de ellos, se pueda acceder por red a la carpeta compartida restringida del otro usuario.

Para construirla tenemos que seguir estos pasos: Crear la carpeta Compartida en nuestro home o espacio personal.

sudo mkdir /home/$USER/Compartida

le damos permisos

sudo chmod 777 /home/Compartida

Editamos la configuración samba

nano /etc/samba/smb.conf

Y, abajo de todo, en la configuración particular de MiniNo, comentamos ó descomentamos las líneas coloreadas, para dejarlas así:

[Compartida]
    comment = Compartida desde MiniNo
    browseable = yes
#   path = /home/Compartida
    path = %H/Compartida
    volume = MiniNo
#   guest ok = yes
    printable = no
    writable = yes
#   available = yes
    create mask = 0765
    directory mask = 0775

Para que lo veamos más claro, dejo una configuración que incluye ambas carpetas

  • Compartida_MiniNo es una carpeta de acceso libre
  • Usuario_MiniNo pedirá en la otra máquina un nombre de usuario y una contraseña
[Compartida_MiniNo]
    comment = Compartida desde Minino
    browseable = yes
    path = /home/Compartida
    volume = MiniNo
    guest ok = yes
    printable = no
    writable = yes
    available = yes
    create mask = 0765
    directory mask = 0775
[Usuario_MiniNo]
    comment = Compartida de usuario de MiniNo
    browseable = yes
    path = %H/Compartida
    volume = Usuario_MiniNo
    printable = no
    writable = yes
    create mask = 0765
    directory mask = 0775

Ya que cuando accedamos a esta carpeta de acceso restringido nos va a pedir un usario y una contraseña deberemos indicarle a SaMBa quien y cual es.

IMPORTANTE:

el usuario deberá ser el mismo usuario de MiniNo, obligatoriamente deberá tener el mismo nombre.
este proceso deberá ser realizado por el usuario administrador.

Partimos de la base de que el usuario en MiniNo que crea una carpeta de acceso restringido es el usuario isabel

Abrimos una terminal y en ella escribimos

sudo smbpasswd -a isabel

la terminal nos responde pidiendonos la contraseña del administrador

[sudo] password for minino: 

Ahora nos pedirá la contraseña de este nuevo usuario de SaMBa

Como recomendación, es preferible que esta contraseña NO sea la misma que utiliza para acceder a MiniNo.

New SMB password:

Ahora nos pedirá que reescribamos la contraseña, para asegurar que no se produjo ningún error al teclearla

Retype new SMB password:

Finalizamos reiniciando el servicio SaMBa

sudo /etc/init.d/samba restart

Papelera de reciclaje en SaMBa

En prevención de que alguien, o nosotros mismos, desde otra máquina de la red pueda borrar un fichero de forma indebida y quisieramos recuperarlo, nos veremos en la necesidad de crear una papelera en nuestra compartición. Sin ella, el borrado de un fichero es permanente y es muy difícil recuperarlo.

Para añadir esta funcionalidad hay que utilizar el módulo recycle para ello, en /etc/samba/smb.conf a lo anterior le añadimos lo coloreado:

[Compartida]
    comment = Compartida desde MiniNo
    browseable = yes
    path = /home/Compartida
#   path = %H/Compartida
    volume = MiniNo
    guest ok = yes
    printable = no
    writable = yes
    available = yes
    create mask = 0765
    directory mask = 0775
    vfs objects = recycle
    config-file = /etc/samba/recycle.conf
    recycle:repository = /home/Compartida
    recycle:directory_mode = 770
    recycle:keeptree = Yes
    recycle:versions = Yes
    recycle:touch_mtime = yes

Atención a la línea

    recycle:repository = /home/Compartida

adecuarla al caso particular

En el fichero de configuración /etc/samba/recycle.conf incluimos estas líneas:

name = Recycle Bin
mode = KEEP_DIRECTORIES|VERSIONS|TOUCH
maxsize = 0

A partir de ahora cada vez que eliminemos un fichero, este irá a parar al directorio /home/Compartida/recycle, podemos usar una tarea de cron para vaciar todos los ficheros que tengan una antigüedad superior, por ejemplo, a los 30 días:

@daily find /home/Compartida/recycle/* -mtime +30 -exec rm {} \;

NOTA: OJO a la ruta

Un pequeño interfaz para montar y desmontar

#!/bin/bash

case $LANG in
   es.*)
       SHARED="Carpetas compartidas"
       MOUNT="Montar la red local"
       UMOUNT="Desmontar la red local"
       HELP1="Acceder a las carpetas compartidas de su red local"
       HELP2="Desmontar las carpetas compartidas en la Red local"
       DEVICE="Red\ local"
       ;;
   gl.*)
       SHARED="Carpetas compartidas"
       MOUNT="Montar a rede local"
       UMOUNT="Desmontar a rede local"
       HELP1="Acceder aos cartafoles compartidos da súa Rede local"
       HELP2="Desmontar os cartafoles compartidos da súa Rede local"
       DEVICE="Rede\ local"
       ;;
   *)
       SHARED="Shared Folders"
       MOUNT="Mount Local Network"
       UMOUNT="Unmount Local Network"
       HELP1="Access to shared folders on your local network"
       HELP2="Remove the shared folders on your local network"
       DEVICE="Local\ Network"
       ;;
esac

MODE=$(Xdialog --title "SaMBa" \
	--no-tags \
	--radiolist "$SHARED" 10 44 0 \
	"m" "$MOUNT"     off "$HELP1" \
	"d" "$UMOUNT" off "$HELP2" 2>&1)
case $? in
	0)
		if [ "$MODE" == "m" ]; then
			fusesmb /home/$DEVICE
		elif [ "$MODE" == "d" ]; then
			fusermount -u /home/$DEVICE
		else
			exit
		fi
		;;
	1)
		exit
		;;
	255)
		exit
		;;
esac

Algunas reglas para administrar usuarios en SaMBa

Ya vimos que

smbpasswd -a usuario

[a]ñade un usuario

Gestión posterior de usuarios de SaMBa

smbpasswd -d usuario

[d]esactiva un usuario (tiene que haber sido añadido)

smbpasswd -e usuario

activa ([e]nable) un usuario previamente desactivado

smbpasswd -x usuario

elimina un usuario (que haya sido añadido previamente)