SAMBA

Compartir carpetas entre Linux y Windows

Adrián L. G. P.


Alojar una carpeta en un servidor Linux

1. Creación de carpeta, permisos y usuarios:

mkdir /carpeta_a_compartir
groupadd nombre_grupo
useradd -g nombre_grupo nombre_usuario
passwd nombre_usuario
chown nombre_usuario:nombre_grupo /carpeta_a_compartir
chmod permisos /carpeta_a_compartir

El usuario debe tener un nombre igual que en la máquina Windows en la que se vaya a iniciar sesión.

Importante: Los usuarios no pueden listar el contenido de la carpeta sin el permiso x.

2. Reconocer usuario:

Al usuario nombre_usuario que creamos hay que hacer que sea reconocible como un usuario para Windows:

smbpasswd -a nombre_usuario

La contraseña que se asigna con smbpasswd debe coincidir con la que se usará para iniciar sesión desde Windows, pero no tiene que coincidir con la contraseña del usuario Linux.

Una vez se reconozca al usuario se puede confirmar con el siguiente comando que enseña el UID, GID y nombre de los usuarios compatibles con Windows:

pbedit -L

3. Instalar paquetes:

apt install -y samba

Una vez instalado se crean 3 servicios: samba-ad-dc, nmdb y smdb; además de una carpeta esencial: /etc/samba.

4. Editar la configuración:

nano /etc/samba/smb.conf

Al final del archivo creamos un bloque con la siguiente estructura obligatoria:

[nombre_recurso]
    path = /carpeta_a_compartir
    read only = no

[nombre_recurso]: Es el nombre que aparecerá en Windows como carpeta.
path: Ruta completa de la carpeta a compartir en el servidor.
read only: Para permisos de escribir: no, o solo-lectura: yes.

Alojar una carpeta en un servidor Windows

1. Creación de usuarios y grupos:

Antes de asignar permisos, hay que crear los usuarios y grupos que sean necesarios.

Administrador de equipos > Usuarios y grupos locales > [Usuarios y Grupos] > Click derecho > Nuevo.
Asegurarse de que tenga la misma contraseña que la definida en el comando smbpasswd.

Desde la misma pestaña de Grupos hay que asignar a los usuarios creados dentro de su grupo correspondiente:
Grupo > Click derecho > Propiedades > Miembros > Agregar.

2. Asignar permisos:

Se puede asignar de forma que los permisos en red también se apliquen en los permisos locales (esto además quita la herencia de la carpeta):
Carpeta > Click derecho > Propiedades > Compartir > Botón "Compartir" > Añadir usuario/grupo > Asignar permisos.

También hay otra forma para asignar solo permisos de red:
Carpeta > Click derecho > Propiedades > Uso compartido avanzado > Botón "Permisos" > Agregar > Definir el usuario/grupo y asignar permisos.


Acceder a una carpeta de Windows desde Linux

1. Creación de una carpeta local:

mkdir /directorio_local_a_montar

2. Instalar dependencias:

apt install cifs-utils

3. Montar la carpeta remota:

mount -t cifs -o username=usuario_Windows,password=contraseña //IP_servidor/recurso /directorio_local

usuario_Windows: Usuario de la máquina Windows con permisos para acceder al recurso compartido.
contraseña: Contraseña del usuario de la máquina Windows.

//IP_servidor/recurso: Ruta del recurso compartido en Windows. Nota: Linux utiliza solo las barras /.
/directorio_local: Carpeta local donde se montará el recurso compartido.

4. Iniciar sesión con el usuario que montó la carpeta.

5. Comprobar que se puede acceder al recurso compartido.

Acceder a una carpeta de Linux desde Windows

1. Iniciar sesión con un usuario que haya sido permitido explícitamente con el comando smbpasswd.

2. Listar recursos compartidos:

Iremos al Explorador de archivos y en la barra de búsqueda buscaremos:

\\IP_servidor_Linux

Aparecerá el recurso carpeta_a_compartir y otra llamada nombre_usuario, que es la carpeta personal del usuario de Linux.

Nota: Si en vez de poner una carpeta con el nombre del usuario hay una que pone nobody significa que no se puede acceder al sistema con el usuario creado y por ello usa un usuario invitado que se llama nobody en el sistema Linux.
Si no deja acceder al recurso compartido con un usuario invitado hay que habilitar el parámetro guest ok = yes en el archivo /etc/samba/smb.conf.

Problema: Los usuarios se duplican en la máquina Linux y Windows.
Solución: Tener un servicio de usuarios en red como LDAP o Active Directory.


Montar una carpeta CIFS automáticamente en Linux

1. Editar el archivo /etc/fstab:

nano /etc/fstab

2. Añadir la siguiente línea:

//IP_servidor/nombre_recurso    /directorio_local    cifs    username=usuario,password=contraseña,uid=0000,gid=0000

//IP_servidor/recurso: Ruta del recurso compartido del servidor. Nota: Linux utiliza solo las barras /.
/directorio_local: Carpeta local donde se montará el recurso compartido.

usuario: Usuario asignado por el servidor que tenga permiso de acceder al recurso compartido.
contraseña: Contraseña del usuario con permisos.
uid: El ID del usuario que tendrá permisos como propietario sobre el recurso compartido, por defecto asigna a root.
gid: El ID del grupo que tendrá permisos como propietario sobre el recurso compartido.

3. Reiniciar el sistema y comprobar si se monta la carpeta sin errores.

Montar una carpeta SAMBA automáticamente en Windows

1. Iniciar sesión con un usuario autorizado para acceder al recurso compartido.

2. Agregar una unidad de red:

Para que se persistente hay que crear un punto de montaje en la siguiente ventana:
Explorador de archivos > Este equipo > Pestaña "Equipo" > Conectar a unidad de red

En la ventana asignaremos la letra de unidad de red donde se montará, además de la ruta del recurso compartido como - \\IP_servidor\Recurso.


Más parámetros en SAMBA

Ejemplo de un bloque completo en el archivo /etc/samba/smb.conf:

[nombre_recurso]
    comment = Comentario del recurso compartido.
    path = /carpeta_a_compartir
    browseable = no
    valid users = user1,user2,%S
    force user = user1
    force group = group1
    read only = no
    read list = user1,user2
    write list = user1,user2
    create mask = 0700
    directory mask = 0700
    guest ok = no
    guest only = no
    guest account = user1
    hide files = *.tmp
    hide dot files = yes
    follow symlinks = yes
    wide links = no
    hosts allow = pc1
    hosts deny = pc2

Parámetros básicos:

[nombre_recurso]: Es el nombre que aparecerá en Windows como carpeta.
comment: Comentario opcional que no afecta en la configuración.
path: Ruta completa de la carpeta a compartir en el servidor.
browseable: No permite que se vea como recurso compartido así que solo se puede entrar por ruta de red como: \\IP_servidor_Linux\Recurso.

Lista de control de acceso:

valid users: Permite definir usuarios que tengan acceso a la carpeta. Si se define %S se especifica que el nombre del recurso compartido también se incluya (solo es útil si el nombre de la carpeta es el de un usuario).
force user: Obliga a que todos los accesos se hagan con un usuario específico.
force group: Obliga a que todos los accesos se hagan con un grupo específico.

Parámetros de permisos básicos:

read only: Para permisos de escribir: no, o solo-lectura: yes.
read list: Lista de usuarios que solo pueden leer aunque read only = no.
write list: Lista de usuarios que pueden escribir aunque read only = yes.

Parámetros de permisos avanzados:

create mask: Define los permisos por defecto para los archivos nuevos que se creen en el recurso compartido.
directory mask: Define los permisos por defecto para los directorios nuevos que se creen dentro del recurso compartido.

Parámetros del usuario anónimo:

guest ok: Para permisos que usuarios anónimos accedan: yes, o no: no.
guest only: Para permisos que solo usuarios anónimos accedan: yes, o no: no.
guest account: Se puede definir un usuario anónimo diferente al de por defecto.

Parámetros de archivos:

hide files: No enseña archivos por coincidencias como por ejemplo *.tmp.
hide dot files: No enseña archivos que empiezen por un punto (ocultos).

Parámetros de enlaces simbólicos:

follow symlinks: Permite seguir enlaces simbólicos dentro del recurso: yes, o no: no.
wide links: Permite enlaces simbólicos que apuntan fuera del recurso: yes, o no: no.

Parámetros de hostnames:

hosts allow: Lista de hostnames al que permitir acceder al recurso.
hosts deny: Lista de hostnames al que denegar acceder al recurso.

Por la mitad del archivo de configuraciones hay un bloque para las carpetas personales al cual se le pueden configurar los parámetros enseñados anteriormente:

[homes]

byAd12.pages.dev/guides