Cómo instalar Samba en Ubuntu para compartir archivos en Windows


Samba es un software gratuito/de código abierto y de uso popular para compartir archivos y servicios de impresión entre sistemas similares a Unix, incluidos hosts Linux y Windows en la misma red.

En esta guía, mostraremos cómo configurar Samba4 para compartir archivos básicos entre sistemas Ubuntu y máquinas Windows. Cubriremos dos escenarios posibles: anónimo (no seguro) y el intercambio seguro de archivos.

Tenga en cuenta que a partir de la versión 4.0, Samba se puede utilizar como controlador de dominio (DC) de Active Directory (AD). Hemos organizado una serie especial para configurar Samba4 Active Directory Domain Controller, que comprende temas clave en Ubuntu, CentOS y Windows.

  1. Configuración del controlador de dominio de Active Directory Samba4

Instalar y configurar Samba en Ubuntu

El servidor Samba está disponible para instalar desde los repositorios predeterminados de Ubuntu usando la herramienta de administrador de paquetes apt como se muestra.

$ sudo apt install samba samba-common python-dnspython

Una vez instalado el servidor samba, ahora es el momento de configurar el servidor samba como: intercambio de archivos seguro, anónimo y no seguro.

Para esto, necesitamos editar el archivo de configuración principal de Samba /etc/samba/smb.conf (que explica varias directivas de configuración).

Primero haga una copia de seguridad del archivo de configuración de samba original de la siguiente manera.

$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orig

Luego, procederemos a configurar samba para servicios de intercambio de archivos anónimos y seguros como se explica a continuación.

Importante: antes de continuar, asegúrese de que la máquina con Windows esté en el mismo grupo de trabajo que se configurará en el servidor de Ubuntu.

Inicie sesión en su máquina con Windows, haga clic derecho en “Esta PC” o “Mi PC” → Propiedades → Configuración avanzada del sistema → Nombre de la computadora para verificar el grupo de trabajo.

Alternativamente, abra el símbolo del sistema y visualícelo ejecutando el siguiente comando y busque "dominio de la estación de trabajo".

>net config workstation

Una vez que conozca su grupo de trabajo de Windows, es hora de avanzar y configurar el servidor samba para compartir archivos.

Uso compartido anónimo de archivos de Samba

Primero comience creando un directorio samba compartido donde se almacenarán los archivos.

$ sudo mkdir -p /srv/samba/anonymous_shares

Luego, establezca los permisos adecuados en el directorio.

$ sudo chmod -R 0775 /srv/samba/anonymous_shares
$ sudo chown -R nobody:nogroup /srv/samba/anonymous_shares

Ahora abra el archivo de configuración.

$ sudo vi /etc/samba/smb.conf
OR
$ sudo nano /etc/samba/smb.conf

A continuación, edite o modifique la configuración de la directiva como se describe a continuación.

global]
	workgroup = WORKGROUP
	netbios name = ubuntu
	security = user
[Anonymous]
	comment = Anonymous File Server Share
	path = /srv/samba/anonymous_shares
	browsable =yes
	writable = yes
	guest ok = yes
	read only = no
	force user = nobody

Ahora verifique la configuración actual de samba ejecutando el siguiente comando.

$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "syslog" option is deprecated
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
	netbios name = UBUNTU
	server string = %h server (Samba, Ubuntu)
	server role = standalone server
	map to guest = Bad User
	obey pam restrictions = Yes
	pam password change = Yes
	passwd program = /usr/bin/passwd %u
	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
	unix password sync = Yes
	syslog = 0
	log file = /var/log/samba/log.%m
	max log size = 1000
	dns proxy = No
	usershare allow guests = Yes
	panic action = /usr/share/samba/panic-action %d
	idmap config * : backend = tdb

[printers]
	comment = All Printers
	path = /var/spool/samba
	create mask = 0700
	printable = Yes
[print$]
	comment = Printer Drivers
	path = /var/lib/samba/printers
	browseable = No
[Anonymous]
	comment = Anonymous File Server Share
	path = /srv/samba/anonymous_shares
	force user = nobody
	read only = No
	guest ok = Yes

Luego reinicie los servicios de Samba para efectuar los cambios anteriores.

$ sudo systemctl restart smbd   [Systemd]
$ sudo service smbd restart     [Sys V]

Vaya a la máquina con Windows y abra "Red" desde una ventana del Explorador de Windows. Haga clic en el host de Ubuntu (TECMINT para nuestro caso), o intente acceder al servidor de samba usando su dirección IP.

\2.168.43.168

Nota: Utilice el comando ifconfig para obtener la dirección IP de su servidor Ubuntu.

Luego abra el directorio Anónimo e intente agregar archivos allí para compartir con otros usuarios.

Uso compartido seguro de archivos de Samba

Para proteger con contraseña un recurso compartido de samba, debe crear un grupo "smbgrp" y establecer una contraseña para cada usuario. En este ejemplo utilizo aaronkilik como usuario y contraseña como "tecmint".

$ sudo addgroup smbgrp
$ sudo usermod aaronkilik -aG smbgrp
$ sudo smbpasswd -a aaronkilik

Nota: El modo de seguridad de samba: security u003d user requiere que los clientes ingresen un nombre de usuario y contraseña para conectarse a los recursos compartidos.

Las cuentas de usuario de Samba están separadas de las cuentas del sistema, sin embargo, opcionalmente puede instalar el paquete libpam-winbind que se usa para sincronizar los usuarios del sistema y las contraseñas con la base de datos de usuarios de Samba.

$ sudo apt install libpam-winbind

Luego cree el directorio seguro donde se guardarán los archivos compartidos.

$ sudo mkdir -p /srv/samba/secure_shares

A continuación, establezca los permisos adecuados en el directorio.

$ sudo chmod -R 0770 /srv/samba/secure_shares
$ sudo chown -R root:smbgrp /srv/samba/secure_shares

Ahora abra el archivo de configuración.

$ sudo vi /etc/samba/smb.conf
OR
$ sudo nano /etc/samba/smb.conf

A continuación, edite o modifique la configuración de la directiva como se describe a continuación.

[Secure]
	comment = Secure File Server Share
	path =  /srv/samba/secure_shares
	valid users = @smbgrp
	guest ok = no
	writable = yes
	browsable = yes

Al igual que antes, ejecute este comando para ver su configuración actual de samba.

$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: The "syslog" option is deprecated
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
	netbios name = UBUNTU
	server string = %h server (Samba, Ubuntu)
	server role = standalone server
	map to guest = Bad User
	obey pam restrictions = Yes
	pam password change = Yes
	passwd program = /usr/bin/passwd %u
	passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
	unix password sync = Yes
	syslog = 0
	log file = /var/log/samba/log.%m
	max log size = 1000
	dns proxy = No
	usershare allow guests = Yes
	panic action = /usr/share/samba/panic-action %d
	idmap config * : backend = tdb
[printers]
	comment = All Printers
	path = /var/spool/samba
	create mask = 0700
	printable = Yes
[print$]
	comment = Printer Drivers
	path = /var/lib/samba/printers
	browseable = No
[Anonymous]
	comment = Anonymous File Server Share
	path = /srv/samba/anonymous_shares
	force user = nobody
	read only = No
	guest ok = Yes
[Secure]
	comment = Secure File Server Share
	path = /srv/samba/secure_shares
	valid users = @smbgrp
	read only = No

Una vez que haya terminado con las configuraciones anteriores, reinicie los servicios de Samba para aplicar los cambios.

$ sudo systemctl restart smbd   [Systemd]
$ sudo service smbd restart     [Sys V]

Como antes, en la máquina con Windows y abra "Red" desde una ventana del Explorador de Windows. Haga clic en el host de Ubuntu (TECMINT para nuestro caso). Es posible que obtenga el siguiente error, si no, continúe con el siguiente paso.

Intente acceder al servidor utilizando su dirección IP, p. Ej. \192.168.43.168 como este. Luego ingrese las credenciales (nombre de usuario y contraseña) para el usuario aaronkilik y haga clic en Aceptar.

Ahora verá todos los directorios compartidos, haga clic en Seguro para abrirlo.

Puede compartir de forma segura algunos archivos con otros usuarios permitidos en la red colocándolos en este directorio.

Habilitar Samba en UFW Firewall en Ubuntu

Si tiene un firewall UFW habilitado/activo en su sistema, debe agregar las reglas para permitir que Samba pase a través de su firewall.

Para probar esto, usamos el esquema de red 192.168.43.0. Ejecute los siguientes comandos especificando su dirección de red.

$ sudo ufw allow proto udp to any port 137 from 192.168.43.0/24
$ sudo ufw allow proto udp to any port 138 from 192.168.43.0/24
$ sudo ufw allow proto tcp to any port 139 from 192.168.43.0/24
$ sudo ufw allow proto tcp to any port 445 from 192.168.43.0/24

También puede consultar estos artículos útiles sobre el intercambio de archivos Samba en una red.

  1. Configuración del controlador de dominio de Active Directory Samba4: parte 1 a 14
  2. Cómo montar/desmontar sistemas de archivos locales y de red (Samba y NFS) en Linux
  3. Uso de ACL (listas de control de acceso) y montaje de recursos compartidos de Samba/NFS
  4. Cómo reparar la vulnerabilidad de SambaCry (CVE-2017-7494) en sistemas Linux

¡Eso es todo! En esta guía, le mostramos cómo configurar Samba4 para compartir archivos de forma anónima y segura entre máquinas Ubuntu y Windows. Utilice el formulario de comentarios a continuación para compartir sus pensamientos con nosotros.