martes, 26 de febrero de 2019

Samba - compartir carpetas en red

Nota: Actualizó esta entrada que hice el 17 de agosto de 2007, aunque dicho manual esta bien y es completamente funcional, la versión de samba en el momento de escribir este manual es la versión estable 4.9.4.

Samba (versión estable 4.9.4) es un conjunto de herramientas que administran el protocolo SMB (también conocido como «CIFS») en Linux. Windows utiliza este protocolo para espacios compartidos de red e impresoras compartidas.

Samba también puede actuar como un controlador de dominio Windows. Fue creado para permitir que las estaciones de trabajo en Unix compartiesen recursos (archivos, carpetas, impresoras)  con las estaciones de trabajo Windows en una red Microsoft.

Para hacer uso de este servicio hemos de realizar el siguiente proceso:

1- Instalar el servidor samba
2- Configurar el servidor según nuestras necesidades
3- Añadir usuarios para acceder a los recursos compartidos
4- Dar los permisos a las carpetas compartidas
5- Arrancar el servidor samba


1. Instalar el servidor samba


El paquete samba contiene los dos servidores principales de Samba 4: smbd y nmbd.

smbd: Es el demonio encargado de compartir archivos e impresoras, y autorizar el acceso de los clientes sobre la red SMB.

nmbd: Es el demonio que se encarga de buscar a través del Windows Internet Name Service (WINS)

Para instalar, como siempre hacemos en este blog abrimos synaptic (o bien desde consola, usando apt o apt-get) y seleccionamos los siguientes paquetes para su instalación:

- samba
- samba-common
- samba-common-bin






El paquete samba define una configuración mínima durante la instalación inicial. No obstante es muy recomendable adaptar la configuración a posteriori a nuestras necesidades, usando el siguiente comando:

dpkg-reconfigure samba-common

Aunque nosotros no usaremos el comando anterior, pues con la configuración mínima por defecto, es valida para nosotros.

El instalador configura el grupo de trabajo por defecto que usa windows, llamado: workgroup

El instalador nos propone identificar el servidor WINS de la información provista por el demonio DHCP. Nosotros NO usaremos dicha opción, ya que vamos a utilizar el servidor Samba como servidor WINS.
Por tanto lo mejor es decirle NO y pulsamos intro para continuar.





Durante la instalación de Samba se creara un archivo en /etc/samba llamado: smb.conf. En el que van todas las configuraciones necesarias del servidor, este fichero se encuentra muy bien comentado y explicado cada apartado (el único problema es que se encuentra en ingles). 

Por defecto nos encontramos con una configuración estándar, en la cual se comparten las impresoras y  las carpetas personales (/home/usuario) de los usuarios de Debian GNU/Linux.
Nosotros podemos modificar dicha configuración según nuestras necesidades.



NOTA: antes de realizar algún cambio o modificación en el fichero smb.conf, es importantísimo realizar una copia de seguridad.



también podemos instalar algunas de estas herramientas gráficas (a elección de cada uno) para conectarnos y navegar por los directorios compartidos.

- kdenetwork-filesharing
- smb4k




2. Configurar el servidor samba según nuestras necesidades

Solo el usuario administrador (root) o usuarios con permisos de administrador puede modificar este fichero. Como dije este fichero se encuentra muy bien comentado y explicado cada apartado (el único problema es que se encuentra en ingles). Por defecto nos encontramos con una configuración estándar, que modificaremos según nuestras necesidades.

smb.conf se divide en secciones que se identifican con títulos entre corchetes, para facilitar su lectura, localización y configuración.

Dentro de estas secciones se encuentran los parámetros que se pueden activar eliminado la señal de comentario (# ó ;), o desactivarlas colocando esa misma señal de comentario (# ó ;) al principio de la línea.

Las secciones que vamos a modificar son las siguientes:

2.1. [global] - define los parámetros del servidor.
2.2. [homes] - define las carpetas (/home) de los usuarios como los recursos compartidos
2.3. [printer] - define las impresoras compartidas.

Añadimos dos secciones personalizadas, que son las carpetas que vamos a compartir:

2.4. [samba con contraseña] - define el recurso compartido con contraseña.
2.5. [samba sin contraseña] - define el recurso compartido sin contraseña.



Configurando los parámetros [global], [homes], [printer]

2.1. [global] - configuración por defecto de samba.

Vemos la sección [global] y el grupo de trabajo: workgroup = WORKGROUP dejamos como esta.



2.2. [homes] - define las carpetas (/home) de los usuarios como los recursos compartidos

Ahora vemos el recurso compartido por defecto, que son las carpetas /home de los usuarios del sistema operativo Debian GNU/Linux.

Pero en este manual hemos quitado dicho recurso con lo cual en vez de borrar las lineas de configuración he decidido comentarla poniéndole delante el símbolo de la almuhadilla. # 

Configuración por defecto de [homes]

3.Eliminada la configuración por defecto [homes]


2.3. [printer] - define las impresoras compartidas.

Como se puede ver, en esta versión de samba, las impresoras vienen compartidas por defecto.





2.4. [samba con contraseña] - define el recurso compartido con contraseña

En este apartado vamos a compartir una carpeta privada, en la cual es imprescindible estas dado de alta, con un nombre de usuario y una contraseña para acceder a dicha carpeta.

Ejemplo de configuración en smb.conf:

[Samba con contraseña]
     comment = Samba con contraseña
     path = /ruta al directorio
     browseable = yes
     read only = no
     create mask = 0775
     directory mask = 0775




2.5. [samba sin contraseña] - define el recurso compartido sin contraseña

En este apartado vamos a compartir una carpeta publica, es decir cualquiera puede acceder a dicha carpeta.

Ejemplo de configuración en smb.conf:

[Samba sin contraseña]
     comment = Samba sin contraseña
     path = /ruta al directorio
     public = yes
     browseable = yes
     writable = yes
     create mask = 0775
     directory mask = 0775



Explicación de los parámetros:

[nombre para el nuevo recurso compartido], puedes poner lo que quieras.

    comment = , Descripción del contenido de la carpeta
    path = , ruta completa del directorio que vamos a compartir.
    public = yes, directorio publico no requiere contraseña.
    browseable = yes, para poder navegar por las subcarpetas
    read only = no, para poder leer y escribir en dicha carpeta
    writable = yespara que también se pueda escribir en dicha carpeta
    create mask = 0775, son los permisos que va tener dichos archivos.
    directory mask = 0775, son los permisos que va tener dichas carpetas.


3- Añadir usuarios para acceder a los recursos compartidos


Cada usuario de Samba necesita una cuenta en el servidor.

Nota muy importante: Tenemos que registrar a los usuarios en la base de datos de Samba, en caso contrario NO podremos acceder a los recursos compartidos con contraseña (es muy obvio pero muchísima personas se olvidan de registrar a los usuarios en el servidor: smbpasswd -a nombre_de_usuario)

3.1. Primero tenemos que crear las cuentas de usuarios en Debian GNU/Linux. (también podemos crear un grupo llamado "samba" y agregar a este grupo todos los usuarios que necesitemos que tengan acceso al servidor samba.)

Para agregar un nuevo usuario en Debian GNU/Linux usamos el siguiente comando:

# adduser nombre_del_nuevo_usuario


3.2. Luego necesitamos registrar a los usuarios en la base de datos de Samba. (Nos pedirá la clave que queremos utilizar para ese usuario y algunos datos que son opcionales.)

Supongamos que tenemos un usuario ya creado llamado "usuariodebian", lo vamos a registrar en el servidor Samba, para esto utilizamos el siguiente comando:

# smbpasswd -a usuariodebian

NOTA: La clave que queremos que tenga ese usuario para ingresar en el servidor samba, puede ser distinta a la contraseña que el usuario tiene para entrar (logearse) en Debian GNU/Linux.



Para cambiar la contraseña de un usuario ejecutamos el siguiente comando:

# smbpasswd -a nombre_de_usuario



Para borrar un usuario del servidor samba ejecutamos:

# smbpasswd -x nombre_de_usuario




4- Dar los permisos a las carpetas compartidas

Es importante recordar que si no damos los permisos (de lectura y escritura) del directorio compartido en Debian GNU/Linux, al intentar acceder a dicho recurso compartido, aunque hayamos especificado en el archivo smb.conf qué usuarios o grupos de usuarios samba pueden leer o escribir en dichos directorios, Debian GNU/Linux aplicará los permisos más restrictivos.

Por tanto, aplicamos permiso recursivo 777 al directorio (al ser recursivo se aplicará a los subdirectorios y ficheros que se creen después dentro de ese directorio), y cambiamos el propietario de los recursos al grupo que deseamos que tenga permisos de escritura; y después en Samba definimos los grupos que pueden leer y/o escribir.

Vamos a cambiar los permisos desde una consola de comandos, usando el siguiente comando:


# chmod -R 777 nombre_del_directorio





5- Arrancar el servidor samba en Debian usando systemd

Para arrancar el servidor samba, usamos uno de de estos dos comandos:

# systemctl start smbd

# service smbd start


Con cada modificación que realicemos en el fichero smb.conf habrá que reiniciar el servicio smbd para que esa modificación entre en funcionamiento. usamos uno de de estos dos comandos:

# systemctl restart smbd

# service smbd restart


Para parar el servidor samba usamos uno de de estos dos comandos:

# systemctl stop smbd

# service smbd stop




Ver los equipos de la red y hacer uso de los recursos compartidos desde Debian GNU/Linux


Nos dirigimos al explorador de archivos Dolphin y buscamos el apartado Red.



Hacemos clic en la carpeta Red en la columna de la izquierda
Clic en Carpetas compartidas (SMB)

Hacemos clic en Workgroup 
Vemos dos recursos compartidos: Cbn-nas es mi router y Jackie es mi servidor Samba


Vemos las carpetas Samba (con contraseña) y sambasin (sin contraseña) 
Introducimos usuario y contraseña del usuario del servidor samba
Vemos las carpetas y ficheros que tiene la carpeta samba sin contraseña


Ver los equipos de la red y hacer uso de los recursos compartidos desde Windows 10 

Hacemos clic en el icono Red

Vemos los equipos de los recursos compartidos y mi servidor samba llamado Jackie

Vemos las impresoras y las carpetas que tengo compartidas desde mi servidor Samba

Introducimos usuario y contraseña del usuario del servidor samba

Vemos las carpetas y ficheros que tiene la carpeta samba sin contraseña





Videotutorial

Nota: Los vídeotutoriales son totalmente ajenos a este blog, son enlaces correspondientes a youtube, screencast, vimeo, etc...








.

2 comentarios:

Alvaro dijo...

gracias por tremenda guía, es la mas completa que veo, alejándonos de programas y metiéndonos de lleno en el terminal, excelente explicación de cada parámetro, en especial para nosotros los novatos

Polluelo dijo...

Windows no me ve nada en RED no me encuentra debian ,lo tengo en el mismo grupo llamado workgroup y nada no consigo que lo detecte el windows 10 server ,alguna solucion?
Muchas gracias