Samba es un servicio que nos permite compartir archivos en red, simple y sencillo. Ahora no solo archivos sino tambien impresoras, pero esto ultimo sinceramente en redes bajo windows, me quedo con el 2do.
Pero enfoquemonos en Samba es un protocolo abierto que tiene mas de 20 años brindando estos servicios en redes chicas, medianas y grandes.
Es un modelo cliente servidor, como servidor podemos usar ya sea Unix o Linux, y como clientes hay mas variedad. Windows tiene su propia version del protocolo por ello cuando configuran samba dentro de ambientes con Windows no hay necesidad de instalar ningun cliente, su protocolo privado de samba o llamado smb es totalmente compatible.
De lado de clientes Unix o Linux ahi que instalar el cliente nada mas y podremos acceder a esos compartidos que nos ofrece el servicio.
Hoy en dia samba es clave si deseamos emular un directorio activo, no totalmente pero si muchas de las funciones escenciales como los son los equipos, usuarios y contraseñas, pero hoy hablaremos de samba como servidor de archivos en una red tipo WORKGROUP para que lo vean trabajar.
Asi que conforme Windows siga ofreciendo el servicio de compartir archivos, estara samba, por ello es un sistema muy solido por el tiempo que tiene el codigo, estable y esta en constante actualizacion.
Samba no esta limitado solo a nivel LAN, puede trabajar tambien con VLANs, atraves de VPN’s, pero ya a nivel WAN no es recomendable, requiere el servidor 2 puertos especificos TCP: 139 y 445 para poder responder a los clientes, solamente.
Ejemplo Practico: Red WORKGROUP
Lo que vamos a llevar a cabo es configurar samba en un equipo ejecutando RockyLinux 9 asi que esto aplica a la familia de RedHat. Vamos a introducirlo en una red tipo WORKGROUP con 2 clientes windows.
- Hostname: BOS-CLIENTE3 Departamento de Sistemas Windows 10
- Hostname: BOS-MAQUINA10 Departamento de Contabilidad Windows 11
Vamos a crear 3 compartidos con samba.
- Publico: Todos puede accesar
- Contabilidad Solo departamento de Contabilidad
- Sistemas Solo departamento de Sistemas.
La Red LAN para este caso es: 192.168.9.0/24
El hostname del servidor samba es: BOS-SAMBA y es el mismo Netbios name que le vamos a asignar. El dominio de esta red es: BOS.local.
Antes de iniciar la configuracion de samba, RockyLinux debe cumplir los siguientes requisitos:
- Estar actualizado.
- Selinux deshabilitado
- Zona de horario acorde a su ubicacion.
- Firewal encendido
- Configurado el archivo /etc/hosts
- Configurado el archivo /etc/hostname
Paso para la implementacion.
Paso 1; Instalar los siguientes paquetes.
dnf install samba samba-client samba-common -y

Lo mas importante es que no marque error y se instalen todos los paquetes requeridos.
Paso 2; Crear directorio para compartido ‘Publico’.
cd /opt
mkdir publico
chmod -R 777 publico/
chown -R nobody:nobody publico/
Paso 3; Configurar samba seccion General y el compartido llamado ‘Publico’

El archivo de configuracion de samba se llama smb.conf y se localiza en:
/etc/samba
Entonces lo que vamos hacer es iniciar con un archivo en blanco y olvidarnos de la configuracion que nos da de fabrica. Para esto hacemos lo siguiente.
cd /etc/samba
mv smb.conf smb.conf.default
vi smb.conf
Yo me siento comodo con el editor ‘vi’ y como instale RockyLinux con la version minina no tengo las bondades de nano o vim, si ustedes quieren instalar nano u otro editor mas como adelante.
[global]
workgroup = WORKGROUP
security = user
netbios name = BOS-SAMBA
passdb backend = tdbsam
server string = Samba 4.18.6
map to guest = Bad User
hosts allow = 192.168.9.0/255.255.255.0
log level = 3
[Publico]
comment = Compartido Publico No se Respalda
path = /opt/publico #
browsable = yes
writable = yes
guest ok = yes
guest only = yes
force create mode = 0777
force directory mode = 0777
read only = no
force group = nobody
force user = nobody
Con esta configuracion vamos a iniciar, si ustedes usan otro segmento de red aqui lo pueden agregar sin problema.
En samba todo lo que esta despues de # es un comentario
Quiero mencionar que samba utiliza de fabrica un formato de base de datos tipo tdbsam que viene siendo local en el mismo equipo, toda su informacion sobre usuarios, grupos ahi la almacena, por ello el campo:
passdb backend = tdbsam
Este es un configuracion para un servidor solo lo que se conoce como “Stand alone” no depende de nadie mas en al red, esta por su cuenta.
Asi que vamos a arrancar con esta configuracion.
Paso 4 ; Revisamos la sintaxis.
Para esto samba cuenta con una herramienta llamada ‘testparm‘ la cual lleva a cabo esta labor, si encuentra alguna anomalia nos la arrojara en pantalla si no, despliega la configuracion.

Perfecto, no presento ningun problema.
Paso 5; Iniciar los servicios.
Ha Samba lo conforman 2 servicios: smb y nmb.
smb se encarga de todo lo relacionado a los compartidos, acceso y usuarios.
nmb se encara de la todo lo relacionado con el protocolo netbios.
Por ellos ambos forman parte del protocolo samba, asi que necesitamos encender ambos.
systemctl start smb
systemctl start nmb
Otro detalle, recuerden que de lado de RedHat, los servicios no los habilita para que inicien cuando el servidor arranca, por ello ahi indicarselo.
systemctl enable smb
systemctl enable nmb
Por ultimo para validar que el servicio esta operando correctamente, el estatus.
systemctl status smb

systemctl status nmb

Listo, ambos servicios operando.
Paso 6; Abrir Puertos en Firewall del Servidor.
RockyLinux tiene habilitado su firewall, asi que es necesario abrir el servicio de samba con estos 2 comandos.
firewall-cmd --add-service=samba
firewall-cmd --runtime-to-permanent

Listo.
Paso 7: Verificar que Samba sea el “Master Browser” de la red.
En una red tipo Workgroup, uno de los equipos sera quien tenga esta funcion, cuando Samba arranca el envia un paquete con ciertos datos donde les indica que el estara a cargo de esta labor, por lo regular sabe como dar la ornde, de lo contrario alguno de los otros equipo lo hara, aqui es donde entra la labor del protocolo Netbios.
Veamos los logs de samba, el servicio a cargo de esto es el “nmb”. Veamos tus ultimas lineas de su log.
tail -n 25 /var/log/samba/log.nmbd

Ahi esta el aviso, samba es el “Master Browser”, en una red con directorio activo, este ultimo se encarga de esta labor, claro con otros protocolos pero siempre un equipo en la red tiene esta labor.
Paso 8; Pruebas Fuego 1.
Ahora vamos a los clientes y revisamos que se puedan acceder los compartidos, crear directorios.

Aqui hay 3 maneras de acceder a el servidor, ya sea por nombre corto, nombre largo de equipo que es lo mas profesional o por IP, para lo primero importante que su DNS funcione, recuerden que samba es el “Master Browser” de la red asi que el trata de responder las peticiones de los clientes cuando se haga uso su nombre corto, ahi entra en juego netbios.
Esto lo podemos validar atraves del cmd.

Si desean por esta manera deben revisar su DNS, es algo que no voy a tratar en este post ya que seria para otro post dedicado a eso.
En mi caso por nombre corto funciona me responde, ahora veamos el nombre largo.

Tanto nombre corto como largo funcionan.
Ahora voy a crear una carpeta que se llame “reportes-it” en el directorio publico.

Ahora veamos que permisos tiene esa misma carpeta en Linux.

Observen como se guardo con el usuario ‘nobody‘ y el grupo ‘nobody‘.
Ahora veamos el estatus del servidor samba con el comando ‘smbstatus‘.

Ahi podemos ver el cliente3 conectado, su direccion de red.
Si este cliente pudo conectarse el resto deberia poder, ya si tiene problemas seria cosa de revisar sus firewalls o AV que pudieran causarles problemas de comunicacion, de lado del servidor podemos confirmar que hay comunicacion, modelo cliente-servidor.
Paso 9; Agregar compartidos por Departamento, Usuario+Contraseña.
Ahora por ultimo vamos a agregar 2 compartidos, uno para el departamento sistemas y otro para contabilidad, asi los nombraremos.
Ahora aqui vamos a requerir que de lado de los clientes, cada uno acceda a su equipo con contraseña, la cual vamos a agregar a Linux y samba, todos deben estar sincronizados.
Usuarios “Windows”<=>”Linux”<=>”Samba” SINCRONIZADOS
Samba soporta distintos medios de autenticación, pero como en esta ocasion es un servidor independiente “Stand Alone” samba usara su propia base de datos para almacenar los usuarios y deben estar sincronizados con los de Linux.
passdb backend = tdbsam
Este parametro es donde le indicamos que use su propia base de datos. Recuerden que tenemos 2 usuarios:
cliente3 Depto. de Sistemas.
cliente10 Depto. de Contabilidad.
Sigan los siguientes pasos.
useradd -M -s /sbin/nologin cliente3
useradd -M -s /sbin/nologin cliente10
passwd cliente3
passwd cliente10
smbpasswd -a cliente3
smbpasswd -a cliente10

Ahora crearemos los grupos y agregaremos cada usuarios a su respectivo departamento.
groupadd contabilidad groupadd sistemas usermod -aG contabilidad cliente10 usermod -aG sistemas cliente3

Revisemos los grupos creados y asignaciones con el comando ‘vigr’.

Puse las ultimas lineas, ahi podemos los grupos creados y los usuarios agregados a esos grupos.
Paso 10; Creacion de Compartidos.
Ahora vamos a crear los compartidos para cada departamento y aplicar sus respectivos permisos.
cd /opt
mkdir contabilidad
mkdir sistemas
chgrp -R contabilidad contabilidad/
chgrp -R sistemas sistemas/
chmod -R 0770 contabilidad/
chmod -R 0770 sistemas/

Paso 11; Agregar Compatidos a Samba.
Abrimos de nuevo la configuracion de samba y le agregamos la siguiente configuracion:
Contabilidad
[Contabilidad]
comment = Compartido Depto. Contabilidad
path = /opt/contabilidad
valid users = root cliente3 @contabilidad
write list = root cliente3 @contabilidad
browsable = yes
writable = yes
guest ok = no
force create mode = 0770
force directory mode = 0770
read only = no
force group = contabilidad
[Sistemas]
comment = Compartido Depto. Sistemas
path = /opt/sistemas
valid users = root @sistemas
write list = root @sistemas
read only = no
browsable = yes
writable = yes
guest ok = no
force create mode = 0770
force directory mode = 0770
force group = sistemas
Prueba de sintaxis.
testparm

Listo, la configuracion esta correcta.
Paso 12; Reinicia el servicio de smb.
Solo requerimos reiniciar el servicio de smb.
systemctl restart smb
Ahora su estatus para ver si no se nos paso algo y confirmar el servicio este en ejecucion.
systemctl status smb

Listo, samba operando correctamente.
Paso 13; Pueba de fuego 2.
Lo primero que vamos a validar es que podamos ver en la red los 3 compartidos que esta administrando samba.

Perfecto, este es el usuario de sistemas, vamos a acceder a su respectivo compartido y almacenar un listado de archivos.

Vamos a crear un directorio en el compartido de sistemas llamado “archivos” y ahi vamos a mover todos estos archivos.

Listo.
Ahora veamos el usuarios de contabilidad llamado ‘cliente10’, con el lo que vamos a probar son los acceso, el no debe poder accesar a el compartido de sistemas.

Perfecto, samba le esta solicitando un usuario con derecho a accesar ese compartido.
Ahora validamos lo mismo con el usuario de sistemas, este no debe poder acceder a el compartido de contabilidad.

Perfecto, si no formas parte de ese departamento samba rechazara tu acceso, asi podemos estar seguros que nadie fuera del departamento tiene acceso a su recursos.
Ahora en la maquina de contabilidad, vamos a crear un directorio en su compartido llamado ‘evidencias’ y vamos mover archivos a esa carpeta.
Todos estos archivos los vamos a mover.


Listo, nuestros compartidos estan funcionando.
Paso 14; Mapear Directorios.
Publico Letra P
Contabilidad Letra Q
Sistemas Letra R.
Iniciamos con contabilidad.



Ahora asi quedaria el equipo del usuario de sistemas.

Listo.
Fin.
Resumen
Hemos terminado, esta configuracion debe funcionar en la familia RedHat, Fedora, AlmaLinux, RedHat sin problemas.
Como pueden ver samba no es complicado configurar, pero si ahi que entender sus parametros, es un programa que tiene muchos de ellos, por ello es un servicio para compartir archivos en red muy completo.
De igual manera, ya en produccion recuerden que samba se ejecute en un equipo que este a la altura para que samba tenga un buend desempeño, es servidor de archivos, tanto el equipo como la infraestructura deben tener buen rendimiento.
No porque digan que Linux o Unix corre en equipos viejos, vayan y lo pongan a trabajar en uno y tenga pesimo servicio y se vayan a quejar por no tomar en cuenta el equipo.
Otro detalle mas, habra situaciones donde samba este conectado aun switch de 1GB y los clientes en switches de 100Mb, aqui ya se pierde toda la magia de samba, todo trabajara a 100Mb.
Son detalles a tomar en cuenta para que samba tenga un buen rendimiento.
Recuerden que en modo WORKGROUP ya no importa si windows es Pro, Home, Lite.
Para otros clientes como MACOS, Android u otros Unix o Linux solo requerimos instalar el cliente de samba para acceder a sus recursos.
El que avisa no es cobarde.
Bueno espero te sirva este post y puedas configurar samba en RockyLinux o sus hermanos, dejame tus dudas al respecto o si hay errores en el post tambien, saludos!!!
Jose Hernandez