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 	= SMB3
    	server string 		= Samba Server Version %v en %L
	hosts allow 		= 127., 192.168.88., 10.10.10.
	netbios name 		= servidor
	security 		= user
    	passdb backend          = tdbsam
	load printers 		= no
    	domain master 		= yes
	guest account		= nobody
	printable		= no
	hide dot files		= yes
	log level		= 1 auth:5
	log file		= /var/log/samba/%m.log
	max log size 		= 10000
	deadtime 		= 60
	create mask 		= 0644
	directory mask 		= 0755
	map to guest 		= never
	wins support 		= yes 	 	 	
	interfaces 		= re0, 127.0.0.1, 192.168.88.160/24, 10.10.10.1/24
    bind interfaces only 	= yes 
	
[dellhome]
	comment		= FreeBSD
	path 		= /samba/dellhome
	public 		= no
	browseable 	= yes
	writeable 	= yes
	write list 	= carlos
[codigo]
	comment 	= Scripts
	path 		= /samba/codigo
	public 		= no
	read only 	= yes
	browseable 	= yes  	
	valid users 	= carlos
	write list 	= carlos
[poolrecovery]
	path 		= /samba/poolrecovery
	public 		= no
	writeable 	= yes
    	browseable	= yes
	guest ok 	= no
	valid users 	= carlos
[docs]
	comment		= Documentos
	path 		= /samba/docs
	public 		= no
	writeable 	= yes
	browseable 	= yes
    	valid users 	= @administradores
[public]
	comment		= Publico
	path		= /samba/publico
	public 		= yes
	writeable	= yes
	browseable	= yes
	guest ok	= yes
Que los permisos del sistema de archivos en /samba/publico sean seguros
chown -R nobody:nobody /samba/publico
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
# /etc/pf.conf
...
pass in on $int_if proto { tcp, udp } from { 10.10.10.0/24, 192.168.88.0/24 } \
to $samba_ip port { 139, 445 }
pass in on $int_if proto udp from { 10.10.10.0/24, 192.168.88.0/24 } \
to $samba_ip port { 137, 138 }
...
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 *:* ...









