Cómo instalar Samba en CentOS 8

Vamos a ver en este artículo cómo instalar Samba en CentOS 8 paso a paso, teniendo en cuenta el firewall y SELinux, de modo que al final de este tutorial podrás compartir archivos entre tu servidor CentOS 8 y otras máquinas en red, incluso con distintos sistemas operativos.

Antes de instalar Samba en CentOS 8

Para poder seguir esta guía de instalación de Samba en CentOS 8 necesitaremos satisfacer algunos requisitos:

  • Una máquina CentOS 8 actualizada.
  • Un usuario con permisos de sudo o el mismo root.
  • Conexión a Internet.
  • Y otras máquinas en la red local para comprobar el servicio.

También serán necesarias algunas herramientas del sistema que obtendremos de los repositorios del mismo, así que los actualizamos:

~$ sudo yum update

E instalamos los paquetes correspondientes:

~$ sudo yum install -y policycoreutils-python-utils

Cómo instalar Samba en CentOS 8

Vamos a instalar Samba en CentOS 8 usando los paquetes de la distribución, siendo los paquetes que necesitamos samba y samba-client, que instalaremos con yum:

~$ sudo yum install -y samba samba-client

Tras descargarse e instalarse estos paquetes y todas sus dependencias se crean dos nuevos servicios en nuestro sistema CentOS 8, los servicios smb.service y nmb.service, a los que nos podemos referir también como smb y nmb.

Ambos servicios por defecto no arrancan tras la instalación, ni están habilitados para su inicio automático con el sistema, así que será lo primero que hagamos. Habilitamos los servicios para que Samba inicie de forma automática en cada arranque de CentOS 8:

~$ sudo systemctl enable smb nmb

Y a continuación los arrancamos por primera vez para tenerlos disponibles:

~$ sudo systemctl start smb nmb

En cualquier momento podremos comprobar el estado de los servicios de Samba en CentOS 8 con el comando systemctl status smb nmb:

como instalar samba en centos 8

Mientras que el servicio smb se ocupa de compartir los recursos, trabajando sobre los puertos 139 y 445 TCP, el servicio nmb se ocupa del sistema de nombres usando los puertos 137 y 138 UDP.

Configurar el firewall para Samba en CentOS 8

Aunque ya sabemos los puertos implicados en su funcionamiento, para configurar el firewall con Samba en CentOS 8 no es necesario conocerlos, ya que podemos indicar el nombre del servicio al añadir la excepción:

~$ sudo firewall-cmd --zone=public --permanent --add-service=samba

Recargamos la configuración del firewall y los cambios se aplicarán inmediatamente:

~$ sudo firewall-cmd --reload

Con los servicios funcionando y comunicándose con el resto de sistemas de la red, pronto nuestra máquina será visible en los examinadores de red de, por ejemplo, algunas versiones de Windows:

instalar samba en centos 8
CentOS 8 visible desde Windows 7

En unos sistemas se mostrarán las máquinas en red organizadas por grupos y en otros todas juntas, independientemente del grupo; dependerá del sistema operativo y el examinador usado.

Cómo configurar Samba en CentOS 8

Para configurar Samba en CentOS 8 trabajaremos sobre su archivo principal de configuración, smb.conf, ubicado en /etc/samba/.

Una primera configuración rápida podría ser cambiar el nombre del sistema y el grupo al que pertenece. Haremos esto editando smb.conf:

~$ sudo nano /etc/samba/smb.conf

La configuración por defecto es muy sobria, por lo que fácilmente podremos cambiar y añadir ajustes. Para este primer ejercicio nos basaremos en la sección global:

...
[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
...

Debemos cambiar el valor de la directiva workgroup y hacerlo coincidir con el nombre de grupo que nos interese:

...
        workgroup = SEVEN_KINGDOMS
...

Y podemos añadir la directiva netbios name para especificar el nombre:

...   
        netbios name = CentOS 8
...

Guardamos los cambios, cerramos el archivo y recargamos la configuración del servicio nmb, ya que la nueva configuración afecta al servicio de nombres:

~$ sudo systemctl restart nmb

Acceder al servidor Samba en CentOS 8

Si intentamos acceder desde otro sistema al servidor CentOS 8, aunque en el sistema local usemos el mismo nombre de usuario y contraseña, no conseguiremos el acceso.

No podemos acceder, incluso si suministramos un usuario y contraseña válidos de una cuenta de CentOS 8, porque hay que dar de alta en Samba a los usuarios que pueden acceder.

Usuarios de Samba

Para ello, en CentOS 8 usaremos el comando smbpasswd en consola con el parámetro -a para añadir un nuevo usuario y el nombre el usuario:

~$ sudo smbpasswd -a chacho
New SMB password:
Retype new SMB password:
Added user chacho.
~$

Puedes repetir el proceso tantas veces como quieras para dar de alta todos los usuarios que necesites.

Una vez añadido el usuario a la lista de contraseñas de Samba, desde un examinador de Windows accederemos directamente al servidor Samba si coinciden el nombre de usuario y la contraseña, o si al abrirse el diálogo de identificación se introducen unas credenciales válidas.

Conectar desde Windows XP

Si usas Windows XP, debido a la versión tan antigua del protocolo SMB que usa, será necesario añadir estas directivas en la sección global del archivo smb.conf (y reiniciar el servicio smb):

...
min protocol = NT1
ntlm auth = yes
...

Hacer esto hace que la red sea menos segura (por eso no forma parte de la configuración por defecto de Samba), así que habrá que valorar el riesgo.

Guardados los cambios y reiniciado el servicio smb, ahora sí serán visibles las máquinas CentOS 8 desde Windows XP:

Ahora sí que podremos acceder a los recursos compartidos:

como configurar samba en centos 8

En este momento, con la configuración por defecto, hay pocos recursos accesibles, pero si tienes cuenta de usuario en el sistema CentOS 8 al que estás accediendo verás tu carpeta personal.

A no ser que hayas variado la configuración de CentOS 8 lo más probable es que no puedas entrar a tu carpeta personal, ya que la serguridad de SELinux lo impide por defecto. Para permitir el acceso a los directorios de usuario, usaremos el comando setsebool:

~$ sudo setsebool -P samba_enable_home_dirs on

Tras cambiar el valor de este valor booleano de SELinux, el acceso al directorio personal desde Samba está permitido, y además con permisos de escritura:

configuracion de samba en centos 8

Esto es posible porque en la sección homes de smb.conf la directiva read only tiene el valor No:

...
[homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes
...

Obviamente, cambiando el valor a «Yes» el directorio del usuario sería de sólo lectura, por lo que únicamente se podrían realizar operaciones de lectura sobre el contenido.

Configurando un recurso compartido

Vamos a crear un primer recurso compartido al que puedan acceder todos los usuarios de la red, incluidos aquellos que no tienen cuenta en el servidor CentOS 8.

Pondremos una carpeta compartida drivers a disposición de todo el mundo y nos ahorraremos mucho trabajo administrativo de altas de usuarios.

En primer lugar crearemos el directorio en el sistema de archivos de CentOS 8:

~$ sudo mkdir -p /var/samba/drivers

Copia algunos archivos si quieres probarlo a fondo.

A continuación, abrimos smb.conf y añadimos en global esta directiva:

...
        map to guest = bad user
...

Esto quiere decir que cualquier usuario que no se pueda autenticar al acceder al servidor Samba en CentOS 8 sea tratado como anónimo o invitado.

Ahora, al final del archivo añadiremos una sección para nuestra carpeta compartida:

...
[drivers]
        path = /var/samba/drivers
        guest only = yes

No hay mucho que explicar, salvo que el nombre de la sección, entre corchetes, es el que veremos como nombre de la carpeta en pantalla.

Guardados los cambios y reiniciamos el servicio smb.

En caso de tener activado SELinux habrá que definir el contexto adecuado para estos archivos, mediante el comando semanage. Si vamos a crear sucesivos recursos Samba en la carpeta /var/samba/ (o en la que hayas designado) podríamos crear el contexto para esta carpeta, de modo que lo heredarán sus subcarpetas. Pero también podemos aplicar el contexto para cada recurso que creemos:

~$ sudo semanage fcontext -a -t samba_share_t "/var/samba/drivers(/.*)?"

Con el contexto definido, lo aplicamos con restorecon:

~$ sudo restorecon -R /var/samba/drivers/

Ya podemos acceder al recurso compartido y examinar su contenido:

Los invitados verán el nuevo recurso compartido, los usuarios con cuenta en CentOS 8 lo verán junto a su carpeta personal, y todos podrán acceder a la carpeta y copiar o abrir los archivos.

Acceso en modo lectura/escritura

Vamos a darle un giro de tuerca a este recurso compartido. Hasta ahora, todo el mundo accede como invitado, en virtud de esta directiva:

...
        guest only = yes
...

Lo que queremos hacer ahora es que puedan acceder los invitados y los usuarios dados de alta en Samba, de modo que uno de ellos sea administrador de la carpeta (pueda crear, modificar y borrar archivos y otras subcarpetas). Por tanto, tenemos que:

  • Permitir a los usuarios autenticados de Samba.
  • Mantener a los usuarios invitados (no autenticados).
  • Permitir escritura en el recurso compartido.

Estos cambios se reflejarían así en la configuración del recurso compartido:

...
[drivers]
        path = /var/samba/drivers
        valid users = %U
        guest ok = yes
        read only = no
...

Donde %U hace referencia a los nombres de usuario dados de alta en el archivo de contraseñas de Samba.

Sólo nos queda un detalle, y es la forma en la que elegiremos de entre todos los usuarios autenticados de Samba a uno como administrador de la carpeta. Bastará con cambiar en CentOS 8 el propietario de la ruta al recurso y sus archivos:

~$ sudo chown -R chacho:chacho /var/samba/drivers/

Ahora todo el mundo puede acceder a estos archivos en modo lectura, pero un administrador puede modificarlos desde un cliente.

Acceder desde CentOS 8 a otros recursos compartidos

Hasta el momento hemos visto cómo configurar Samba en CentOS 8 para que sus recursos sean compartidos. Ahora veremos cómo desde CentOS 8 podemos acceder a los recursos compartidos de otros sistemas.

Para ello necesitaremos instalar el paquete cifs-utils en CentOS 8:

~$ sudo yum install -y cifs-utils

Supongamos que tenemos un equipo en la red llamado Win7, que comparte una carpeta llamada SAT. La forma de acceder a esa carpeta será montándola como un sistema de archivos tipo CIFS:

~$ sudo mount -t cifs //win7/sat/ /mnt/sat -o username=chacho,password=XXXXXXXX

En el ejemplo anterior se supone que tenemos ya prevista la ruta /mnt/sat donde se montará el sistema de archivos en red.

De esta forma ya tendremos disponibles los archivos en el punto de montaje.

Puedes usar un archivo de credenciales si no quieres especificar usuario y contraseña en la línea de comandos. Podrías crear un archivo para ese servidor concreto:

~$ sudo nano /etc/samba/win7.credentials

Con este contenido:

username=chacho
password=XXXXXXXX

Guardado y cerrado el archivo, nos aseguramos de su confidencialidad:

~$ sudo chmod 600 /etc/samba/win7.credentials

Y podemos montar el recurso compartido de forma más discreta:

~$ sudo mount -t cifs //win7/sat/ /mnt/sat -o credentials=/etc/samba/win7.credentials

Si queremos que este recurso esté disponible cada vez que inicie CentOS 8, lo podemos incluir en el archivo fstab:

//win7/sat      /mnt/sat        cifs    credentials=/etc/samba/win7.credentials,_netdev,x-systemd.automount      0       0

En cada inicio tendremos los recursos compartidos remotos montados y listos para trabajar en CentOS 8.

Conclusión

Ahora que sabes cómo instalar y configurar Samba en CentOS 8 ya puedes compartir achivos en red entre sistemas operativos muy distintos, tanto sirviendo como accediendo a recursos compartidos. Todo ello teniendo en cuenta el firewall y especialmente SELinux.

En caso de preguntas, dudas, sugerencias… nada mejor que un comentario.

¡Apoya este sitio!

¿Has conseguido tu objetivo siguiendo esta guía de instalación y configuración de Samba en CentOS 8? Si es así y quieres agradecérnoslo, puedes hacerlo dejando 1 $ de propina desde PayPal para una CocaCola:

¡Gracias!

Valora esta entrada

5/5 - (1 voto)

Deja un comentario