Product SiteDocumentation Site

11.5. Configuración de espacios compartidos Windows con Samba

Samba es un conjunto de herramientas que administran el protocolo SMB (también conocido como «CIFS») en Linux. Windows utiliza este protocolo para espacios compartidos de red e impresoras compartidas.
Samba también puede actuar como un controlador de dominio Windows. Esta es una herramienta sobresaliente para asegurar una integración perfecta entre servidores Linux y las máquinas de escritorios en las oficinas que todavía utilizan Windows.

11.5.1. Servidor Samba

El paquete samba contiene los dos servidores principales de Samba 3: smbd y nmbd.

11.5.1.1. Configuración con debconf

El paquete define una configuración mínima basada en las respuestas a unas pocas preguntas Debconf realizadas durante la instalación inicial; puede rehacer luego este paso de configuración ejecutando dpkg-reconfigure samba-common samba.
La primera porción de información requerida es el nombre del grupo de trabajo al que pertenecerá el servidor Samba (en nuestro caso la respuesta es FALCOTNET). Otra pregunta es sobre si se deben cifrar las contraseñas. La respuesta es sí, debido a que es necesario para los clientes Windows más recientes; además, aumenta la seguridad. Por el otro lado, esto implica que deberá administrar las contraseñas Samba separadas de las contraseñas Unix.
El paquete también propone identificar el servidor WINS de la información provista por el demonio DHCP. Los administradores de Falcot Corp rechazaron esta opción ya que pretenden utilizar el servidor Samba en sí como servidor WINS.
La última pregunta es sobre si se iniciarán los servidores a través de inetd o como demonios independientes. Sólo es interesante utilizar inetd cuando se utiliza poco Samba; por lo tanto los administradores de Falcot prefirieron utilizar demonios independientes.

11.5.1.2. Configuración manual

11.5.1.2.1. Cambios en smb.conf
Los requisitos en Falcotr requieren modificar otras opciones en el archivo de configuración /etc/samba/smb.conf. Los siguientes extractos resumen los cambios realizados en la sección [global].
[global]

## Exploración/Indetificación ###

# Modifique esto al grupo de trabajo/nombre de dominio NT al que pertenecerá su servidor Samba
   workgroup = FALCOTNET

# «server string» es el equivalente al campo de descripción en NT
   server string = %h server (Samba %v)

# Sección sobre Windows Internet Name Serving Support:
# Compatibilidad WINS - Indicar al componente NMBD de Samba que active su servidor WINS
   wins support = yes 1

[...]

####### Autenticación #######

# «security = user» siempre es una buena idea. Esto requerirá una cuenta
# Unix en este servidor para todo usuario que acceda al servidor. Revise
# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html
# en el paquete samba-doc para más detalles.
   security = user 2

# Puede desear cifrar contraseñas. Revise la sección «encrypy passwords»
# de la página de manual smb.conf(5) antes de activarlo.
   encrypt passwords = true

# Si utiliza contraseñas cifradas, Samba necesitará saber qué tipo de
# base de datos utiliza.
   passdb backend = tdbsam

[...]

########## Impresión ##########

# Si desea cargar su lista de impresoras automáticamente en lugar
# de configurarlas individualmente, necesitará esto
   load printers = yes 3

# Impresión lpr(ng). Puede desear modificar la ubicación del
# archivo printcap
;   printing = bsd
;   printcap name = /etc/printcap

# Impresión CUPS. Revise también la página de manual cupsaddsmb(8)
# en el paquete cups-client.
   printing = cups 4
   printcap name = cups

1

Indica que Samba debe funcionar como un servidor de nombres Netbios (WINS) para la red local.

2

Este es el valor predeterminado para este parámetro; sin embargo, como es central a la configuración de Samba, se recomienda rellenarlo explícitamente. Cada usuario debe autenticarse antes de acceder a cualquier espacio compartido.

3

Indica a Samba que comparta automáticamente todas las impresoras locales que existen en la configuración de CUPS. Todavía es posible restringir el acceso a estas impresoras agregando las secciones apropiadas.

4

Especifica el sismtea de impresión a utilizar; CUPS en nuestro caso.
11.5.1.2.2. Añadir usuarios
Cada usuario Samba necesita una cuenta en el servidor; primero debe crear las cuentas Unix, luego necesita registrar el usuario en la base de datos de Samba. El paso de Unix se realiza de la forma normal (por ejemplo, utilizando adduser).
Agregar un usuario existente a la base de datos de Samba sólo es cuestión de ejecutar smbpasswd -a usuario; esto pedirá la contraseña de forma interactiva.
Puede eliminar un usuario ejecutando smbpasswd -x usuario. También puede desactivar temporalmente una cuenta Samba (con smbpasswd -d usuario) y reactivarla después (con smbpasswd -e usuario).
11.5.1.2.3. Cambio a controlador de dominio
Esta sección documenta cómo los administradores de Falcot fueron inclusive más allá y convirtieron el servidor Samba en un controlador de dominio con perfiles móviles (que permite a los usuarios utilizar su escritorio sin importar la máquina en la que se conecten).
Primero agregaron unas pocas directivas adicionales en la sección [global] del archivo de configuración:
domain logons = yes              1
preferred master = yes           
logon path = \\%L\profiles\%U    2
logon script = scripts/logon.bat 3

1

Habilita la funcionalidad de controlador de dominio.

2

Especifica la ubicación de los directorios personales de los usuarios. Estos se almacenan en un espacio compartido dedicado, lo que permite activar opciones específicas (en particular profile acls, un requisito necesario para ser compatible con Windows 2000, XP y Vista).

3

Especifica el script de lote («batch», no interactivo) que se ejecutará en la máquina Windows cliente cada vez que se inice sesión. En este caso, /var/lib/samba/netlogon/scripts/logon.bat. El script necesita estar en formato DOS, donde las líneas están separadas por un carácter de retorno de carro y un carácter de cambio de línea; si el archivo fue creado en Linux, ejecutar unix2dos lo convertirá.
Los programas más utilizados en estos scripts permiten la creación automática de discos de red y sincronizar la hora del sistema.

Ejemplo 11.27. El archivo logon.bat

net time \\ARRAKIS /set /yes
net use H: /home
net use U: \\ARRAKIS\utils
También crearon dos espacios compartidos adicionales con sus directorios asociados:
[netlogon]
comment = Servicio de sesiones de red
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
share modes = no

[profiles]
comment = Perfiles compartidos
path = /var/lib/samba/profiles
read only = No
profile acls = Yes
También debieron crear los directorios de cada usuario (como /var/lib/samba/profiles/usuario) y cada uno de ellos debe ser propiedad del usuario apropiado.

11.5.2. Cliente Samba

La funcionalidad de cliente en Samba le permite a una máquina Linux acceder a espacios e impresoras compartidas en Windows. Los programas necesarios se encuentran en los paquetes cifs-utils y smbclient.

11.5.2.1. El programa smbclient

El programa smbclient consulta servidores SMB. Puede utilizarse la opción -U usuario, para conectarse con el servidor bajo una identidad concreta. Con smbclient //servidor/espaciocompartido se accede al espacio compartido de modo interactivo como si se tratara de un cliente FTP en una consola. smbclient -L servidor enumerará todos los espacios compartidos (y visibles) en un servidor.

11.5.2.2. Montaje de espacios compartidos de Windows

El programa mount permite montar un espacio compartido de Windows en la jerarquía del sistema de archivos de Linux (con la ayuda de mount.cifs provisto por cifs-utils).

Ejemplo 11.28. Montaje de un espacio compartido de Windows

mount -t cifs //arrakis/shared /shared \
      -o credentials=/etc/smb-credentials
El archivo /etc/smb-credentials (que no debe ser accesible por usuarios) tiene el siguiente formato:
username = usuario
password = contraseña
Puede especificar otras opciones en la línea de órdenes; la lista completa se encuentra disponible en la página de manual mount.cifs(1). Dos opciones en particular pueden ser interesantes: uid y gid que permiten forzar el usuario y grupo dueños de los archivos disponibles en el punto de montaje para no restringir el acceso a root.
También puede configurar el montaje de un espacio compartido Windows en /etc/fstab:
//servidor/shared /shared cifs credentials=/etc/smb-credentials
Puede desmontar un espacio compartido SMB/CIFS con el programa umount estándar.

11.5.2.3. Impresión en una impresora compartida

CUPS es una solución elegante para imprimir desde una estación de trabajo Linux en una impresora compartida por una máquina Windows. Cuando instale smbclient, CUPS le permitirá instalar impresoras compartidas Windows de forma automática.
Los pasos necesarios son los siguientes:
  • Introduzca la interfaz dec configuración CUPS: http://localhost:631/admin
  • Pulse en «Agregar impresora».
  • Seleccione el dispositivo de impresión, elija «Impresora Windows via SAMBA».
  • Introduzca la URI de conexión para la impresora de red. Debería ser similar a la siguiente:
    smb://usuario:contraseña@servidor/impresora.
  • Introduzca el nombre que identificará unívocamente a esta impresora. Luego introduzca la descripción y la ubicación de la impresora. Se mostrarán estas cadenas a los usarios para ayudarlos a identificar las impresoras.
  • Indique el fabricante/modelo de la impresora o, directamente, provea un archivo de descripción de impresora (PDD: «Printer Description File») funcional.
Voilà, ¡la impresora ya está lista!