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 *:*
...