Configuración de Samba y configuración de FirewallD y SELinux para permitir el uso compartido de archivos en clientes Linux / Windows - Parte 6


Dado que las computadoras rara vez funcionan como sistemas aislados, es de esperar que, como administrador o ingeniero de sistemas, sepa cómo configurar y mantener una red con múltiples tipos de servidores.

En este artículo y en el siguiente de esta serie, repasaremos los aspectos básicos de la configuración de servidores Samba y NFS con clientes Windows/Linux y Linux, respectivamente.

Este artículo definitivamente será útil si se le pide que configure servidores de archivos en entornos corporativos o empresariales donde es probable que encuentre diferentes sistemas operativos y tipos de dispositivos.

Dado que puede leer sobre los antecedentes y los aspectos técnicos de Samba y NFS en todo Internet, en este artículo y el siguiente vamos directamente al grano con el tema en cuestión.

Paso 1: Instalar el servidor Samba

Nuestro entorno de prueba actual consta de dos cajas RHEL 7 y una máquina con Windows 8, en ese orden:

1. Samba / NFS server [box1 (RHEL 7): 192.168.0.18], 
2. Samba client #1 [box2 (RHEL 7): 192.168.0.20]
3. Samba client #2 [Windows 8 machine: 192.168.0.106]

En box1, instale los siguientes paquetes:

# yum update && yum install samba samba-client samba-common

En box2:

# yum update && yum install samba samba-client samba-common cifs-utils

Una vez que se complete la instalación, estamos listos para configurar nuestro recurso compartido.

Paso 2: Configurar el uso compartido de archivos a través de Samba

Una de las razones por las que Samba es tan relevante es porque proporciona servicios de archivo e impresión a clientes SMB/CIFS, lo que hace que esos clientes vean el servidor como si fuera un sistema Windows (debo admitir que tiendo a ponerme un poco emocional mientras escribiendo sobre este tema, ya que fue mi primera configuración como nuevo administrador del sistema Linux hace algunos años).

Para permitir la colaboración en grupo, crearemos un grupo llamado finanzas con dos usuarios (usuario1 y usuario2) con el comando useradd y un directorio/finanzas en box1.

También cambiaremos el propietario del grupo de este directorio para financiar y estableceremos sus permisos en 0770 (permisos de lectura, escritura y ejecución para el propietario y el propietario del grupo):

# groupadd finance
# useradd user1
# useradd user2
# usermod -a -G finance user1
# usermod -a -G finance user2
# mkdir /finance
# chmod 0770 /finance
# chgrp finance /finance

Paso 3: Configurar SELinux y Firewalld

En preparación para configurar/finance como un recurso compartido de Samba, tendremos que deshabilitar SELinux o establecer los valores de contexto de seguridad y booleanos adecuados de la siguiente manera (de lo contrario, SELinux evitará que los clientes accedan al recurso compartido):

# setsebool -P samba_export_all_ro=1 samba_export_all_rw=1
# getsebool –a | grep samba_export
# semanage fcontext –at samba_share_t "/finance(/.*)?"
# restorecon /finance

Además, debemos asegurarnos de que el firewalld permita el tráfico de Samba.

# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload

Paso 4: Configurar Samba Share

Ahora es el momento de sumergirse en el archivo de configuración /etc/samba/smb.conf y agregar la sección para nuestro recurso compartido: queremos que los miembros del grupo de finanzas puedan navegar por el contenido de/finance y guardar/crear archivos o subdirectorios en él (que de forma predeterminada tendrán sus bits de permiso establecidos en 0770 y finanzas será el propietario de su grupo):

[finance]
comment=Directory for collaboration of the company's finance team
browsable=yes
path=/finance
public=no
valid [email protected]
write [email protected]
writeable=yes
create mask=0770
Force create mode=0770
force group=finance

Guarde el archivo y luego pruébelo con la utilidad testparm. Si hay algún error, el resultado del siguiente comando indicará lo que necesita corregir. De lo contrario, mostrará una revisión de la configuración de su servidor Samba:

Si desea agregar otro recurso compartido que esté abierto al público (es decir, sin autenticación alguna), cree otra sección en /etc/samba/smb.conf y, bajo el nombre del nuevo recurso compartido, copie la sección anterior, solo cambiando public u003d no a public u003d yes y sin incluir los usuarios válidos y las directivas de lista de escritura.

Paso 5: Agregar usuarios de Samba

A continuación, deberá agregar user1 y user2 como usuarios de Samba. Para hacerlo, utilizará el comando smbpasswd, que interactúa con la base de datos interna de Samba. Se le pedirá que ingrese una contraseña que luego utilizará para conectarse al recurso compartido:

# smbpasswd -a user1
# smbpasswd -a user2

Finalmente, reinicie Samba, habilite el servicio para que se inicie en el arranque y asegúrese de que el recurso compartido esté realmente disponible para los clientes de red:

# systemctl start smb
# systemctl enable smb
# smbclient -L localhost –U user1
# smbclient -L localhost –U user2

En este punto, el servidor de archivos Samba se ha instalado y configurado correctamente. Ahora es el momento de probar esta configuración en nuestros clientes RHEL 7 y Windows 8.

Paso 6: Montaje de Samba Share en Linux

Primero, asegúrese de que el recurso compartido de Samba sea accesible desde este cliente:

# smbclient –L 192.168.0.18 -U user2

(repita el comando anterior para el usuario1)

Como cualquier otro medio de almacenamiento, puede montar (y luego desmontar) este recurso compartido de red cuando sea necesario:

# mount //192.168.0.18/finance /media/samba -o username=user1

(donde/media/samba es un directorio existente)

o permanentemente, agregando la siguiente entrada en el archivo/etc/fstab:

//192.168.0.18/finance /media/samba cifs credentials=/media/samba/.smbcredentials,defaults 0 0

Donde el archivo oculto /media/samba/.smbcredentials (cuyos permisos y propiedad se han establecido en 600 y root: root, respectivamente) contiene dos líneas que indican el nombre de usuario y la contraseña de una cuenta a la que se le permite usar el recurso compartido:

username=user1
password=PasswordForUser1

Finalmente, creemos un archivo dentro de/finance y verifiquemos los permisos y la propiedad:

# touch /media/samba/FileCreatedInRHELClient.txt

Como puede ver, el archivo se creó con permisos 0770 y la propiedad se estableció en user1: finance.

Paso 7: Montaje de Samba Share en Windows

Para montar el recurso compartido de Samba en Windows, vaya a Mi PC y seleccione Computadora, luego Mapear unidad de red. A continuación, asigne una letra para la unidad que se mapeará y marque Conectar con diferentes credenciales (las capturas de pantalla a continuación están en español, mi idioma nativo):

Finalmente, creemos un archivo y verifiquemos los permisos y la propiedad:

# ls -l /finance

Esta vez, el archivo pertenece al usuario2 ya que esa es la cuenta que usamos para conectarnos desde el cliente de Windows.

Resumen

En este artículo hemos explicado no solo cómo configurar un servidor Samba y dos clientes usando diferentes sistemas operativos, sino también cómo configurar firewalld y SELinux en el servidor para permitir las capacidades de colaboración de grupo deseadas.

Por último, pero no menos importante, permítame recomendarle la lectura del página de manual de smb.conf para explorar otras directivas de configuración que pueden ser más adecuadas para su caso que el escenario descrito en este artículo.

Como siempre, siéntase libre de dejar un comentario usando el formulario a continuación si tiene algún comentario o sugerencia.