Configuración básica de SAMBA

En esta oportunidad vamos a hablar de un servicio bastante utilizado llamado SAMBA el cual no todos saben como configurarlo en su totalidad.

¿Que es SAMBA?

Es una herramienta que permite a los Sistemas Operativos UNIX y GNU-Linux compartir archivos utilizando el protocolo SMB (Session Message Block / Bloque de Mensaje de Sesión). Generalmente es utilizado para levantar Servidores de Archivos en Linux sin tener que instalar NFS en las pc con Windows. Básicamente es una emulación de NetBIOS corriendo sobre Linux, un servicio que queda a la escucha en el puerto TCP 139.

Web oficial: http://www.samba.org/

¿Como podemos descargarlo e instalarlo?

# apt-get install samba smbfs (Con esto descargamos todas las herramientas para levantar los servicios y para montar las unidades compartidas)

Una vez descargado, debemos ingresar en el archivo de configuración situado en:

#/etc/samba/smb.conf

Veamos por partes el significado de cada linea:

# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = WORKGROUP

Esta linea nos marca el nombre del Grupo o Dominio en el cual va a figurar el servidor.

# server string is the equivalent of the NT Description field
server string = %h server (Samba)

Marca el nombre con el cual va a aparecer el servidor.

Se puede montar como servidor WINS o bien utilizar un servidor WINS ya existente. No se puede ser ambas cosas a la vez.

Si vamos a poner esta pc como servidor WINS debemos habilitar la siguiente casilla:

# Windows Internet Name Serving Support Section:
# WINS Support – Tells the NMBD component of Samba to enable its WINS Server
#   wins support = no (debemos poner yes para habilitar esta opción)

Si vamos a utilizar uno ya existente debemos configurar la ip en esta otra casilla:

# WINS Server – Tells the NMBD components of Samba to be a WINS Client
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
;   wins server = w.x.y.z (reemplazamos w.x.y.z por la ip EJ: 192.168.0.2)

Tenemos a dispocisión logs para saber las pc que accedieron los cuales podemos ver en las siguientes lineas:

# This tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m (se guardara de la siguiente manera: log.nombre_del_equipo_que_se_conecto )

# Cap the size of the individual log files (in KiB).
max log size = 1000

Configuración de seguridad

# “security = user” is always a good idea. This will require a Unix account
# in this server for every user accessing the server. See
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
# in the samba-doc package for details.
#   security = user

Las variables para colocar son:

security = share (Todos pueden compartir, no existe por parte del servidor ningún tipo de autenticación)

security = user (Un usuario válido debe autenticar para acceder al servidor. Esta autenticación se hace en el servidor SAMBA)

security = server (Permite la autenticación en otro servidor, si este falla la hace SAMBA)

security = domain (Permite la autenticación en un PCD siempre y cuando el servidor SAMBA haya sido añadido a dicho Dominio)

Ya teniendo un concepto más amplio del archivo de configuración, pasemos a crear un recurso compartido:

El nombre del recurso compartido debe ir entre [ ] y se coloca al final del archivo:

[ftp]
	comment = Directorio del servidor FTP
	path = /var/ftp/pub
	guest ok = Yes
	read only = Yes
	write list = fulano, @administrador
	directory mask = 0755
	create mask = 0644

Definiciones:

guest ok: Define si ser permitirá el acceso como usuario invitado. El valor puede ser Yes o No.

public: Es un equivalente del parámetro guest ok, es decir define si ser permitirá el acceso como usuario invitado. El valor puede ser Yes o No.

browseable: Define si se permitirá mostrar este recurso en las listas de recursos compartidos. El valor puede ser Yes o No.

writable: Define si se permitirá la escritura. Es el parámetro contrario de read only. El valor puede ser Yes o No. Ejemplos: «writable = Yes» es lo mismo que «read only = No». Obviamente «writable = No» es lo mismo que «read only = Yes»

valid users: Define que usuarios o grupos pueden acceder al recurso compartido. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @. Ejemplo: fulano, mengano, @administradores

write list: Define que usuarios o grupos pueden acceder con permiso de escritura. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @. Ejemplo: fulano, mengano, @administradores

admin users: Define que usuarios o grupos pueden acceder con permisos administrativos para el recurso. Es decir, podrán acceder hacia el recurso realizando todas las operaciones como super-usuarios. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @. Ejemplo: fulano, mengano, @administradores

directory mask: Es lo mismo que directory mode. Define que permiso en el sistema tendrán los subdirectorios creados dentro del recurso. Ejemplos: 1777

create mask: Define que permiso en el sistema tendrán los nuevos ficheros creados dentro del recurso. Ejemplo: 0644

¿Cómo crear usuarios y asignarles contraseña en SAMBA?

Los usuarios del sistema operativo no pertenecen al grupo de usuarios que poseen privilegios sobre SAMBA, por esta razón hay que crear con unos parámetros los usuarios y contraseñas. Dichos parámetros son:

smbclient -U <nombre_de_usuario> (-U significa Usuario)

smbpasswd <nombre_de_usuario> (y luego de presionar enter les solicita colocar la contraseña)

Próximamente estaré agregando una configuración avanzada integrando el PDC.

Saludos!

Author: Nicolas Ventre

Virtualization architect with more than 15 years implementing complex environments. Security Specialist and Linux instructor