30 de Enero, 2008

Imprimiendo con CUPS y Samba

La impresora
Nuestra fuente de frustraciones

La verdad es que ha sido bastante problemático este tema, para lo sencillo que debería ser :(.

Resulta que tenemos una impresora en la oficina que queremos compartir, además empleando una IP pública. Esto complica las cosas porque hay que implantar una política de seguridad, aunque sea mínima -no queremos que cualquiera imprima :D-.

El estado actual de CUPS es más que razonable para la mayoría de los usos comunes, pero nos hemos encontrado con que muchos clientes aún son incapaces de mandar adecuadamente usuario y contraseña cuando lanzan los trabajos de impresión.

Me ha sorprendido bastante. Desde Ubuntu 7.10 puedo administrar perfectamente el servidor CUPS remoto, pero al imprimir... envía el usuario con el que he hecho login en mi sistema, y además no se envía ninguna contraseña (¡en parte me alegro de esto!).

Así que después de darle muchas vueltas hemos llegado a la conclusión de que CUPS no nos valía para nuestras necesidades :(.

Como las impresoras compartidas por SMB sí tienen buen soporte para usuario/contraseña en los clientes con los que trabajamos (Ubuntu, Gentoo, alguna CentOS, etc), hemos decidido compartir la impresora con Samba, a través de CUPS.

Para ello, y cansados de darle vueltas al tema, hemos planteado un esquema de seguridad sencillo:

  • Existirá un usuario para todos los clientes, necesario para imprimir en la impresora usando SMB.
  • CUPS estará cerrado, solo accesible localmente.

No es la bomba, pero se ajusta a nuestras necesidades.

Primero creamos un usuario, por ejemplo smbprint, que no es necesario que tenga acceso a la máquina.

# adduser --shell /usr/sbin/nologin smbprint

La contraseña debería ser adecuada, ya que en este caso estará expuesta usando SMB, y el usuario debería tener espacio en su $HOME porque se utilizará como spool para los documentos a imprir.

La configuración que usamos en CUPS, una vez añadida la impresora empleando el interfaz web, es la siguiente:

# Show general information in error_log.
LogLevel info
SystemGroup sys root

# ONLY local access
Listen 127.0.0.1:631
Listen /var/run/cups/cups.sock

Browsing On
BrowseOrder allow,deny
BrowseAddress @LOCAL
<Location />
  Order deny,allow
  Deny from all
  Allow @LOCAL
  Allow 127.0.0.1
</Location>

En printers.conf nos aseguramos que nuestro usuario puede imprimir, o porque no es necesario indicar nada, o explícitamente con la directiva AllowUser.

La configuración de Samba elegida también es simple, ya que no se usa SMB para nada más en esa máquina:

[global]
        log file = /var/log/samba/log.%m
        max log size = 1000
        printcap name = cups
        printing = cups
        security = share
        hosts allow = 192.168.0. 127.0.0.1
        guest account = smbprint

[OpenSistemasPrinter]
        comment = OfficeSharedPrinter
        browseable = yes
        printable = yes
        public = yes
        create mode = 0700
        guest only = yes
        use client driver = yes
        path = /home/smbprint

En la configuración hay que destacar dos cosas: en rojo el rango de IP desde el que podremos imprimir (en nuestro caso es más amplio, y además son IPs públicas), y en verde el nombre de la impresora que asignamos en CUPS.

Con esto ya solo nos queda configurar la impresora como SMB con el usuario/contraseña que hemos elegido e indicando el driver adecuado par la impresora.

Esto último es importante, porque usaremos el driver en el cliente y lo que le llegará a CUPS desde Samba será ya en formato RAW listo para que lo procese el aparato.

En principio no me seducía mucho la idea de trabajar con SMB, pero dado que no se puede llevar una política de usuarios adecuada con CUPS ahora mismo por limitaciones de los clientes (¡o no sabemos hacerlo! :D), esperaremos a que arreglen el bug (aunque sería en el nuevo system-config-printer) y mientras tanto... ¡a imprimir!

Anotación por Juan J. Martínez, clasificada en: printing, samba, cups, software libre.

Hay 1 comentario

Gravatar

Cuidado que nadie te haga un Cross Site Printing! xD

por coder, en 2008-02-02 19:34:20

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: