Cuando trabajamos con diversos sistemas operativos podemos ver como el sistema de archivos afecta el uso de estos, por ejemplo, Windows hace uso de NTFS. Linux maneja EXT4, macOS utiliza APFS y estos sistemas de archivos impactan en la manera como se leen y se escriben los datos, un archivo de Windows, como un punto .exe, no puede ser ejecutado en Linux, y no solo archivos ejecutables sino archivos de todo tipo, pero esto no debe ser más un problema ya que para ayudar a trabajar con archivos entre ambos sistemas disponemos de Samba.
Samba se ha desarrollado como una serie de programas que permiten interactuar entre sistemas Windows y Linux con grandes prestaciones. Samba es un software libre que posee licencia de GNU General Public License y permite integrar servidores y escritorios Linux/Unix con entornos de Active Directory y aún más allá, es posible usar Samba como un controlador de dominio o bien como parte activa de un dominio normal, con Samba es posible:
- Disponer de servicios de archivo e impresión
- Autenticación y autorización de usuarios y archivos
- Ejecutar resolución de nombres
- Smbclient: este es el cliente SMB, su función es usarse para establecer una conexión a un recurso compartido SMB remoto, transferir archivos o enviar archivos a recursos compartidos
- Nmblookup: este es un cliente de servicio de nombres NetBIOS., con esta utilidad es posible encontrar nombres NetBIOS en la red, buscar las direcciones IP o bien consultar un equipo remoto con el fin de tener acceso a la lista de nombres de dicho dispositivo
- Swat: con la herramienta de administración web Samba, es posible configurar Samba de forma remota a través de un navegador web
Ahora veamos como instalar Samba en RHEL, CentOS o Fedora, en este caso usare CentOS 9 Stream.
Cómo instalar Samba en Samba en RHEL, CentOS o Fedora
Abrimos el equipo y vamos a la terminal:
En la terminal instalamos Samba y sus componentes con la siguiente orden:
dnf install samba samba-common samba-client
Veremos lo siguiente:
Ingresamos la letra "s" para confirmar la descarga:
Esperamos que la descarga llegue a su final, luego será necesario ingresar la letra S para aceptar la instalación de la clave GPG:
Al finalizar este proceso veremos lo siguiente:
Ejecutamos las siguientes líneas en suden para crear la carpeta compartida entre ambos sistemas y otorgar los permisos necesarios:
mkdir -p /srv/carpeta/data chmod -R 755 /srv/carpeta/data chown -R nobody:nobody /srv/carpeta/data chcon -t samba_share_t /srv/carpeta/data
Vamos a crear una copia del archivo de configuración de Samba:
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
Abrimos el archivo de configuración de Samba con la siguiente linea:
nano /etc/samba/smb.conf
Allí ingresamos lo siguiente:
[global] workgroup = WORKGROUP server string = Samba Server %v netbios name = rocky-8 security = user map to guest = bad user dns proxy = no ntlm auth = true [Public] path = /srv/carpeta/data browsable =yes writable = yes guest ok = yes read only = no
Esto con el fin de permitir los accesos.
Guardamos los cambios usando la combinación de teclas siguiente:
Ctrl + O
Salimos del editor usando:
Ctrl + X
Verificamos la configuración de Samba con el comando:
Testparm
Pulsamos la tecla Enter para completar la acción:
Iniciamos y habilitamos SMB:
systemctl start smb systemctl enable smb
Iniciamos y habilitamos NMB:
systemctl start nmb systemctl enable nmb
Comprobamos el estado de SMB:
systemctl status smb
Ahora comprobamos el estado de NMB:
systemctl status nmb
Es momento de permitir el acceso remoto desde Windows hacia Linux, obtenemos la información de Samba en el Firewall:
firewall-cmd --info-service samba
Añadimos Samba al Firewall:
firewall-cmd --permanent --add-service=samba
Actualizamos el Firewall:
firewall-cmd –reload
Comprobamos el Firewall:
firewall-cmd --list-services
Ejecutamos "ip add" para ver la IP del equipo:
En un equipo con Windows abrimos Ejecutar:
Ingresamos la IP del equipo remoto en la ventana de Ejecutar:
Pulsamos en Aceptar y tendremos acceso al equipo remoto:
En CentOS o el sistema usado ve a la carpeta de Samba:
cd /srv/carpeta/data
Ejecuta:
touch file{1..3}.txt
Esto creará 3 archivos de texto:
Ve a la carpeta remota y al acceder a la carpeta verás esos archivos disponibles allí:
Ahora, es posible optimizar la seguridad de acceso al recurso compartido, para ello vamos a crear un usuario de SMB y asignarle contraseña:
useradd smbusuario smbpasswd -a smbusuario
Vamos a crear un grupo de SMB y añadimos el usuario creado allí:
sudo groupadd smb_grupo sudo usermod -g smb_grupo smbusuario
Vamos a crear la carpeta privada y asignar los permisos a esta:
mkdir -p /srv/carpeta/private chmod -R 770 /srv/carpeta/private chcon -t samba_share_t /srv/carpeta/private chown -R root:smb_group /srv/carpeta/private
Accedemos al archivo de configuración de Samba:
nano /etc/samba/smb.conf
Allí ingresamos lo siguiente:
[Private] path = /srv/carpeta/private valid users = @smb_grupo guest ok = no writable = no browsable = yes
Guardamos los cambios usando la combinación de teclas siguiente:
Ctrl + O
Salimos del editor usando:
Ctrl + X
Reiniciamos Samba y sus servicios:
sudo systemctl restart smb sudo systemctl restart nmb
Al ir a Windows cuando se intente acceder al equipo remoto veremos lo siguiente:
Allí ingresamos el usuario de SMB creado y su contraseña:
Pulsamos en Aceptar y se tendrá acceso a la carpeta privada:
Solvetic te ha explicado en detalle cómo instalar Samba en CentOS, RHEL o Fedora y así tener interacción entre Windows y alguno de estos sistemas.