Páginas

viernes, 26 de julio de 2024

Recursos Compartidos con Samba FreeBSD

Samba FreeBSD

SAMBA es un conjunto de programas originalmente creados por Andrew Tridgell y mantenidos en la actualizad por The SAMBA Team, bajo licencia Pública General GNU e implementado por sistemas basados en UNIX.

En el servidor


pkg install samba416

sysrc samba_server_enable="YES"

Crear conjunto de datos


zfs create zroot/usr/backup/dellhome
zfs create zroot/usr/backup/poolrecovery
zfs create zroot/usr/backup/publico
zfs create zroot/usr/backup/docs
zfs create zroot/usr/backup/codigo

El directorio público será propiedad del usuario y grupo nobody


chown nobody:nobody /usr/backup/publico

Archivo de configuracion


[global]
	unix charset 		= UTF-8
	workgroup 		= CORP
    	client min protocol 	= NT1
    	server string 		= Samba Server Version %v en %L
	hosts allow 		= 127., 192.168.88.
	netbios name 		= servidor
	security 		= user
	load printers 		= no
	guest account		= nobody
	printable		= no
	hide dot files		= yes
	log level		= 1 auth:5 winbind:5
	log file		= /var/log/samba/%m.log
	max log size 		= 1000
	deadtime 		= 60
	create mask 		= 0644
	directory mask 		= 0755
	map to guest 		= bad user
	wins support 		= yes
	bind interfaces only 	= yes
	interfaces 		= re0, 127.0.0.1, 192.168.88.160/25
	
[dellhome]
	comment		= FreeBSD
	path 		= /usr/backup/dellhome
	public 		= no
	browseable 	= yes
	writeable 	= yes
	write list 	= carlos
	admin users	= carlos
	guest ok 	= no

[codigo]
	comment 	= Scripts
	path 		= /usr/backup/codigo
	public 		= no
	read only 	= yes
	browseable 	= no
	guest ok 	= no
	valid users 	= carlos
	write list 	= carlos

[poolrecovery]
	path 		= /usr/backup/poolrecovery
	public 		= no
	writeable 	= yes
    browseable	= no
	guest ok 	= no
	valid users 	= carlos

[docs]
	comment		= Documentos
	path 		= /usr/backup/docs
	public 		= no
	writeable 	= yes
	write list 	= carlos
	admin users	= carlos
	browseable 	= yes
	guest ok 	= no

[public]
	comment		= Permitido
	path		= /usr/backup/publico
	public 		= yes
	writeable	= yes
	browseable	= yes
	guest ok	= yes

guest ok

Permite o no el acceso como usuario invitado, el valor puede ser Yes o No.

public

Define si se permite el acceso como usuario invitado, el valor puede ser Yes o No.

browseable

Permite o no mostrar este recurso en las listas de recursos compartidos, el valor puede ser Yes o No.

writable

Permite o no la escritura, es la opción opuesta a read only. El valor puede ser Yes o No. writable = Yes es lo mismo que read only = No y viceversa.

valid users

Define los usuarios o grupos, que podrán acceder al recurso compartido. Los valores pueden ser nombres de usuarios separados por comas o nombre de grupos precedido de @. Ejemplo: user1, user2, @contabilidad @administradores.

write list

Define que usuarios o grupos pueden acceder con permiso de escritura. Los valores pueden ser nombres de usuarios separados por comas o bien nombre de grupos precedidos de @. Ejemplo: user1, user2 , @contabilidad, @administradores.

admin users

Define usuarios o grupos que pueden acceder con permisos administrativos para el recurso. Pueden acceder realizando todas las operaciones como super-usuario. Los valores pueden ser nombres de usuarios separados por comas o bien nombre de grupos precedidos por una @. Ejemplo: user1, user2, @finanzas, @administradores.

directory mask

Define qué permisos en el sistema tendrán los subdirectorios creados dentro del recurso.

create mask

Define que permisos en el sistema tendrán los nuevos archivos creados dentro del recurso.

Iniciar el servicio SAMBA


service samba_server start

Reglas cortafuegos PF permitir tráfico samba

Como servidor es necesario abrir los puertos 137/udp, 138/udp, 139/tcp y 445/tcp


#macros
int_if="re0"
udp_ports="{ 137 138 }"
tcp_ports="{ 139 445 }"
lan="{ 192.168.88.0/24 }"
table <redeslan> { $lan }

pass in on $int_if proto { tcp } from <redeslan> to any port $tcp_ports keep state
pass in on $int_if proto { udp } from <redeslan> to any port $udp_ports keep state
...

Agregar usuario carlos a Samba


pdbedit -a carlos
new password:
retype new password

Activar acceso al usuario carlos


smbpasswd -e carlos
New SMB password:
Retype new SMB passwd:
Added user carlos

Reiniciar SAMBA


service samba_server restart

Conectar a un recurso compartido desde un cliente FreeBSD


Podemos usar indistintamente tanto la dirección IP del servidor FreeBSD como su nombre


cat /etc/hosts | grep tormenta
---
192.168.88.160   	tormenta
---

smbclient es parte de Samba, por tanto, es necesario instalar Samba


pkg install samba416

Debe existir el archivo smb4.conf de lo contrario smbclient falla:

smbclient: Can't load /usr/local/etc/smb4.conf - run testparm to debug it


touch /usr/local/etc/smb4.conf
echo "workgroup = CORP">/usr/local/etc/smb4.conf echo "client min protocol = NT1">>/usr/local/etc/smb4.conf

Listar recursos compartidos por el servidor Samba


» smbclient -L tormenta
Password for [CORP\carlos]:

	Sharename       Type      Comment
	---------       ----      -------
	dellhome        Disk	  FreeBSD
	codigo          Disk      Scripts
	poolrecovery    Disk
	docs            Disk
	public          Disk      Permitido
	IPC$            IPC       IPC Service (Samba Server Version 4.16.11 en SERVIDOR)
Reconnecting with SMB1 for workgroup listing.

	Server               Comment
	---------            -------
	servidor	     Samba Server Version 4.16.11 en SERVIDOR
                         
	Workgroup            Master
	---------            -------
	CORP                 SERVIDOR

Conectar a un recurso compartido


$ smbclient -U carlos //192.168.88.160/dellhome
smb: \>

Las conexiones Samba actuales


root@tormenta: # smbstatus

Samba version 4.16.11
PID     Username   Group        Machine     Protocol Version  Encryption     Signing
--------------------------------------------------------------------------------------------------------
22653   carlos  carlos  192.168.88.51 (ipv4:192.168.88.51:39769)  SMB3_11  partial(AES-128-GMAC)
22472   nobody  nobody  192.168.88.51 (ipv4:192.168.88.51:21993)  SMB3_11      -         -

Service      pid     Machine       Connected at                   Encryption Signing
---------------------------------------------------------------------------------------------
IPC$         25576   solaris        Sun Jul 28 21:04:52 2024 CEST    -            -
public       22472   192.168.88.51  Sun Jul 28 10:48:09 2024 CEST    -            -
docs         22653   192.168.88.51  Sun Jul 28 11:17:03 2024 CEST    -            -
dellhome     61262   macbook-pro    Mon Jul 29 08:39:57 2024 CEST    -            -

No locked files

Listar sockets abiertos IPv4


root@tormenta: # sockstat -4
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
root     smbd       22653 34 tcp4   192.168.88.160:445    192.168.88.51:39769
carlos   sshd       22630 4  tcp4   192.168.88.160:22     192.168.88.51:42658
root     sshd       22628 4  tcp4   192.168.88.160:22     192.168.88.51:42658
root     smbd       22472 34 tcp4   192.168.88.160:445    192.168.88.51:21993
root     smbd       22478 34 tcp4   192.168.88.160:445    192.168.88.135:21996
root     smbd       13189 29 tcp4   127.0.0.1:445         *:*
root     smbd       13189 30 tcp4   127.0.0.1:139         *:*
root     smbd       13189 31 tcp4   192.168.88.160:445    *:*
root     smbd       13189 32 tcp4   192.168.88.160:139    *:*
root     nmbd       13182 16 udp4   *:137                 *:*
root     nmbd       13182 17 udp4   *:138                 *:*
root     nmbd       13182 18 udp4   192.168.88.160:137    *:*
root     nmbd       13182 19 udp4   192.168.88.255:137    *:*
root     nmbd       13182 20 udp4   192.168.88.160:138    *:*
root     nmbd       13182 21 udp4   192.168.88.255:138    *:*
root     sshd       92484 5  tcp4   *:22                  *:*
...

Conectar a un recurso compartido desde un cliente FreeBSD

Conectar a un recurso compartido desde un cliente MacOS

FreeBSD es genial!.