11.6. Funciones especiales en SUSE Linux

Se ha llevado a cabo una adaptación de varias funciones de CUPS para SUSE Linux. Aquí se tratan algunos de los cambios más importantes.

11.6.1. Servidor y cortafuegos CUPS

Hay varias formas de configurar CUPS como cliente de un servidor de red.

  1. Para cada cola del servidor de red, puede configurar una cola local para reenviar todos los trabajos al servidor de red correspondiente (cola de reenvío). Por lo general, no se recomienda hacer esto, puesto que todas las máquinas clientes deben configurarse nuevamente siempre que cambie la configuración del servidor de red.

  2. Los trabajos de impresión también pueden reenviarse directamente a un servidor de red. Para este tipo de configuración, no ejecute un daemon CUPS local. lp o las llamadas a las bibliotecas correspondientes a otros programas pueden enviar trabajos directamente al servidor de red. No obstante, esta configuración no funciona si también desea imprimir en una impresora local.

  3. El daemon CUPS puede escuchar a los paquetes de difusión IPP que envían otros servidores de red para anunciar las colas disponibles.

    Esta es la mejor configuración CUPS para imprimir en servidores CUPS remotos. No obstante, existe el riesgo de que un atacante envíe difusiones IPP con colas y de que el daemon local acceda a la cola falsa. Si entonces se muestra la cola con el mismo nombre que el de otra cola del servidor local, es posible que el propietario del trabajo crea que éste se ha enviado a un servidor local, cuando en realidad se ha enviado al servidor del atacante.

YaST puede detectar servidores CUPS explorando todos los hosts de la red local para comprobar si ofrecen el servicio IPP o escuchando las difusiones IPP. Para ello es preciso que el cortafuegos permita los paquetes entrantes en el puerto 631/UDP (cliente del servicio IPP), lo que se habilita automáticamente cuando se configura el equipo para que resida en la zona interna del cortafuegos. Si se abre un puerto para configurar el acceso a colas remotas en la zona externa, puede suponer un riesgo para la seguridad, porque los posibles atacantes podrían difundir un servidor que fuese aceptado por los usuarios. Por defecto, las difusiones IPP se rechazan en la zona externa. Consulte Sección 4.1.4.1, “Configuración con YaST” para obtener información detallada acerca de la configuración del cortafuegos.

De forma alternativa, los usuarios pueden detectar servidores CUPS explorando activamente los hosts de red local o configurar todas las colas manualmente. No obstante, este método no se recomienda a causa de las razones que se mencionaron al comienzo de esta sección.

11.6.2. Cambios en el servicio de impresión CUPS

Estos cambios se aplicaron inicialmente para SUSE Linux 9.1.

11.6.2.1. Ejecución de cupsd el usuario lp

Al iniciarse, cupsd cambia del usuario root al usuario lp. Con ello, se proporciona un nivel de seguridad muy superior, ya que el servicio de impresión CUPS no se ejecuta con permisos sin restricciones, sino únicamente con los permisos necesarios para el servicio de impresión.

No obstante, la autenticación (comprobación de la contraseña) no puede efectuarse mediante /etc/shadow, puesto que lp no tiene acceso a /etc/shadow. En lugar de esto, debe utilizarse la autenticación del CUPS específico por medio de /etc/cups/passwd.md5. Para ello, deben especificarse en /etc/cups/passwd.md5 un administrador CUPS con el grupo de administración CUPS sys y una contraseña CUPS. Esto se consigue escribiendo lo que aparece a continuación como root:

lppasswd -g sys -a CUPS-admin-name

Este ajuste resulta esencial también si se desea utilizar la interfaz Web de administración de CUPS o la herramienta de administración de impresoras de KDE.

Cuando cupsd se ejecuta como lp, /etc/printcap no puede generarse, puesto que no se le permite a lp crear archivos en /etc/. Por lo tanto, cupsd crea /etc/cups/printcap. Para garantizar que las aplicaciones que sólo pueden leer nombres de cola de /etc/printcap sigan funcionando correctamente, /etc/printcap actúa como un enlace simbólico que apunta a /etc/cups/printcap.

Cuando cupsd se ejecuta como lp, el puerto 631 no puede abrirse. Por lo tanto, cupsd no puede recargarse con rccups reload. En lugar de este comando, utilice rccups restart.

11.6.2.2. Funciones generalizadas para BrowseAllow y BrowseDeny

Los permisos de acceso definidos para BrowseAllow y BrowseDeny se aplican a todos los tipos de paquetes enviados a cupsd. Los ajustes por defecto en /etc/cups/cupsd.conf son los siguientes:

BrowseAllow @LOCAL
BrowseDeny All

y

<Location />
  Order Deny,Allow
  Deny From All
  Allow From 127.0.0.1
  Allow From 127.0.0.2
  Allow From @LOCAL
</Location>

De este modo, tan sólo los hosts LOCAL pueden tener acceso a cupsd en un servidor CUPS. Los hosts LOCAL son hosts cuyas direcciones IP pertenecen a una interfaz que no es PPP (interfaces cuyos indicadores IFF_POINTOPOINT no se han establecido) y a la misma red que el servidor CUPS. Los paquetes de todos los otros hosts se rechazan inmediatamente.

11.6.2.3. Activación por defecto de cupsd

En una instalación estándar, cupsd se activa automáticamente, con lo que se habilita un acceso cómodo a las colas de los servidores de red CUPS sin ninguna acción manual adicional. Los elementos que aparecen en Sección 11.6.2.1, “Ejecución de cupsd el usuario lp” y Sección 11.6.2.2, “Funciones generalizadas para BrowseAllow y BrowseDeny son condiciones previas fundamentales para esta función, puesto que, de lo contrario, la seguridad no sería suficiente como para efectuar una activación automática de cupsd.

11.6.3. Archivos PPD en varios paquetes

La configuración de impresora YaST configura las colas para CUPS utilizando únicamente los archivos PPD instalados en /usr/share/cups/model/ en el sistema. Para encontrar los archivos PPD adecuados para el modelo de la impresora, YaST compara el proveedor y el modelo determinados a lo largo de la detección del hardware con aquellos que figuran en todos los archivos PPD disponibles en /usr/share/cups/model/ en el sistema. Para ello, la configuración de impresora YaST genera una base de datos a partir de la información del proveedor y del modelo extraída de los archivos PPD. Al seleccionar una impresora de la lista de proveedores y modelos, recibirá los archivos PPD que coincidan con el proveedor y el modelo.

La configuración que utiliza únicamente archivos PPD y ninguna otra fuente de información distinta presenta la ventaja de que los archivos PPD en /usr/share/cups/model/ pueden modificarse sin restricción alguna. La configuración de impresora YaST reconoce los cambios y regenera la base de datos de proveedores y modelos. Por ejemplo, si tan sólo se dispone de impresoras PostScript, por lo general no se necesitarán los archivos PPD Foomatic del paquete cups-drivers o los archivos PPD Gimp-Print del paquete cups-drivers-stp. En lugar de esto, los archivos PPD para las impresoras PostScript pueden copiarse directamente en /usr/share/cups/model/ (si no existen ya en el paquete manufacturer-PPDs) para lograr una configuración óptima de las impresoras.

11.6.3.1. Archivos PPD CUPS del paquete cups

A los archivos PPD genéricos del paquete cups se les ha añadido, como complemento, archivos PPD Foomatic adaptados para impresoras PostScript de nivel 1 y nivel 2:

  • /usr/share/cups/model/Postscript-level1.ppd.gz

  • /usr/share/cups/model/Postscript-level2.ppd.gz

11.6.3.2. Archivos PPD del paquete cups-drivers

Por lo general, el filtro de impresora Foomatic foomatic-rip se utiliza junto con Ghostscript para impresoras que no son PostScript. Los archivos PPD Foomatic adecuados tienen las entradas *NickName: ... Foomatic/Ghostscript driver y *cupsFilter: ... foomatic-rip. Estos archivos PPD se encuentran en el paquete cups-drivers.

YaST prefiere un archivo PPD Foomatic si un archivo PPD Foomatic con la entrada *NickName: ... Foomatic ... (recommended) coincide con el modelo de impresora y el paquete manufacturer-PPDs no contiene un archivo PPD más adecuado.

11.6.3.3. Archivos PPD Gimp-Print del paquete cups-drivers-stp

En lugar de foomatic-rip, el filtro CUPS rastertoprinter de Gimp-Print puede utilizarse para varias impresoras que no sean PostScript. Este filtro y los archivos PPD de Gimp-Print adecuados están disponibles en el paquete cups-drivers-stp. Los archivos PPD de Gimp-Print se encuentran en /usr/share/cups/model/stp/ y tienen las entradas *NickName: ... CUPS+Gimp-Print y *cupsFilter: ... rastertoprinter.

11.6.3.4. Archivos PPD de fabricantes de impresoras del paquete manufacturer-PPDs

El paquete manufacturer-PPDs contiene archivos PPD de fabricantes de impresoras que se comercializan con una licencia de carácter suficientemente liberal. Las impresoras PostScript deberían configurarse con el archivo PPD adecuado del fabricante de impresoras, puesto que este archivo permite utilizar todas las funciones de la impresora PostScript. YaST prefiere un archivo PPD del paquete manufacturer-PPDs siempre que se cumplan las siguientes condiciones:

  • El proveedor y el modelo determinados a lo largo de la detección del hardware coincide con el proveedor y el modelo que figura en un archivo PPD del paquete manufacturer-PPDs.

  • El archivo PPD del paquete manufacturer-PPDs es el único disponible para el modelo de impresora o hay un archivo PPD Foomatic con una entrada *NickName: ... Foomatic/Postscript (recommended) que también coincide con el modelo de impresora.

En consecuencia, YaST no utiliza ningún archivo PPD del paquete manufacturer-PPDs en los siguientes casos:

  • El archivo PPD del paquete manufacturer-PPDs no coincide con el proveedor y el modelo. Esto puede ocurrir si el paquete manufacturer-PPDs contiene únicamente un archivo PPD para los modelos similares; por ejemplo, en el caso de que no haya ningún archivo PPD separado para los modelos particulares de una serie determinada, pero el nombre del modelo se especifique (como Funprinter 1000 series, por ejemplo) en el archivo PPD.

  • No se recomienda el archivo PPD PostScript de Foomatic. Puede que la causa de esto radique en que el modelo de impresora no funciona con suficiente eficacia en el modo PostScript; por ejemplo, la impresora puede ser poco fiable en este modo por tener demasiado poca memoria, o ser demasiado lenta a causa de la excesiva debilidad de su procesador. Además, es posible que la impresora no admita PostScript por defecto; por ejemplo, puede ocurrir que la compatibilidad con PostScript tan sólo esté disponible gracias a un módulo opcional.

Si un archivo PPD del paquete manufacturer-PPDs es adecuado para una impresora PostScript, pero YaST no puede configurarla por las razones indicadas, seleccione manualmente en YaST el modelo respectivo de impresora.