Cómo instalar Samba en CentOS 8

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 y otras máquinas 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.
  • Si tienes SELinux activado, el paquete policycoreutils-python-utils.
  • 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.

Cómo instalar Samba en CentOS 8

Vamos a instalar Samba en CentOS 8 usando los paquetes de la distribución, por lo que el priemer paso es actualizar las listas de los repositorios, e incluso los paquetes ya instalados:

~$ sudo yum update -y

Los paquetes que necesitamos son samba y samba-client, los instalaremos con yum:

~$ sudo yum install -y samba samba-client

Tras descargarse e instalarse el paquete samba 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 el puerto 137 UDP.

Configurar el firewall para Samba en CentOS 8

Aunque ya sabemos los puertos implicados en su funcionamiento, para configurar 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, sistemas Windows:

instalar samba en centos 8
CentOS 8 visible desde Windows XP y Windows 7

En algunos sistemas se mostrarán las máquinas organizadas por grupos y en otras todas juntas, independientemente del grupo.

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. Para ello editaremos 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. Se nos pedirá identificarnos:

configurar samba en centos 8

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.

Para ello, en CentOS 8 usaremos el comando smbpasswd en consola:

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

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.

Si usas Windows XP añade esta directiva en la sección global del archivo smb.conf (y reinicia el servicio smb):

ntlm auth = yes

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 reiniciado el servicio, probamos a acceder:

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 que reconoce 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/

Y dándole permiso de escritura:

~$ sudo chmod -R u+w /var/samba/drivers/

Ahora todo el mundo puede acceder a estos archivos, pero un administrador puede, en teoría, modificarlos desde un cliente. «En teoría» porque si tienes activado SELinux, no dejará escribir en la ruta aunque el propietario y los permisos estén bien.

Hay que aplicar un contexto de recurso Samba de lectura/escritura a la ruta /var/samba/drivers/ y su contenido:

~$ sudo chcon -R -t samba_share_t /var/samba/drivers/

Y hay que hacer que el contexto sea permanente:

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

Ahora todo el mundo puede acceder en modo lectura y un usuario puede hacer cambios remotamente, dede otro sistema.

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/ -o username=chacho,password=XXXXXXXX

Y ya tendrás en el punto de montaje disponibles los archivos.

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/ -o credentials=/etc/samba/win7.credentials

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

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

Y preparamos el punto de montaje:

~$ sudo mkdir /mnt/sat

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, cualquier mínima aportación para mantener este sitio on line y para la elaboración de más guías y tutoriales de CentOS 8 y Samba es bienvenida. ¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 votos, promedio: 5,00 de 5)
Cargando…

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies