En este tutorial, vamos a aprender cómo instalar y configurar un servidor Samba en Ubuntu para compartir archivos en la red local. Samba es una implementación de protocolo SMB/CIFS gratuita y de código abierto para Unix y Linux que permite compartir archivos e impresoras entre máquinas Unix/Linux, Windows y macOS en una red de área local.
Samba generalmente se instala y ejecuta en Linux. Comprende varios programas que tienen propósitos diferentes pero relacionados, los dos más importantes son:
- smbd :proporciona servicio SMB/CIFS (uso compartido e impresión de archivos), también puede actuar como un controlador de dominio de Windows.
- nmbd :este daemon proporciona el servicio de nombres NetBIOS, escucha las solicitudes del servidor de nombres. También permite que otras computadoras en la red encuentren el servidor Samba.
Cómo instalar el servidor Samba en Ubuntu
Samba está incluido en la mayoría de las distribuciones de Linux. Para instalar Samba en Ubuntu, simplemente ejecute el siguiente comando en la terminal.
sudo apt install samba samba-common-bin
La última versión estable disponible es 4.12.0, lanzada el 3 de marzo de 2019. Para verificar su versión de Samba, ejecute
smbd --version
Salida de muestra:
Version 4.7.6-Ubuntu
Para verificar si el servicio Samba se está ejecutando, emita el siguiente comando.
systemctl status smbd nmbd
Para iniciar estos dos servicios, emita el siguiente comando:
sudo systemctl start smbd nmbd
Una vez iniciado, smbd
estará escuchando en los puertos TCP 139 y 445. nmbd
estará escuchando en los puertos UDP 137 y 138.
- TCP 139:utilizado para compartir archivos e impresoras y otras operaciones.
- TCP 445:el puerto CIFS sin NetBIOS.
- UDP 137:utilizado para la exploración de redes NetBIOS.
- UDP 138:utilizado para el servicio de nombres NetBIOS.
Si ha habilitado el firewall UFW en Ubuntu, debe abrir los puertos anteriores en el firewall con el siguiente comando.
sudo ufw allow samba
Crear un recurso compartido privado de Samba
En esta sección, veremos cómo crear un recurso compartido privado de Samba que requiere que el cliente ingrese el nombre de usuario y la contraseña para poder acceder. El archivo de configuración principal de Samba se encuentra en:/etc/samba/smb.conf
. Puede editarlo en la terminal con un editor de texto de línea de comando como nano
.
sudo nano /etc/samba/smb.conf
En el [global]
sección, asegúrese de que el valor de workgroup
es lo mismo con la configuración del grupo de trabajo de las computadoras con Windows.
workgroup = WORKGROUP
Puede encontrar la configuración en su computadora con Windows yendo a Control Panel
> System and Security
> System
.
Luego, desplácese hacia abajo hasta la parte inferior del archivo. (En el editor de texto nano, puede lograrlo presionando CTRL+W
luego CTRL+V
. ) Agregue una nueva sección como la siguiente.
[Private] comment = needs username and password to access path = /srv/samba/private/ browseable = yes guest ok = no writable = yes valid users = @samba
Explicación:
Private
es el nombre de la carpeta que se mostrará en la red de Windows.- El comentario es una descripción de la carpeta compartida.
- El parámetro ruta especifica la ruta a la carpeta compartida. Uso
/srv/samba/private/
como ejemplo. También puede usar una carpeta en su directorio de inicio. browseable = yes
:permita que otras computadoras en la red vean el servidor Samba y el recurso compartido Samba. Si se establece en no, los usuarios deben conocer el nombre del servidor Samba y luego ingresar manualmente una ruta en el administrador de archivos para acceder a la carpeta compartida.guest ok = no
:deshabilitar el acceso de invitados. En otras palabras, debe ingresar el nombre de usuario y la contraseña en la computadora del cliente para acceder a la carpeta compartida.writable = yes
:Otorga permisos de lectura y escritura a los clientes.valid users = @samba
:Solo los usuarios del grupo de samba pueden acceder a este recurso compartido de Samba.
Guarde y cierre el archivo. (Para guardar el archivo en el editor de texto nano, presione Ctrl+O
, luego presione Entrar para confirmar el nombre del archivo para escribir. Para cerrar el archivo, presione Ctrl+X
.) Ahora necesitamos crear un usuario de Samba. Primero, necesitamos crear una cuenta de usuario estándar de Linux con el siguiente comando. Reemplazar username
con su nombre de usuario deseado.
sudo adduser username
Se le pedirá que establezca una contraseña de Unix. Después de eso, también debe establecer una contraseña de Samba separada para el nuevo usuario con el siguiente comando:
sudo smbpasswd -a username
Crea el grupo de samba.
sudo groupadd samba
Y agregue este usuario al grupo de samba.
sudo gpasswd -a username samba
Cree la carpeta compartida privada.
sudo mkdir -p /srv/samba/private/
El grupo de samba necesita tener permisos de lectura, escritura y ejecución en la carpeta compartida. Puede otorgar estos permisos ejecutando el siguiente comando. (Si su sistema no tiene el setfacl
comando, necesita instalar el acl
paquete con sudo apt install acl
.)
sudo setfacl -R -m "g:samba:rwx" /srv/samba/private/
A continuación, ejecute el siguiente comando para verificar si hay errores sintácticos.
testparm
Ahora todo lo que queda por hacer es reiniciar smbd
y nmbd
demonio.
sudo systemctl restart smbd nmbd
Cómo crear un recurso compartido público de Samba sin autenticación
Para crear un recurso compartido público sin requerir nombre de usuario y contraseña, se deben cumplir las siguientes condiciones.
- Establecer
security = user
en la sección global del archivo de configuración de Samba. Aunque puede crear un recurso compartido público consecurity = share
modo, pero este modo de seguridad está en desuso. Se recomienda encarecidamente que eviteshare
modo. - Establecer
map to guest = bad user
en la sección global del archivo de configuración de Samba. Esto hará quesmbd
para usar una cuenta de invitado para autenticar a los clientes que no tienen una cuenta registrada en el servidor Samba. Dado que es una cuenta de invitado, los clientes de Samba no necesitan ingresar la contraseña. - Establecer
guest ok = yes
en la definición de recurso compartido para permitir el acceso de invitados. - Otorgar permiso de lectura, escritura y ejecución de la carpeta pública a
nobody
cuenta, que es la cuenta de invitado predeterminada.
De hecho, las dos primeras condiciones ya se cumplen, ya que Samba usa estas dos configuraciones de forma predeterminada.
Aquí hay una guía paso a paso para crear un recurso compartido público. Primero, abra y edite el archivo de configuración de Samba.
sudo nano /etc/samba/smb.conf
En el [global]
sección, asegúrese de que el valor de workgroup
es lo mismo con la configuración del grupo de trabajo de las computadoras con Windows.
workgroup = WORKGROUP
Puede encontrar la configuración en su computadora con Windows yendo a Control Panel
> System and Security
> System
.
Luego, desplácese hacia abajo hasta la parte inferior del archivo y pegue las siguientes líneas.
[public] comment = public share, no need to enter username and password path = /srv/samba/public/ browseable = yes writable = yes guest ok = yes
Guarde y cierre el archivo. A continuación, cree el /srv/samba/public/
carpeta.
sudo mkdir -p /srv/samba/public
Luego asegúrese de que nobody
cuenta tiene permiso de lectura, escritura y ejecución en la carpeta pública ejecutando el siguiente comando. (Si su sistema no tiene el setfacl
comando, necesita instalar el acl
paquete con sudo apt install acl
.)
sudo setfacl -R -m "u:nobody:rwx" /srv/samba/public/
Reinicie smbd y nmbd.
sudo systemctl restart smbd nmbd
Acceso a la carpeta compartida de Samba desde Windows
En una computadora con Windows que esté en la misma red, abra el Explorador de archivos y haga clic en Network
en el panel izquierdo. Si ve el siguiente mensaje, debe hacer clic en el mensaje y activar la detección de redes y el uso compartido de archivos.
File sharing is turned off. Some network computers and devices might not be visible.
A continuación, ingrese \\
seguido de la dirección IP del servidor Samba en la barra de direcciones del Explorador de archivos, así:\\192.168.0.102
. Verá una lista de recursos compartidos en el servidor Samba.
Luego haga doble clic en la carpeta compartida. Para acceder al recurso compartido privado, debe ingresar el nombre de usuario y la contraseña de samba. No es necesario que lo haga para acceder al recurso compartido público.
Una vez conectado, puede leer, escribir y eliminar archivos en la carpeta compartida de Samba.
Error de conexión
Si recibe el siguiente error:
You do not have permission to access \\hostname\share-name. Contact your network administrator to request access.
Puede intentar conectarse al recurso compartido de Samba desde el símbolo del sistema. Abra un símbolo del sistema, luego ejecute el siguiente comando para cerrar la sesión actual de Samba.
net use \\samba-server-ip\share-name /delete
A continuación, conéctese al recurso compartido de Samba con el siguiente comando:
net use \\samba-server-ip\share-name /user:samba-username password
Una vez que el comando anterior se completó con éxito, vaya a la pestaña Red en el Explorador de archivos y ahora debería poder acceder al recurso compartido de Samba.
Asignación de unidades en Windows
Una característica del sistema operativo Windows es la capacidad de asignar una letra de unidad (como S:) a un directorio remoto. Para asignar la letra de unidad S:
al recurso compartido de Samba, haga clic con el botón derecho en la carpeta compartida de Samba y seleccione Asignar unidad de red . Luego elija una letra de unidad y haga clic en Finalizar.
Una vez que se establece la asignación de unidades, las aplicaciones pueden acceder a los archivos en el recurso compartido de Samba a través de la letra de unidad S:
. Y este recurso compartido de Samba se montará automáticamente cuando inicie sesión en su computadora con Windows.
Acceso a la carpeta compartida de Samba en Nautilus File Manager en Linux
Si está utilizando el administrador de archivos Nautilus, haga clic en Other Locations
en el panel izquierdo. En la parte inferior, verá una opción para conectarse al servidor . Para acceder a su recurso compartido de Samba, escriba smb://
seguido de la dirección IP del servidor Samba y presione Enter. Por ejemplo:
- smb://192.168.0.102
Verá una lista de recursos compartidos en el servidor Samba.
Si hace clic en la carpeta compartida privada, deberá ingresar el nombre de usuario y la contraseña de Samba. Si hace clic en la carpeta pública compartida, elija conectarse como anónimo.
Si ve el siguiente mensaje de error,
failed to retrieve share list from server
Puede intentar solucionar este error montando el recurso compartido de Samba desde la línea de comandos, que se analiza a continuación.
Montar automáticamente Samba Share desde la línea de comandos en Linux
Nota :Montar automáticamente el Samba share
se hace en los clientes. Estos comandos deben ejecutarse en un cliente Samba, si el cliente Samba ejecuta Linux. No debe hacerlo en el propio servidor Samba.
Si necesita montar automáticamente el recurso compartido de Samba en el momento del arranque, puede usar la línea de comando para montar y luego agregar una entrada en /etc/fstab
expediente. Para hacerlo, debe instalar cifs-utils
paquete.
CentOS/RHEL
sudo dnf install cifs-utils
Debian/Ubuntu
sudo apt install cifs-utils
Luego cree un punto de montaje para el recurso compartido de Samba.
sudo mkdir /mnt/samba-private
Ahora puede usar el siguiente comando para montar una carpeta compartida privada.
sudo mount -t cifs -o username=your_samba_username //192.168.0.102/private /mnt/samba-private/
Le pedirá que ingrese la contraseña de Samba. Después de eso, se montará en /mnt/samba-private/
directorio.
Para montar automáticamente el recurso compartido de Samba, edite /etc/fstab
archivo.
sudo nano /etc/fstab
Agregue la siguiente línea en el archivo.
//192.168.0.102/private /mnt/samba-private cifs x-systemd.automount,_netdev,credentials=/etc/samba-credential.conf,uid=1000,gid=1000,x-gvfs-show 0 0
donde:
- //192.168.0.102/privado :la dirección IP del servidor Samba y el nombre compartido.
- /mnt/samba-privado :punto de montaje para el recurso compartido de Samba.
- cifs :tipo de sistema de archivos
- x-systemd.montaje automático :esta opción le dice a systemd que cree una unidad de montaje automático para el sistema de archivos. Usamos esto porque garantiza que el sistema de archivos remoto se monte solo después de que haya acceso a la red.
- _netdev :Esto especifica que el montaje requiere red.
- credenciales= :Linux debe buscar las credenciales en
/etc/samba-credential.conf
archivo. - uid=1000,gid=1000 :De forma predeterminada, el sistema de archivos montado sería propiedad del usuario raíz. Usamos uid y gid para cambiar la propiedad del sistema de archivos. Normalmente usas tu propio uid y gid , que son 1000 por defecto.
- x-gvfs-espectáculo :si está utilizando el entorno de escritorio GNOME o sus derivados, puede usar esta opción para mostrar el sistema de archivos montado en el administrador de archivos.
Guarde y cierre el archivo. Luego cree el archivo de credenciales.
sudo nano /etc/samba-credential.conf
Agregue las siguientes líneas en el archivo.
username=your_samba_username password=samba_password domain=WORKGROUP
Guarde y cierre el archivo. Asegúrese de que solo el usuario raíz pueda leer este archivo.
sudo chmod 600 /etc/samba-credential.conf
Si reinicia su computadora Linux ahora, el recurso compartido de Samba se montará automáticamente. También puede ejecutar el siguiente comando para montar el recurso compartido de Samba sin reiniciar.
sudo mount -a
Si ve el error de permiso denegado y puede encontrar la siguiente línea ejecutando sudo dmesg
mando,
VFS: cifs_mount failed w/return code = -13
probablemente se deba a que tiene un error tipográfico en /etc/samba-credential
archivo.
¿No puede escribir en Samba Share?
El montaje de CIFS descrito anteriormente le permite escribir en el recurso compartido de Samba. Si ve el siguiente error al crear un archivo:
Read-only file system
Comprueba que configuraste writable = yes
en el archivo de configuración de Samba. A veces, la carpeta compartida de Samba está en un disco duro externo, luego asegúrese de montar el disco duro externo en modo de lectura y escritura en el servidor Samba. Por ejemplo, monté mi btrfs
disco duro con la siguiente línea en /etc/fstab.
LABEL=5TB /mnt/5TB btrfs defaults 0 0
Resulta que el defaults
La opción no permite la operación de escritura. Para que se pueda escribir, agregue rw
opción.
LABEL=5TB /mnt/5TB btrfs defaults,rw 0 0
Luego desmonte el disco duro. Necesita usar su propio punto de montaje.
sudo umount /mnt/5TB
Y montarlo de nuevo.
sudo mount -a
Consejo para solucionar problemas
Si su servidor Samba no funciona como se esperaba, puede consultar los archivos de registro en /var/log/samba/
directorio. Puede agregar la siguiente línea en el [global]
sección de /etc/samba/smb.conf
archivo para aumentar el nivel de registro si desea registrar más información.
log level = 2