I-cups: (0.02) (potato) *NO RECOMENDADO (mejor usar LPRng)* Instalando el servidor de impresión "cups" (Common Unix Printind System) IMPRESION GENERAL: - cups es el futuro - cups y sus frontend están evolucionando rápido (Mandrake ya utiliza cups y qtcups de frontend) - En mi opinión no es aún lo bastante seguro, y está un pelín verde CUPS vs LPR/LPRng VENTAJAS: - Permite restringir los interfaces en los que escucha - Nuevo sistema de impresión IPP/1.0 (Internet Printing Protocol) definido en RFC2565-2569 para sustituir los antiguos sistemas System V y BSD y que permite controlar el medio de impresión, resolución, etc... IPP es una capa sobre el HTTP y la doc dice que también estará soportado por la "próxima generación de Microsoft Windows" (hasta que no lo vea...) - Compatible con los sistemas antiguos (System V y BSD) - Administración web (http://servidor:631) incluida la ayuda INCONVENIENTES: - Corre como root, solo cambia de usuario para ejecutar programas externos - En Potato solo trae dos filtros de impresora (Más de pago) - En Potato no viene ningún frontend (Mirar el Printing HOWTO) - No viene el cgi de administración remota (¿Será de pago?) ...hay una versión comercial completa con miles de impresoras (ESP Print Pro) - No veo la forma de activar el Econofast en mi DeskJet (en la info de escribir un driver de impresión en el "Software Programmers Manual" solo están las cabeceras) SELECCIONAR PAQUETES cups Sistema de impresión IPP/1.0 cups-bsd ¿Es necesario? Comandos de compatibilidad BSD (lpr, lprm, lpc) En algún sitio he leido que en Debian inestable hay un cups-client (1.1) DURANTE LA INSTALACION (SETUP) --Nada que hacer-- TRAS LA INSTALACION 1) Añadir/configurar la impresora (como root) lpadmin -p DeskJet -m deskjet.ppd -v parallel:/dev/par0 -E # -p = nombre_impresora # -m = usar el archivo PPD del directorio de modelos # -v = dispositivo a usar # -E = habilitar impresora y aceptar trabajos ARCHIVOS cupsys lpadmin... # Añade impresora lp archivo # Imprime archivo cancel -a # Elimina todos los trabajos lpstat -t # Muestra todo el estado de la impresora enable impresora disable impresora accept impresora reject impresora cupsenable # Symlinks a enable, etc... (con bash enable no va...) cupsdisable cupsaccept cupsreject cupsys-bsd lpr archivo # Imprime archivo lprm lpq lpc PRUEBAS echo hola > /dev/lp0 #(/dev/lp1 con kernel 2.0) debe escribir hola lp archivo_a_imprimir # coloca archivo en la cola de impresión PERMITIR ADMINISTRACION REMOTA (SOLO NUESTRA RED) ***ATENCION: El cgi admin.cgi está ausente ¿Será de pago?*** Editar /etc/cups/cupsd.conf Dejar el control de acceso del directorio /admin como sigue: ---8<--- AuthType None # < Basic = pide contraseña Unix / None no AuthClass System Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow From 192.168.0.0/24 # < Permito admin desde mi red local --->8--- NOTAS: Las contraseñas viajan en texto claro y cualquier sniffer las puede ver, es preferible un control por IPs por ejemplo (solo ciertos PC) ASEGURANDO CUPS LIMITAR A INTERFACES LOCAL Y RED LOCAL Editar /etc/cups/cupsd.conf Comentar las lineas "Port" y "Listen" que hayan (con #) y añadir: ---8<--- Listen 127.0.0.1:631 # Uso local Listen 192.168.0.1:631 # Uso desde mi red local --->8--- Aplicar los cambios: /etc/init.d/cupsys force-reload QUE NO CORRA COMO ROOT cupsd corre como root "para soportar el puerto por defecto 631", aunque en la config dice que cambia cuando se ejecuta un programa externo... ---No me parece suficiente, tras el bind al puerto ya podría hacer un setuid o un seteuid--- ELIMINAR SUID ROOT /var/lib/cups/backend/lpd es root:root 4755 Creo que si no imprimimos en ningún servidor de impresión lpd remoto que se puede desactivar *NO LO HE PROBADO* GESTION REMOTA Estado de impresoras http://servidor:631/printers Administració remota http://servidor:631/admin (ausente ¿De pago?) USO DESDE SAMBA *POR PROBAR* Con samba >= 2.0.6 "printing = cups" en smb.conf NOTA: samba de Potato es 2.0.7-3 ARCHIVOS: /etc/cups/* /var/log/cups/access_log /var/log/cups/error_log /var/log/cups/page_log /var/lib/cups/cgi-bin/admin.cgi El cgi que falta... /usr/share/cups/model/*.ppd Filtros PPD POR DENTRO El demonio servidor es cupsd La administración local de cupsd se realiza con una conexión Web a 127.0.0.1:631 a través del loopback (lo) Drivers... /var/lib/cups/cgi-bin/classes.cgi, jobs.cgi, printers.cgi DEFICIENCIAS El cgi de administración no viene en el paquete BUGS cupsd corre como root "para soportar el puerto por defecto 631", aunque en la config dice que cambia cuando se ejecuta un programa externo... ---No me parece suficiente, tras el bind al puerto ya podría hacer un setuid o un seteuid--- MAS INFORMACION http://www.linuxprinting.org/howto/ # HOWTO de impresión (muy actual) http://127.0.0.1:631 # Conexión http de estado/ayuda de cups (= /usr/doc/cupsys/index.html) cupsd.conf autodocumentado man cupsd # cupsd es el demonio de CUPS man cupsd.conf # configuración del demonio man lpr # lpr imprimime el archivo que se le especifica man lpq # lpq da información de la cola man lprm # lprm quita trabajos de la cola (si tienes permisos) man lpc # lpc controla la impresión (solo para quien tenga permisos)