CUPS (o dónde está mi cola)

Arco

Esta receta explica cómo configurar una máquina para utilizar un servidor de impresoras CUPS remoto

Configurar la impresora es una tarea tan trivial en GNU que vamos a aprovechar para montar un servicio de impresión decentillo.

Impresoras locales y remotas
Hace falta que explique que es una cosa y otra?. Pues si... que para eso estamos Sticking out tongue.

Una impresora es local o remota si tiene o no un cable que va directamente desde nuestro equipo a la impresora... falso! Jawdropping! Eso depende del equipo donde esté nuestra cola de impresión (de aquí en adelante lo llamaremos spool para evitar suspicacias). Una netprinter es directamente una impresora remota, en eso estamos de acuerdo. Sin embargo, una impresora serie o USB puede ser remota (la impresora se conecta a un equipo y nuestro spool no está en ese equipo) o local (el spool y la impresora residen en el mismo equipo). Gracias a cups podremos imprimir en una impresora local que se encuentre en el otro hemisferio... por ejemplo Eye-wink

Spoolers locales y remotos
Aquí las diferencias son evidentes: el spool está en nuestro equipo? si, pues es local; no, pues es remoto.

A partir de aquí tenemos que saber qué clase de organización queremos tener en nuestro servicio de impresión: podemos tener todas las impresoras compartidas por red, cada cliente tiene su propia cola y todos los clientes envían sus trabajos por red a las impresoras que deseen. También podemos tener una única cola remota donde configuremos todas las impresoras que queramos. Los clientes sólo deben conocer la ubicación de esa cola para tener acceso a todas las impresoras.

Qué instalar y dónde
Bien, primero de todo: cualquier máquina que desee imprimir deberá tener instalado el cliente cups:

$ aptitude install cupsys-client

Y ahora tenemos dos opciones: si la máquina tiene una impresora local que deseamos compartir necesitaremos el servidor cups:

$ aptitude install cupsys-server

Para las netprinters no es necesario dedicar una máquina, en cualquiera que tengamos ya instalado el servidor de cups podremos añadirlas.

Configurar la interfaz web administrativa de cups

Esta interfaz sólo soporta SSL, por tanto debemos crear los certificados oportunos (una receta por aquí indica cómo hacerlo) y los copiaremos en /etc/cups/ssl con el nombre de cups.pem. Ahora sólo debemos restringir un poco el acceso (malditos hackers Evil!), en el archivo /etc/cups/cupsd.conf tendremos que modificar algo parecido a:

...
# Acceso al servicio

  Order allow,deny
  Allow @LOCAL
  # Mi LAN
  Allow 192.168.0.
  # Un equipo cualquiera
  Allow 10.0.0.1

# Acceso administrativo

  Encryption Requiered
  Order allow,deny
  Allow @LOCAL
  Allow 192.168.0.


  AuthType Basic
  # Requiere un usuario del sistema local
  Requiere user @SYSTEM
  Order allow,deny
  Allow @LOCAL
  Allow 192.168.0.

...

Con esto tendremos acceso a la interfaz administrativa con la que podremos añadir impresoras locales, spoolers remotos y netprinters. Por cada impresora que añadamos podremos indicar políticas de seguridad determinadas: encriptación de documentos, acceso de usuarios y equipos, etc.

Configurar clientes
Bueno, si tenemos el cliente cups instalado y queremos acceder a algún spool remoto con un montón de impresoras ya configuradas y listas para atascarse, creamos/modificamos el archivo /etc/cups/client.conf para dejarlo como sigue:

ServerName 192.168.0.1
Encryption Never

Aunque esto es poco seguro ya que nunca usará TSL (incluso estando disponible)... pero podemos indicar IfRequest en otro caso... Eye-wink

Si ahora ejecutáis gnome-cups-manager os aparecerán todas las impresoras configuradas en el spool remoto y marcadas como públicas.

Apéndice A: Autoconfigurar impresoras locales
Como somos muy vaguetes... alguien por ahí hizo un programa que lo hace solito Eye-wink :

$ aptitude install printconf
$ printconf