303.4 Compartición de Impresoras
Introducción
La compartición de impresoras es una funcionalidad clave en entornos mixtos. Samba permite que clientes Windows impriman a través de impresoras gestionadas por CUPS (Common Unix Printing System) en Linux. Esta integración incluye soporte para point-and-print (instalación automática de drivers) y gestión remota de colas de impresión.
Integración Samba-CUPS
Arquitectura
Cliente Windows → Samba (SMB/CIFS) → CUPS → Impresora física
Samba actúa como intermediario entre los clientes Windows y el sistema de impresión CUPS de Linux. Los trabajos de impresión se envían vía protocolo SMB y Samba los reenvía a CUPS.
Configuración básica
[global]
printing = cups
printcap name = cups
load printers = yes
cups options = raw| Parámetro | Descripción |
|---|---|
printing | Sistema de impresión a usar (cups, bsd, lprng) |
printcap name | Fuente de la lista de impresoras (cups para autodescubrir) |
load printers | Cargar automáticamente todas las impresoras de CUPS |
cups options | Opciones adicionales para CUPS (raw = sin filtro) |
Para el examen:
printing = cupsyprintcap name = cupsson los parámetros esenciales para la integración Samba-CUPS.load printers = yescarga automáticamente todas las impresoras definidas en CUPS.
Sección [printers]
La sección especial [printers] define la configuración por defecto para todas las impresoras compartidas:
[printers]
comment = Todas las impresoras
path = /var/spool/samba
browseable = no
printable = yes
guest ok = no
writable = no
create mask = 0700| Parámetro | Descripción |
|---|---|
path | Directorio de spool para trabajos de impresión |
printable | Permite enviar trabajos de impresión (necesario: yes) |
browseable | no evita que cada impresora aparezca como share aparte |
writable | no para shares de impresora (se usa printable) |
Para el examen:
printable = yeses lo que distingue un share de impresora de un share de archivos. Es obligatorio para que los clientes puedan enviar trabajos de impresión.
Directorio de spool
El directorio de spool debe existir y tener los permisos correctos:
mkdir -p /var/spool/samba
chmod 1777 /var/spool/sambaImpresión raw (sin procesamiento)
Con cups options = raw, Samba envía los datos de impresión directamente a CUPS sin procesamiento adicional:
[global]
cups options = rawEsto es útil cuando los clientes Windows ya envían los datos en el formato correcto para la impresora (porque tienen el driver instalado localmente).
Para el examen:
cups options = rawhace que CUPS no aplique filtros adicionales al trabajo de impresión. Los datos se envían tal cual los genera el driver del cliente.
Point-and-Print (Drivers)
Concepto
Point-and-Print permite que los clientes Windows descarguen e instalen automáticamente los drivers de impresora desde el servidor Samba, eliminando la necesidad de instalación manual.
Share print$
El share especial [print$] almacena los drivers de impresora:
[print$]
comment = Drivers de impresoras
path = /var/lib/samba/drivers
browseable = yes
read only = yes
write list = @printadmin rootEstructura de directorios de drivers
/var/lib/samba/drivers/
├── W32X86/ # Drivers Windows 32-bit (Windows XP/Vista)
│ └── 3/ # Versión 3 de driver
├── x64/ # Drivers Windows 64-bit
│ └── 3/ # Versión 3 de driver
└── WIN40/ # Drivers Windows 95/98
└── 0/ # Versión 0 de driver
# Crear la estructura de directorios
mkdir -p /var/lib/samba/drivers/{W32X86,x64,WIN40}/{0,2,3}
chown -R root:printadmin /var/lib/samba/drivers
chmod -R 2775 /var/lib/samba/driversPara el examen: El share
[print$]es donde Samba almacena los drivers de impresora para distribución automática a clientes Windows. La estructura de subdirectorios corresponde a las diferentes arquitecturas de Windows.
Gestión de drivers con rpcclient
Subir drivers
# Conectar con rpcclient
rpcclient //localhost -U administrador
# Subir un driver (dentro de rpcclient)
rpcclient $> adddriver "Windows x64" \
"NombreDriver:driver.dll:datafile.ppd:configfile.dll:helpfile.hlp"Asociar driver a impresora
rpcclient $> setdriver "NombreImpresora" "NombreDriver"Listar drivers e impresoras
# Listar drivers instalados
rpcclient $> enumdrivers 3
# Listar impresoras
rpcclient $> enumprinters
# Ver información de una impresora
rpcclient $> getprinter "NombreImpresora" 2Para el examen:
rpcclientcon los comandosadddriverysetdriverse usa para gestionar drivers de impresora desde la línea de comandos Linux.enumdriversyenumprinterslistan los recursos disponibles.
Pipes SPOOLSS
El protocolo SPOOLSS (Spooler Subsystem) es el mecanismo RPC que Windows usa para comunicarse con el servicio de impresión. Samba implementa las pipes SPOOLSS para:
- Enumerar impresoras y drivers
- Enviar y gestionar trabajos de impresión
- Subir y descargar drivers
- Gestionar configuración de impresoras
Las operaciones SPOOLSS se pueden realizar con:
rpcclientdesde Linux- Herramientas de administración de impresoras desde Windows (RSAT)
- PowerShell o
printmanagement.msc
Configuración avanzada de impresoras individuales
Se pueden definir impresoras individuales con configuración específica:
[LaserColor]
comment = Impresora láser a color del segundo piso
path = /var/spool/samba
printable = yes
printer name = HP_Color_LaserJet
valid users = @empleados
hosts allow = 192.168.1.0/24| Parámetro | Descripción |
|---|---|
printer name | Nombre de la impresora en CUPS |
printable | Permite impresión en este share |
valid users | Usuarios con acceso a esta impresora |
Ejemplo completo de configuración
[global]
workgroup = EMPRESA
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[printers]
comment = Todas las impresoras
path = /var/spool/samba
browseable = no
printable = yes
guest ok = no
writable = no
create mask = 0700
[print$]
comment = Drivers de impresoras
path = /var/lib/samba/drivers
browseable = yes
read only = yes
write list = @printadmin root
create mask = 0664
directory mask = 0775Diagnóstico de problemas
# Verificar que CUPS está funcionando
systemctl status cups
lpstat -p -d
# Verificar impresoras visibles desde Samba
smbclient -L //localhost -U admin -c "ls"
# Verificar configuración de impresión
testparm -s | grep -i print
# Enviar trabajo de prueba desde Linux
lp -d NombreImpresora /etc/hostname
# Ver cola de impresión
lpq -P NombreImpresora
# Ver logs de CUPS
tail -f /var/log/cups/error_logPara el examen:
lpstat -pmuestra las impresoras disponibles en CUPS. Si Samba no muestra impresoras, verificar primero que CUPS las tiene configuradas y queload printers = yesestá activo.
Trampas del examen
Errores comunes y distinciones criticas que LPI suele evaluar en este subtema:
printable = yesdistingue share de impresora de share de archivos — Sinprintable = yes, un share no acepta trabajos de impresion. Es el parametro obligatorio para impresoras.writable = noes correcto para shares de impresora (se usa printable, no writable).printing = cupsyprintcap name = cupsson esenciales — Estos dos parametros en [global] configuran la integracion Samba-CUPS. Sin ellos, Samba no descubre las impresoras de CUPS. Las preguntas presentan escenarios donde las impresoras no aparecen y la causa es la ausencia de estos parametros.cups options = rawvs procesamiento CUPS — Conraw, CUPS envia los datos sin filtrar (el driver del cliente hace el trabajo). Sinraw, CUPS aplica sus propios filtros que pueden causar problemas con drivers Windows. Las preguntas piden saber cuando usar cada opcion.[print$]es para drivers,[printers]es para impresoras —[print$]almacena los drivers de impresora para Point-and-Print (distribucion automatica).[printers]define la configuracion por defecto de las impresoras compartidas. Confundir ambos shares especiales es error comun.- Estructura de drivers: W32X86 vs x64 —
W32X86/3/es para drivers Windows 32-bit,x64/3/para 64-bit. La estructura de subdirectorios debe existir con permisos correctos. Las preguntas piden identificar el directorio correcto segun la arquitectura del cliente. rpcclient adddriverysetdriver—adddriversube un driver al servidor.setdriverasocia un driver a una impresora. Son dos pasos separados.enumdrivers 3lista los drivers version 3 instalados. Las preguntas piden la secuencia correcta.- SPOOLSS pipes para comunicacion de impresion — El protocolo SPOOLSS gestiona la comunicacion de impresion entre Windows y Samba via RPC. Las operaciones se pueden hacer con
rpcclient(Linux) o herramientas RSAT (Windows). Las preguntas suelen pedir identificar la herramienta correcta. - Directorio spool con permisos 1777 —
/var/spool/sambanecesita permisos1777(sticky bit) para que todos los usuarios puedan crear trabajos de impresion pero no puedan eliminar los de otros. Permisos incorrectos causan errores de impresion.