Imprimiendo con CUPS y Samba

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!
Hay 1 comentario
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.
por coder, en 2008-02-02 19:34:20 ∞