[COMO] Compartir compartir archivos en red Linux - Windows - (Samba)

Imagen de Gabriel_M
11,550 puntos

Este es uno de los tantos procedimientos existentes para compartir archivos en una red de máquinas Linux y Windows

Se parte de la base que red esta compuesta por 2 equipos:

  • Un servidor, Linux
  • Una máquina con Windows

Que utilizan direcciones de red reservadas (no utilizables en Internet) de clase A (10.140.x.x).

Las máquinas se identifican como:

  • Ubuntu -> 10.140.111.1 (Máquina Linux)
  • Windows -> 10.140.111.2 (Máquina Windows)

El grupo de trabajo es winlinux

La dirección de red, es la 10.140.111.0, la dirección de "broadcast" 10.140.111.255 y la máscara de subred 255.255.255.0

La red ya fue configurada y se encuentra funcionando.

El usuario windows es winuser y pertenece al grupo winlinux

El directorio a compartir que se encuentra en la máquina Linux es /home/comun

Se necesita tener instalados los siguientes paquetes:

samba Servidor SMB.

samba-client Clientes para el protoclo SMB.

samba-common Archivos necesarios para cliente y servidor.

 

Configuración:

Alta de usuario.

Las cuentas entre el servidor Samba y las máquinas Windows deben estar sincronizadas. El usuario y su clave de una máquina con Windows en el servidor Samba debe existir con ese nombre y esa clave. Los usuarios que acceden a samba no requieren acceso al interprete de comandos, por lo que no es necesario asignar clave de acceso con el mandato passwd.

Se debe definir /sbin/nologin o bien /bin/false como intérpete de comandos para la cuenta del usuario Windows.

sudo useradd -s /sbin/nologin winuser sudo smbpasswd -a winusuer

Archivo lmhosts

Para resolver localmente los nombres NetBIOS se los asocia con direcciones IP correspondientes, esto se hace en el archivo /etc/samba/lmhosts.

sudo gedit /etc/samba/lmhosts

En donde encontraremos lo siguiente:

127.0.0.1       localhost

Se deben añadir los nombres asociados a la dirección IP que se tenga dentro de la red local, separados con un espacio de tabulador, quedando así:

127.0.0.1		localhost
10.140.111.1	Linux
10.140.111.2	Windows

Archivo smb.conf.

Editar el archivo /etc/samba/smb.conf

sudo gedit /etc/samba/smb.conf

Dentro de este existe información de utilidad comentada con un #

Y ejemplos comentados con ;

 

El grupo de trabajo

workgroup permite asignar el grupo de trabajo deseado:

workgroup = winlinux

Descripción del servidor

server string para hace un comentario breve del servidor.

server string = Servidor Samba %v en %L

Parámetros de seguridad.

hosts allow permite determinar la lista de control de acceso que definirá que máquinas o redes podrán acceder hacia el servidor:

hosts allow = 10.140.111. 127.

interfaces permite establecer desde que interfaces de red del sistema se escucharán peticiones. Samba no responderá a peticiones provenientes desde cualquier interfaz no especificada. Esto es útil cuando Samba se ejecuta en un servidor que sirve también de puerta de enlace para la red local, impidiendo se establezcan conexiones desde fuera de la red local.

interfaces = 10.140.111.254/24

Impresoras.

Las impresoras se comparten de modo predeterminado.

Si se permite acceder hacia la impresora como usuario invitado sin clave de acceso, basta con añadir public = Yes

[printers]         
comment = El comentario que guste.
path = /var/spool/samba
printable = Yes
browseable = No
writable = no
printable = yes
public = Yes

Windows 9x suele tener problemas para comunicarse con Samba para poder imprimir, para evitar estos problemas habría que agregar algunos parámetros que resolverán cualquier eventualidad:

[printers]         
comment = Impresoras.
path = /var/spool/samba
printable = Yes
browseable = No
writable = no
printable = yes
public = Yes
print command = lpr -P %p -o raw %s -r
lpq command = lpstat -o %p
lprm command = cancel %p-%j

Se puede definir a un usuario o a un grupo (@winlinux) para la administración de las colas de las impresoras:

[printers]         
comment = Impresoras.
path = /var/spool/samba
printable = Yes
browseable = No
writable = no
printable = yes
public = Yes
print command = lpr -P %p -o raw %s -r
lpq command = lpstat -o %p
lprm command = cancel %p-%j
printer admin = winuser, @winlinux

Compartir directorios

Este es un ejemplo que funciona en general:

Nombre del recurso a compartir [comun]  Comentario acerca del recurso                 
comment = Directorio compartido Ruta completa del recurso
path = /home/comun

Permitir o no el acceso como usuario invitado. El valor puede ser Yes o No.

guest ok = Yes

 

Otra forma de permitir el acceso como usuario invitado. El valor puede ser Yes o No.

public = Yes	

 

Permitir mostrar el recurso en las listas de recursos compartidos. El valor puede ser Yes o No.

browseable	= Yes

 

Permitir la escritura, es opuesto a read only. El valor puede ser Yes o No. «writable = Yes» es lo mismo que «read only = No».

writable = No

 

usuarios o grupos que pueden acceder al recurso compartido. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @.

valid users = winuser,@winusers	

 

Usuarios o grupos que pueden acceder con permiso de escritura. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @.

write list = winuser

 

Usuarios o grupos que pueden acceder con permisos administrativos para el recurso. Es decir, podrán acceder hacia el recurso realizando todas las operaciones como super-usuarios. Los valores pueden ser nombres de usuarios separados por comas o bien nombres de grupo antecedidos por una @.

admin users = winuser

 

Al igual que directory mode, define que permiso en el sistema tendrán los subdirectorios creados dentro del recurso.

directory mask  = 0755

 

Define que permiso en el sistema tendrán los nuevos archivos creados dentro del recurso.

create mask = 0644 	

Se permite en el ejemplo el acceso a cualquiera como recurso de solo lectura salvo para el usuario winuser. Todo directorio nuevo que sea creado en su interior tendrá permiso 755 y todo archivo que sea puesto en su interior tendrá permiso 644.

Ocultar y denegar acceso a archivos.

Se utiliza hide dot files para mantener ocultos los archivos de sistema que comienzan con un punto:

hide dot files = Yes  

Se utiliza veto files para especificar la lista, separada por diagonales, de aquellas cadenas de texto que denegarán el acceso a los archivos cuyos nombres contengan estas cadenas. Por ejemplo, denegar el acceso a los archivos cuyos nombres incluyan la palabra «Security» y a los que tengan extensión «.tmp»:

veto files = /*Security*/*.tmp/  

Montar unidades de red.

Para poder visualizar desde Linux las máquinas Windows e interactuar con los directorios compartidos por estás, es necesario

Desde el entorno de GNOME.

Este incluye un módulo para Nautilus que permite acceder hacia los recursos compartidos a través de Samba sin necesidad de modificar cosa alguna en el sistema. Solo hay que hacer clic en Servidores de red en el menú de GNOME.

Iniciar Samba

Por primera vez es necesario ejecutar:

sudo  /etc/rc.d/init.d/smb  start

Para reiniciar el servicio es necesario ejecutar:

sudo   /etc/rc.d/init.d/smb  restart  

Para que se inicie automáticamente en nuestro equipo ejecutar:

sudo   /sbin/chkconfig  --add  smb