
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 gruposambausers
.
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 comoroot
,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).