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