Cómo configurar un servidor Samba en Debian

Cómo configurar un servidor Samba en Debian

Aprende a configurar Samba en Debian para compartir archivos en red con usuarios Linux, macOS y Windows.

Este documento describe cómo configurar un servidor de archivos Samba en Debian 12 con:

  • Una carpeta compartida general para todos los usuarios.
  • Carpetas privadas para cada usuario.
  • Acceso mediante navegador de archivos (Windows/macOS/Linux).
  • Acceso por SSH para todos los usuarios.
  • Un usuario administrador con permisos sudo.

1. Instalación de Samba

sudo apt update
sudo apt install samba

2. Crear las carpetas compartidas

Asegúrate de que el grupo sambausers exista:

sudo groupadd sambausers
# Carpeta Compartida
sudo mkdir -p /srv/samba/shared
sudo chmod 2775 /srv/samba/shared
sudo chown root:sambausers /srv/samba/shared

# Usuarios
sudo mkdir -p /srv/samba/users
sudo chmod 755 /srv/samba/users

3. Crear usuarios del sistema y sus carpetas privadas

Por cada usuario, realiza los siguientes pasos:

a. Crear el usuario del sistema

sudo useradd -m -s /bin/bash -G sambausers usuario1

Esto crea el usuario usuario1 con un directorio home y lo agrega al grupo sambausers.

b. Crear su carpeta privada para Samba

sudo mkdir -p /srv/samba/users/usuario1
sudo chown usuario1:sambausers /srv/samba/users/usuario1
sudo chmod 700 /srv/samba/users/usuario1

c. Asignar contraseña del sistema

sudo passwd usuario1

d. Asignar contraseña para Samba

sudo smbpasswd -a usuario1

Repite estos pasos para cada usuario.

Nota: No realices este proceso para el usuario administrador. Consulta la sección “Usuario Administrador” más abajo.

4. Configurar Samba

Edita el archivo /etc/samba/smb.conf y agrega al final:

[Compartida]
  path = /srv/samba/shared
  browseable = yes
  writable = yes
  guest ok = no
  create mask = 0664
  directory mask = 2775
  valid users = @sambausers
  force group = sambausers
  force create mode = 0664
  force directory mode = 2775

[MiCarpeta]
  path = /srv/samba/users/%U
  browseable = yes
  writable = yes
  guest ok = no
  create mask = 0600
  directory mask = 0700
  valid users = %U

5. Reiniciar el servicio de Samba

sudo systemctl restart smbd

6. Usuario Administrador

Para el usuario administrador (por ejemplo, admin), no debes crearle una cuenta nueva, solo realizar los siguientes pasos:

# Crear carpeta privada si se desea que use Samba
sudo mkdir -p /srv/samba/users/admin
sudo chown admin:sambausers /srv/samba/users/admin
sudo chmod 700 /srv/samba/users/admin

# Agregar al grupo de Samba (si no lo está)
sudo usermod -aG sambausers admin

# Activar cuenta Samba
sudo smbpasswd -a admin

Esto mantiene su configuración SSH y sudo intacta.

7. Acceso de los clientes

7.1 Comportamiento del acceso Samba

Los clientes (Linux, macOS o Windows) pueden conectarse al servidor Samba usando su navegador de archivos. Por ejemplo, desde Linux con Dolphin o Nautilus:

smb://IP_DEL_SERVIDOR

Al conectarse, se les pedirá su nombre de usuario y contraseña Samba.

Una vez autenticado, cada usuario verá exactamente dos carpetas:

  • Compartida: una carpeta común accesible para todos los usuarios del grupo sambausers. Allí pueden colaborar y compartir archivos.
  • MiCarpeta: una carpeta privada visible y accesible solo para el usuario autenticado.

Por ejemplo, todos los usuarios verán lo siguiente:

Compartida/
MiCarpeta/

Pero solo tendrán acceso completo a MiCarpeta si son el dueño correspondiente. Internamente, Samba redirige esa carpeta a un directorio exclusivo para cada usuario, aunque el nombre externo sea siempre el mismo.

Este comportamiento se logra gracias a las directivas del recurso:

[Compartida]
path = /srv/samba/shared
browseable = yes
writable = yes
valid users = @sambausers

[MiCarpeta]
path = /srv/samba/users/%U
browseable = yes
writable = yes
valid users = %U

Esto permite una experiencia limpia y coherente para el usuario final, que solo ve lo que necesita y con los permisos correctos.

7.3 Instrucciones de conexión para clientes

Los usuarios pueden acceder a su carpeta privada y al recurso compartido general utilizando el navegador de archivos de su sistema operativo, sin necesidad de instalar software adicional. La conexión se realiza a través del protocolo SMB (Samba), introduciendo la dirección del servidor y las credenciales asignadas a cada usuario.

Conexión (Linux, macOS o Windows)

Desde el navegador de archivos o Explorador de Archivos:

  • En Linux/macOS:

    smb://IP_DEL_SERVIDOR
    
  • En Windows:

    \\IP_DEL_SERVIDOR
    

Una vez autenticado, el usuario verá dos carpetas:

Compartida/
MiCarpeta/
  • Compartida: recurso común accesible para todos los usuarios del grupo.
  • MiCarpeta: carpeta privada visible y accesible solo para el usuario autenticado.

7.4 Acceso por SSH y sincronización con rsync

Además de acceder por SMB, los usuarios también pueden conectarse a su carpeta privada usando SSH, si su cuenta fue creada con acceso permitido (es decir, no tiene /usr/sbin/nologin como shell).

Cada usuario tiene una carpeta privada ubicada en:

/srv/samba/users/NOMBRE_USUARIO

🔐 Acceder por SSH

Desde cualquier cliente Linux, macOS o Windows con un cliente SSH, el usuario puede conectarse así:

ssh NOMBRE_USUARIO@IP_DEL_SERVIDOR

Una vez dentro, podrá navegar y gestionar archivos directamente dentro de su carpeta:

cd /srv/samba/users/NOMBRE_USUARIO

🔁 Subir archivos con rsync

Los usuarios también pueden sincronizar archivos de manera eficiente con rsync desde su máquina local hacia su carpeta privada en el servidor:

rsync -avz ./carpeta_local/ NOMBRE_USUARIO@IP_DEL_SERVIDOR:/srv/samba/users/NOMBRE_USUARIO/carpeta_local/

Esto puede ser útil para subir archivos grandes o mantener sincronizado un conjunto de datos sin necesidad de interfaz gráfica.

⚠️ Importante

  • Los permisos de los archivos copiados por SSH o rsync se mantendrán apropiadamente si el usuario del sistema es el mismo que el usuario Samba.
  • Si la carpeta /srv/samba/users/NOMBRE_USUARIO no pertenece al usuario en el sistema, es posible que necesite permisos adicionales.

🔁 Sincronización recomendada hacia la carpeta compartida con permisos correctos

Al sincronizar archivos hacia la carpeta compartida /srv/samba/shared, es importante que los archivos resultantes pertenezcan al usuario correcto y al grupo sambausers, para que puedan ser colaborativos. Esto se logra con la opción --chown.

rsync -avz --chown=NOMBRE_USUARIO:sambausers ./carpeta_local/ NOMBRE_USUARIO@IP_DEL_SERVIDOR:/srv/samba/shared/carpeta_local/

📝 --chown=NOMBRE_USUARIO:sambausers asegura que todos los archivos sincronizados pertenezcan al usuario y grupo adecuados en el servidor, sin quedar como root, nobody, o con propietarios inconsistentes.

8. Script automatizado (opcional)

Puedes usar este script para automatizar la creación de usuarios (excepto el administrador):

#!/bin/bash

# Verifica argumentos
if [ -z "$1" ]; then
    echo "Uso: $0 nombre_usuario"
    exit 1
fi

USUARIO="$1"
GRUPO="sambausers"
SAMBA_DIR="/srv/samba/users/$USUARIO" # Esta ruta es usada internamente por el recurso Samba [MiCarpeta]

# Crear usuario con home real y shell válido
sudo useradd -m -s /bin/bash -G "$GRUPO" "$USUARIO"

# Establecer contraseña del sistema (para SSH y rsync)
echo "Establece la contraseña del sistema para $USUARIO:"
sudo passwd "$USUARIO"

# Crear la carpeta Samba (separada del home)
sudo mkdir -p "$SAMBA_DIR"
sudo chown "$USUARIO:$GRUPO" "$SAMBA_DIR"
sudo chmod 700 "$SAMBA_DIR"

# Agregar usuario a Samba
echo "Establece la contraseña de Samba para $USUARIO:"
sudo smbpasswd -a "$USUARIO"

echo "✅ Usuario $USUARIO creado con acceso SSH, rsync y Samba (carpeta separada)."

Guarda esto como crear_usuario_samba.sh y hazlo ejecutable:

chmod +x crear_usuario_samba.sh

8.1 Ubicación recomendada del script

Para facilitar su ejecución y mantener una estructura ordenada, se recomienda guardar el script crear_usuario_samba.sh en:

/usr/local/bin/crear_usuario_samba.sh

Esta ubicación es ideal porque:

  • Está en el PATH de usuarios administradores.
  • Es estándar para scripts personalizados ejecutables.
  • Permite que un usuario con permisos sudo lo ejecute fácilmente:

    sudo crear_usuario_samba.sh nombre_usuario
    

Permisos recomendados

Después de mover el script a /usr/local/bin, asegúrate de establecer los permisos adecuados:

sudo chown root:sudo /usr/local/bin/crear_usuario_samba.sh
sudo chmod 750 /usr/local/bin/crear_usuario_samba.sh

Esto permite que solo el usuario root y los usuarios administradores reales (es decir, los que están en el grupo sudo) pueden ejecutar el script.

8.2 Verificar usuarios creados

Después de ejecutar el script de creación de usuarios, es importante verificar que:

  • El usuario del sistema ha sido creado.
  • El usuario de Samba ha sido registrado.
  • La carpeta privada existe y tiene los permisos correctos.

👤 Ver listado de usuarios del sistema

Para ver si un usuario fue creado en el sistema, puedes ejecutar:

getent passwd NOMBRE_USUARIO

Ejemplo:

getent passwd user1

Si el usuario existe, verás una línea con su información (UID, carpeta home, shell, etc).

Para listar todos los usuarios del sistema con UID mayor o igual a 1000 (usualmente usuarios reales), puedes hacer:

awk -F: '$3 >= 1000 && $1 != "nobody" { print $1 }' /etc/passwd

🔐 Ver listado de usuarios Samba

Para listar todos los usuarios registrados en Samba:

sudo pdbedit -L

Esto mostrará el nombre de cada usuario Samba, normalmente uno por línea.

📁 Verificar carpeta y permisos

Para confirmar que la carpeta privada del usuario existe y tiene el dueño y grupo correctos:

ls -ld /srv/samba/users/NOMBRE_USUARIO

Ejemplo:

ls -ld /srv/samba/users/user1

Deberías ver que el dueño y grupo corresponden al usuario, y que los permisos son rwx------ (700).

Fuentes


Gracias

¡Gracias a todos! Sus aportes lo hacen posible. Si desea ayudar y apoyarnos a crear mejor contenido, puede hacer su donativo a través de paypal:

Algunos derechos reservados

Compartir en Redes sociales

A continuación

Cómo extraer archivos de una ISO Live Linux usando `unsquashfs`

Extrae archivos de una ISO Live Linux con unsquashfs y accede a su sistema sin ejecutarla.

Relacionado


¿Músico?

Si desea conocer sobre mi actividad musical lo invito a que visite la página principal. Allí encontrará todo sobre mi música.