
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. CUPSestará 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!

![[xml]](/images/xml.gif)
