Servidor SAMBA
Instalación de Samba
Actualizaremos los paquetes disponibles desde los repositorios:
user@server:~$ sudo apt update
Después instalaremos Samba:
user@server:~$ sudo apt install samba
Al instalar SAMBA, por defecto se iniciará el daemon. Para trabajar más cómodos y evitar problemas de seguridad hasta que esté completamente configurado, vamos a detener el servicio:
user@server:~$ sudo systemctl stop smbd.service
Configuración de Samba
Debemos conocer sobre qué adaptador vamos a trabajar, pues lo necesitaremos posteriormente para la configuración.
Para hacerlo, usaremos el siguiente comando:
user@server:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:d5:b1:16 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
valid_lft 85970sec preferred_lft 85970sec
inet6 fe80::a00:27ff:fed5:b116/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:62:5d:9d brd ff:ff:ff:ff:ff:ff
inet 192.168.56.109/24 brd 192.168.56.255 scope global dynamic enp0s8
valid_lft 470sec preferred_lft 470sec
inet6 fe80::a00:27ff:fe62:5d9d/64 scope link
valid_lft forever preferred_lft forever
En nuestro caso, la interfaz que usaremos será la enp0s8.
Copiaremos, para hacer rollback en caso de ser necesario, el archivo de configuración de Samba:
user@server:~$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.1.bak
Note
Es muy interesante mantener las últimas versiones de los archivos de configuración. De esta manera, tenemos una especie de historial por si quisiéramos revertir los ajustes a una configuración anterior.
Edición del archivo de configuración
Tip
Puede ser interesante renombrar el archivo original y crear uno limpio para no tener comentarios “inútiles” en el archivo de configuración.
user@server:~$ sudo nano /etc/samba/smb.conf
#Este archivo contendrá:
[global]
server string = Carpet4You_SambaServer
workgroup = carpet4you.site
interfaces = enp0s8
bind interfaces only = yes
log file = /var/log/samba/smb.log
max log size = 10000
; Está en KiB, por defecto está en 1000. Logrotate recomendable.
server role = standalone server
; Esta opción sincronizará la contraseña del comando smbpasswd con la contraseña de UNIX en segundo plano
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = "*New Password:*" %n\n "*Reenter New Password:*" %n\n "*Password changed.*"
;
map to guest = bad user
Guardamos el archivo. Para comprobar si la configuración es corracta podemos usar el siguiente comando:
user@server:~$ sudo testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[...]
Creación de usuarios
Vamos a crear dos usuarios Samba: marta y juan.
Usaremos los siguientes comandos:
user@server:~$ sudo adduser --shell /usr/sbin/nologin --home /md0/home/marta --ingroup sambashare marta
user@server:~$ sudo adduser --shell /usr/sbin/nologin --home /md0/home/juan --ingroup sambashare juan
Si como root o como usuarios con permisos para ejecutar sudo creáramos un archivo o directorio en las carpetas de los usuarios tendríamos un problema, pues el usuario final no podría editarlo.
Para remediarlo ejecutamos los siguientes comandos:
user@server:~$ sudo chown juan:sambashare /md0/home/juan
user@server:~$ sudo chown marta:sambashare /md0/home/marta
user@server:~$ sudo chmod -R 2770 /md0/home/juan/
user@server:~$ sudo chmod -R 2770 /md0/home/marta/
Ya tenemos creados los usuarios en el sistema operativo, pero no en Samba, para hacerlo:
# -a para añadir (add) el usuario
user@server:~$ sudo smbpasswd -a juan
# -e para activar (enable) el usuario
user@server:~$ sudo smbpasswd -e juan
user@server:~$ sudo smbpasswd -a marta
user@server:~$ sudo smbpasswd -e marta
Configurar las carpetas compartidas
Volveremos a modificar el archivo /etc/samba/smb.conf, añadiendo el siguiente contenido:
[marta]
path = /md0/home/marta
browseable = no
read only = no
force create mode = 0660
force directory mode = 2770
valid users = marta
[juan]
path = /md0/home/juan
browseable = no
read only = no
force create mode = 0660
force directory mode = 2770
valid users = juan
Tip
Con cada cambio en el archivo de configuración es recomendable ejecutar testparm
Puede ser recomendable añadir un grupo o usuario administrador para la gestión Samba.
Crearemos una carpeta compartida global, la llamaremos tolmundo, también otra en /home/compartidoNFS:
user@server:~$ sudo mkdir -p /samba/tolmundo
user@server:~$ sudo mkdir -p /home/compartidoNFS
Añadiremos la siguiente sección al archivo /etc/samba/smb.conf para activar estas comparticiones:
[tolmundo]
path = /samba/tolmundo
browseable = yes
read only = no
force create mode = 0660
force directory mode = 2770
valid users = @sambashare user
[compartidoNFS]
path = /home/compartidoNFS
browseable = yes
read only = no
force create mode = 0660
force directory mode = 2770
valid users = @sambashare juan marta
Iniciar el servicio
Para iniciar el servicio ejecutamos:
user@server:~$ sudo systemctl start smbd.service
También debemos permitir el acceso a través del Firewall:
user@server:~$ sudo ufw allow samba
Conexión a carpeta
Para conectarnos a la carpeta usamos smb://<IP-del-Servidor>/<Recurso>, en Linux. En Windows abriremos el explorador de archivos y escriremos \<IP-del-Servidor>/<Recurso>.
Veamos un ejemplo en Linux: