Servidor Samba: la solución perfecta para redes multiplataforma

¿Qué es Samba?

Un servidor Samba es un servidor que utiliza el software homónimo de código abierto para configurar directorios Unix / Linux. Este tipo de servidores implementa el protocolo SMB –Server Message Block, actualmente Common Internet File System (CIFS)–, que inicialmente permitía compartir archivos, impresoras y otros servicios en una red que usaba sistemas operativos Windows. Ahora Samba permite la integración de Windows con sistemas Linux/Unix en una misma red, de tal forma que se puedan intercambiar archivos o se puedan utilizar diferentes impresoras independientemente del sistema operativo de los ordenadores de una red. Ya sea para Unix o para Linux, desde su cuarta versión, Samba asume el papel de Domain Controller con Microsoft Active Directory, gracias al cual es posible la autorización y autenticación central de los equipos y los usuarios de una red.

Un Samba server está compuesto por diferentes módulos para facilitar la configuración del protocolo SMB/CIFS. Su núcleo está compuesto por cuatro daemons (que se ejecutan siempre en un segundo plano):

  • samba: añadido con la versión 4, permite la ejecución de los Active Directory Domain Controllers y es configurable desde smbd.conf
  • smbd: ofrece servicios para compartir archivos y procesos de impresión, se configura a través de smb.conf
  • nmbd: es el responsable de las peticiones de servicio de nombres NetBIOSD para direcciones IP, se configura con el archivo smb.conf
  • winbindd: resuelve la información de grupos y usuarios y la hace entendible para Unix/Linux; ofrece opciones de auto-configuración

Configurar Samba paso a paso

SMB/CIFS es un protocolo estándar e intuitivo para recursos compartidos de red en Windows. Sin embargo, al intercambiar o liberar archivos con equipos en red que usan sistemas operativos Unix o Linux, se pueden presentar problemas. Un servidor Samba se encarga de resolver estos problemas de compatibilidad, sirviendo como mediador entre los dispositivos individuales. Samba es una suite de aplicaciones de código abierto, por lo que no se involucran costes adicionales. A continuación se explicarán los pasos necesarios para configurar Samba en un servidor.

Primer paso: Instalación

En primer lugar se debe decidir si se quiere trabajar directamente desde el servidor, o si se quiere operar desde un cliente de acceso remoto. El siguiente comando permitirá instalar el paquete Samba en el servidor:

apt-get install samba

Segundo paso: Agregar cuentas de usuario a la base de datos de Samba

Una vez se ha instalado Samba en el servidor, es necesario activar las respectivas cuentas de usuario. Algunas distribuciones de Linux sincronizan las cuentas de usuario desde el sistema y las añaden automáticamente a la base de datos de Samba – por ejemplo, si el paquete libpam-smbpass ya ha sido instalado, la sincronización de contraseñas Linux y SBM se mantiene. De lo contrario, será necesario gestionar manualmente las cuentas de usuario para que estos puedan hacer uso de los servicios de red necesarios.

La administración de las cuentas de usuario se controla a través del comando smbpasswd usando los parámetros -a, -x, -d y -e. La línea de comandos para ello, es la siguiente:

sudo smbpasswd -a NOMBRE DE USUARIO (CONTRASEÑA)
sudo smbpasswd -x NOMBRE DE USUARIO
sudo smbpasswd -d NOMBRE DE USUARIO
sudo smbpasswd -e NOMBRE DE USUARIO

Con el primer comando es posible añadir un usuario a los recursos compartidos de la red. Una vez introducido el nombre del usuario es posible añadir su respectiva contraseña. Esta puede ser idéntica o diferente a la contraseña de Linux. El segundo comando permite eliminar un usuario de la base de datos, con el parámetro -d será desactivado y con -e sera activado. El comando

sudo service smbd reload

carga nuevamente las configuraciones del servidor para guardar los cambios realizados.

Tercer paso: Configurar el uso compartido de archivos

Permisos generales

Los permisos generales se pueden especificar en el archivo de configuración del servidor Samba. Este archivo contiene todas las acciones administrativas y es donde se almacenan las características generales del servidor. Con el siguiente comando es posible abrir el archivo:

sudo gedit /etc/samba/smb.conf

El archivo smb.conf contiene muchos ejemplos de líneas de comando que, cuando están marcadas con un signo número (#) o un punto y coma (;), significa que no están activos. Para activarlas solo será necesario eliminar los carácteres especiales. Las nuevas entradas pueden ser añadidas al final del archivo, siempre y cuando el respectivo nombre bajo el cual estará disponible, se encuentre entre corchetes. Allí se desprenderá una segunda línea de comandos hacia el respectivo archivo y finalmente aquellas líneas de parámetros con las que se va a aplicar. Si deseas compartir, por ejemplo, una carpeta con fotos que permita la escritura a diferentes usuarios, así como el acceso a invitados, deberás introducir lo siguiente en el smb.conf:

[Fotos]
path= /documentos/fotos
writeable = yes
guest ok = yes

Para guardar los cambios será necesario reiniciar Samba con el comando anteriormente mencionado:

sudo service smbd reload

Permisos personales

Para poder establecer autorizaciones específicas, los usuarios deben ser parte del grupo sambashare. Con el siguiente comando es posible agregar usuarios al grupo:

sudo usermod -aG sambashare NOMBRE DE USUARIO

Así, el usuario será incluido en el grupo tan pronto inicie sesión o reinicie Linux. Ahora sus modificaciones no se almacenarán en smb.conf, sino en archivos de texto separados – por lo general en la carpeta /var/lib/samba/usershares. Cada uno de estos archivos contiene el sharename (nombre del recurso) y el directorio de acceso, un comentario opcional, el usershare ACL (indica si los archivos son de solo lectura o si también pueden ser modificados), así como también un parámetro que indica quién tiene permitido el acceso y quién no. Un ejemplo de este tipo de comando, sería:

net usershare add Fotos /documentos/fotos vacaciones 2015 Everyone: r, USER1: f

Así, valiéndose del anterior comando, se libera el archivo con el sharename “Fotos” en el directorio “documentos/fotos”, junto con el comentario “vacaciones 2015”. Todas las cuentas de usuario de un servidor Samba pueden leer los archivos, USER1 tiene todos los permisos y puede, además, gestionar los permisos de otros usuarios. Para comprobar lo anterior, es posible utilizar los siguientes comandos:

net usershare list
net usershare info

El primer comando presenta una lista de todas las acciones que se tomaron en virtud del respectivo sharename, mientras el segundo ofrece una descripción más detallada de las mismas – incluyendo comentarios, permisos, etc. Recuerda que en caso de que quieras realizar cambios en los permisos, deberás hacerlo siempre en la línea de comandos y nunca en el archivo de texto del usershare. Para eliminar una acción se usará entonces el comando:

net usershare delete SHARENAME

Servidor Samba: Windows y Linux en una misma red

Si el uso compartido de impresoras y archivos resulta problemático debido al uso de diferentes sistemas operativos, la solución perfecta la ofrece la implementación de Samba como software para clientes o como servidor.  Esta suite de software libre implementa el protocolo de red SMB / CIFS en sistemas Unix y Linux, lo que lo hace compatible con la red de distribución de Windows, ya sea como cliente o como servidor.

Un servidor Samba Linux regula el intercambio de archivos y servicios en la red como un servidor de Windows –desde la versión 4 asume el papel de Domain Controller con Microsoft Active Directory. Si deseas administrar y configurar un servidor Samba, puedes hacerlo fácilmente de forma remota desde tu ordenador personal.

También tendrás la opción de trabajar directamente con la línea de comandos o de instalar una interfaz gráfica adicional para facilitar la configuración.