Como crear una compartición Samba
Samba permite para Windows y otros clientes conectar a archivo de directorios compartidos en huéspedes Linux. Implementa el protocolo de bloque de mensaje de servidor (SMB). Esta guía cubre crear un lugar de archivo compartido en una máquina Fedora que puede ser accedida por otros equipos en la red local.
Instalar y habilitar Samba
Los siguientes comandos instalan Samba y lo pone para ejecutar vía systemctl
. Esto además establece el cortafuegos para permitir acceso a Samba desde otros equipos.
sudo dnf install samba sudo systemctl enable smb --now firewall-cmd --get-active-zones sudo firewall-cmd --permanent --zone=FedoraWorkstation --add-service=samba sudo firewall-cmd --reload
Compartir un directorio dentro de /home
En este ejemplo compartirá un directorio dentro de su directorio home, accesible solo por su usuario.
Samba no utiliza los usuarios del sistema operativo para autenticación, por tanto su cuenta de usuario debe estar duplicada en Samba. Por tanto si su cuenta es jane
en el equipo, el usuario jane
debe además ser añadido a Samba. Mientras los nombres de usuario deben coincidir, las contraseñas pueden ser distintas.
Crear un usuario llamado jane
en Samba:
sudo smbpasswd -a jane
Crear un directorio para estar la compartición para jane, y establecer el contexto correcto de SELinux:
mkdir /home/jane/share sudo semanage fcontext --add --type "samba_share_t" "/home/jane/share(/.*)?" sudo restorecon -R ~/share
La configuración viva de Samba dentro del archivo /etc/samba/smb.conf
. Añadiento la sección seguida en el final del archivo mandará a Samba configurar una compartición para jane llamado "compartido" en el directorio /home/jane/share
tan pronto que sea creado.
[share] comment = Mi Compartición path = /home/jane/share writeable = yes browseable = yes public = yes create mask = 0644 directory mask = 0755 write list = user
Reiniciar Samba para los cambios a tomar efecto:
sudo systemctl restart smb
Compartir un directorio para muchos usuarios
Dentro de este ejemplo, compartirá un directorio (externo a su directorio home) y crea un grupo de usuarios con la habilidad de leer y escribir a la compartición.
Remember that a Samba user must also be a system user, in order to respect filesystem permissions. This example creates a system group myfamily
for two new users jack
and maria
.
sudo groupadd myfamily sudo useradd -G myfamily jack sudo useradd -G myfamily maria
Pudo crear estos usuarios sin una contraseña del sistema. Esto prevería acceso al sistema vía SSH o acceso local. |
Agregue jack
y maria
a Samba y cree sus contraseñas:
sudo smbpasswd -a jack sudo smbpasswd -a maria
Configure la carpeta compartida:
sudo mkdir /home/share sudo chgrp myfamily /home/share sudo chmod 770 /home/share sudo semanage fcontext --add --type "samba_share_t" "/home/share(/.*)?" sudo restorecon -R /home/share
Cada compartición está descrita por su propia sección dentro del archivo /etc/samba/smb.conf
. Agrega esta sección para el final del archivo:
[family] comment = Compartir Familia path = /home/share writeable = yes browseable = yes public = yes valid users = @mifamilia create mask = 0660 directory mask = 0770 force group = +mifamilia
Explicación de lo anterior:
-
valid users
: solo los usuarios del grupofamily
tiene derechos de accesos. El @ denota un nombre de grupo. -
force group = +myfamily
: se crean archivos y directorios con este grupo, en vez del grupo de usuario. -
create mask = 0660
: archivos dentro de compartición son creados con permisos para permitir a todos los usuarios del grupo leer y escribir archivos creados por otros usuarios. -
directory mask = 0770
: como antes, pero para directorios.
Reiniciar Samba para los cambios a tomar efecto:
sudo systemctl restart smb
Gestión de Usuarios de Samba
Cambia una contraseña del usuario samba
Recuerde: las contraseñas del usuario del sistema y el usuario Samba pueden ser diferentes. El usuario del sistema es necesario con el fin de manipular permisos del sistema de archivos.
sudo smbpasswd maria
=== Quita un usuario de samba
sudo smbpasswd -x maria
Si no necesita el usuario del sistema, retírelo también:
sudo userdel -r maria
== Soluciones de problemas y bitácoras
Los archivos de bitácora de Samba están localizados en /var/log/samba/
tail -f /var/log/samba/log.smbd
Puede incrementar la verborrea añadiendo esto a la sección [global]
de /etc/samba/smb.conf
:
[global] loglevel = 5
Para validar la sintaxis del archivo de configuración /etc/samba/smb.conf
utilice el comando testparm
. Salida de ejemplo:
Load smb config files from /etc/samba/smb.conf Loaded services file OK. Server role: ROLE_STANDALONE
Para exhibir las conexiones actuales de samba, utilice el comando smbstatus
. Salida de ejemplo:
Samba version 4.12.3 PID Usuario Grupo Máquina Versión Protocolo Cifrado Firma ---------------------------------------------------------------------------------------------------------------------------------------- 7259 jack jack 192.168.122.1 (ipv4:192.168.122.1:40148) SMB3_11 - partial(AES-128-CMAC) Service pid Machine Connected at Encryption Signing --------------------------------------------------------------------------------------------- family 7259 192.168.122.1 Fri May 29 14:03:26 2020 AEST - - No locked files
Algunas cosas para comprobar si no se puede acceder la compartición.
-
Asegúrese que el usuario existe como un usuario del sistema así como un usuario de Samba
Encuentre
maria
dentro de la base de datos de Samba:sudo pdbedit -L | grep maria maria:1002:
Confirme que
maria
además existe como un usuario del sistema.cat /etc/passwd | grep maria maria:x:1002:1002::/home/maria:/bin/bash
-
Compruebe si el directorio compartido y los subdirectorios tienen el contexto SELinux correcto.
ls -dZ /home/share unconfined_u:object_r:samba_share_t:s0 /home/share
-
Compruebe si el usuario del sistema tiene permiso de acceso al directorio compartido.
ls -ld /home/share drwxrwx---. 2 root myfamily 4096 May 29 14:03 /home/share
En este caso, el usuario estaría en el grupo
myfamily
. -
Compruebe en el archivo de configuración
/etc/samba/smb.conf
que el usuario y grupo tiene permiso de acceso.[family] comment = Compartir Familia path = /home/share writeable = yes browseable = yes public = yes valid users = @mifamilia create mask = 0660 directory mask = 0770 force group = +mifamilia
En este caso, el usuario estaría en el grupo
myfamily
.
-
Compruebe si el archivo de configuración de samba si el usuario/grupo tiene permiso de escritura.
[family] comment = Compartir Familia path = /home/share writeable = yes browseable = yes public = yes valid users = @mifamilia create mask = 0660 directory mask = 0770 force group = +mifamilia
En este caso, el usuario estaría dentro del grupo
myfamily
. -
Compruebe los permisos del directorio compartido.
ls -ld /home/share drwxrwx---. 2 root myfamily 4096 May 29 14:03 /home/share
Este ejemplo asume que el usuario es parte del grupo
myfamily
el cual tiene permisos de lectura, escritura y ejecución para la carpeta.
Want to help? Learn how to contribute to Fedora Docs ›