Este artículo demuestra cómo instalar y configurar un servidor de archivos Samba en Debian 10 y derivados. Junto con el proceso de creación de un usuario y prueba de funcionamiento desde un cliente GNU/Linux.



Instalar Samba

Una búsqueda de paquetes rápida nos permite verificar que el paquete samba provee el servidor de archivos SMB/CIFS para Unix:

root@samba:/usr/local/samba# apt-cache search samba | grep server
samba - SMB/CIFS file, print, and login server for Unix
winbind - service to resolve user and group information from Windows NT servers

Para instalar la versión de Samba provista desde paquete, simplemente ejecutar:

root@samba:/usr/local/samba# apt-get install samba

Configurar Samba

root@samba:~# cd /etc/samba/

Editar el archivo de configuración del servidor Samba:

root@samba:/etc/samba# nano smb.conf

Establecer el nombre del grupo de trabajo (por defecto "WORKGROUP"):

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = WORKGROUP

Deshabilitar la definición de share para los homes de usuarios:

;[homes]
;   comment = Home Directories
;   browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
;   read only = yes

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
;   create mask = 0700

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
;   directory mask = 0700

# By default, \\server\username shares can be connected to by anyone
# with access to the samba server.
# The following parameter makes sure that only "username" can connect
# to \\server\username
# This might need tweaking when using external authentication schemes
;   valid users = %S

Deshabilitar compartir impresoras:

;[printers]
;   comment = All Printers
;   browseable = no
;   path = /var/spool/samba
;   printable = yes
;   guest ok = no
;   read only = yes
;   create mask = 0700

# Windows clients look for this share name as a source of downloadable
# printer drivers
;[print$]
;   comment = Printer Drivers
;   path = /var/lib/samba/printers
;   browseable = yes
;   read only = yes
;   guest ok = no

Al final del archivo de configuración, incluir un archivo de definición de shares personalizado (para simplificar la configuración):

include = /etc/samba/smb.conf.shares

Guardar los cambios y cerrar el archivo. Luego, definir un nuevo share en el archivo personalizado:

root@samba:/etc/samba# nano smb.conf.shares

Insertar la siguiente configuración de prueba:

[test]
   comment = Directorio de prueba
   path = /tmp/test     
   read only = no
   browseable = no
   valid users = emiliano       
   force user = emiliano
   force group = emiliano
   directory mask = 0770
   force directory mode = 0770
   create mask = 0770
   force create mode = 0770
   guest ok = no
   nt acl support = yes
   hosts deny = ALL
   hosts allow = 192.168.1.54

Esta definición de share "test" permite el acceso sólo al usuario "emiliano" desde la dirección IP 192.168.1.54 al directorio /tmp/test. Modificar la configuración según sea necesario. En el mismo archivo es posible definir múltiples shares.

Crear el directorio compartido y un archivo de ejemplo:

root@samba:/etc/samba# mkdir -p /tmp/test
root@samba:/etc/samba# echo "hola mundo" > /tmp/test/archivo.txt

A continuación es necesario crear un usuario de Samba para acceder al share:

root@samba:/etc/samba# useradd -c "Emiliano" -s /usr/sbin/nologin emiliano
root@samba:/etc/samba# smbpasswd -a emiliano
New SMB password:
Retype new SMB password:
Added user emiliano.
root@samba:/etc/samba# pdbedit -L
emiliano:1005:Emiliano

Finalmente, reiniciar el servidor Samba:

root@samba:/etc/samba# service samba-ad-dc restart
[ ok ] Stopping Samba AD DC daemon: samba.

Prueba de funcionamiento

Comprobar que el demonio smbd esté aceptando peticiones en los puertos TCP 445 y 139:

root@samba:/etc/samba# netstat -tulpn | grep smb
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      10457/smbd          
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      10457/smbd 

Por otro lado, verificar que el firewall permita el acceso a ambos puertos:

root@samba:/etc/samba# iptables -nL | grep "445\|139"
ACCEPT     tcp  --  0.0.0.0/0      0.0.0.0/0            state NEW tcp dpt:445
ACCEPT     tcp  --  0.0.0.0/0      0.0.0.0/0            state NEW tcp dpt:139

Desde un cliente GNU/Linux, instalar el cliente SMB (apt-get install smbclient en Debian/Devuan y derivados) e intentar acceder al share desde línea de comandos:

emi@hal9000:~$ smbclient //samba.linuxito.com/test -U emiliano
WARNING: The "syslog" option is deprecated
Enter emiliano's password: 
Domain=[DGSI] OS=[Windows 6.1] Server=[Samba 4.9.5-Debian]
smb: \>

Listar el directorio y descargar el archivo de prueba:

smb: \> dir
  .                                   D        0  Thu Aug 29 08:03:36 2019
  ..                                  D        0  Thu Aug 29 08:03:18 2019
  archivo.txt                         N       11  Thu Aug 29 08:03:36 2019

		483946 blocks of size 1024. 481637 blocks available
smb: \>
smb: \> get archivo.txt 
getting file \archivo.txt of size 11 as archivo.txt (3.6 KiloBytes/sec) (average 3.6 KiloBytes/sec)
smb: \> quit

Cerrar y volcar el archivo a modo de comprobación final:

emi@hal9000:~$ cat archivo.txt 
hola mundo


Tal vez pueda interesarte


Compartí este artículo