I-lprng: (0.07) (potato) Instalando el servidor de impresión "lprng" (lpr avanzado) 0.06 20.1.01 + filtro dj690c-low 0.07 26.1.01 + errata (lpr.perms es lpd.perms) *POR HACER* Con dj690c-low en modo texto no se imprimen los acentos Avisar que es visible desde Internet!!! Drivers HP690C en Potato... (incluido econo-fast?) *PROBAR* Probar a2ps + gs ¿Log los fallos de conexión, como se activa? (parece que no lo hay) LPRNG vs LPR VENTAJAS: - lprng no corre como root, lpr si... - Los comandos clientes (lpr, lprm, lpq) no necesitan ser suid root - Mayor control de acceso (quien hace que) - Comandos y printcap compatibles con lpr - Frontend gráfico (Tcl/Tk) printop :-) que permite gestión remota (otro Linux) INCONVENIENTES: - lprng tampoco tiene limitación de interface - Es un programa más grande y más difícil de configurar SELECCIONAR PAQUETES lprng spooler o cola de impresión lprng-doc documentación magicfilter filtros gráficos de impresión printop control gráfico (remoto) del servidor lprng (Tcl-Tk) djtools utilidades para las HP (filtro para texto) DURANTE LA INSTALACION (SETUP) --Nada que hacer-- TRAS LA INSTALACION Como root lanzar: magicfilterconfig Y si lo anterior falla lanzar: magicfilterconfig --force y contestar: Full name... : HP DeskJet 610C ( también uso HP895Cxi ) Short name...: lp (*) Full device path: /dev/lp0 (/dev/lp1 con kernel 2.0) Input filter: dj690c-low (antes usaba dj550c-filter) contestar "done" en la siguiente impresora para salir. confirmar con "y" la impresora creada. (*) SOLUCION DE PROBLEMAS Si en "Short name" se pone "dj610" debe de crearse a mano el directorio: /var/spool/lpd/dj610 con: owner daemon, group lp, y permisos rwxrwxr-x (775) PRUEBAS echo hola > /dev/lp0 #(/dev/lp1 con kernel 2.0) debe escribir hola lpr archivo_a_imprimir # coloca archivo en la cola de impresión lpr -Plp@host_remoto archivo # envia un archivo a imprimir en otro host lpc -Plp Control de operación de la impresora lp desde pseudo-shell, ejemplos de comandos: hold lp num_job Bloquear el trabajo release lp num_job Liberar el trabajo topq lp num_job Poner en lo alto de la cola lpq Mostrar estado lprm lp num_job Borrar de la cola quit Salir de lpc CONTROL DE ACCESO 1) Añadir a /etc/lpd.perms (antes del DEFAULT ACCEPT del final): ---8<--- # Aceptar sólamente conexiones (SERVICE=X) de IPs que son de nuestra red local ACCEPT SERVICE=X REMOTEIP=127.0.0.0/8 ACCEPT SERVICE=X REMOTEIP=192.168.0.0/24 REJECT SERVICE=X ... DEFAULT ACCEPT # Esta es la última linea... --->8--- NOTA: Esto NO afecta a los clientes que imprimen a través de samba ya que ellos acceden al servidor a través de "netbios" Sólamente es para los que impriman utilizando "un lpr remoto" COMPROBANDOLO: ( telnet 192.168.0.1 515 siempre conecta hasta un ENTER ) lpr -Plp@192.168.0.1 archivo # Envio impresión a servidor remoto 2) Recargar config de lprng con: /etc/init.d/lprng reload ASEGURANDO LPD 1) El demonio lpd de lprng en Potato por defecto ya corre como "daemon", perfecto :-) 2) Los comandos cliente (lpr, lprm, y lpq) no necesitan ser suid root, hay que desactivarles el bit de suid a mano o preferiblemente con el suidmanager, ya que viene activado por defecto... ---mira mi chuleta S-suidmanager--- NOTA: De hecho quitandoles el suid root creo que violamos el protocolo RFC1179, ya que los clientes no podrán conectar desde un puerto privilegiado (<1024), esto es algo que no nos debe preocupar en absoluto, ya que es infinitamente más seguro no tenerlos suid root :-) PRINTOP El programa gráfico (Tcl/Tk) printop permite: - Controlar todos las impresoras (servidores lprng) de la red local - Detener y activar impresión y encolado - Quitar, congelar, mover y poner en lo alto los trabajos 1) AUTORIZAR CONTROL DESDE CLIENTE Este programa puede estar en un cliente. Hay que darle permisos en el servidor sobre lpc (C) y lprm (M) para que pueda controlar la impresora, ejemplos: /etc/lpd.perms (en el servidor. Autoriza el control a TODOS los usuarios) ---8<--- # Aceptar sólamente conexiones (SERVICE=X) de IPs que son de nuestra red local # y control de la impresora (SERVICE=C) y borrado de la cola (SERVICE=M) ACCEPT SERVICE=X,C,M REMOTEIP=127.0.0.0/8 ACCEPT SERVICE=X,C,M REMOTEIP=192.168.0.0/24 REJECT SERVICE=X,C,M ... DEFAULT ACCEPT # Esta es la última linea... --->8--- /etc/lpd.perms (en el servidor. Autoriza el control solo a MANEL sobre LP) ---8<--- # Aceptar sólamente conexiones (SERVICE=X) de IPs que son de nuestra red local ACCEPT SERVICE=X REMOTEIP=127.0.0.0/8 ACCEPT SERVICE=X REMOTEIP=192.168.0.0/24 REJECT SERVICE=X # Control de impresora (SERVICE=C) y borrado de cola (SERVICE=M) lp por manel ACCEPT SERVICE=C,M REMOTEUSER=manel PRINTER=lp ... DEFAULT ACCEPT # Esta es la última linea... --->8--- BUG: (solucionable ;-) Remotamente printop puede ver el estado y quitar trabajos pero los comandos de lpc no funcionan (como Job -> Top, Hold Job, Release Job...) Esto es porque lpc asume que se emplea una impresora local y para controlar una impresora remota hay que (y printop no hace): a) Especificarlo forzando el server: lpc -Plp -Shost_remoto b) Especificarlo en los comandos de lpc: hold lp@host_remoto num_job 2) MODIFICACION PARA USO REMOTO DE PRINTOP: Para solucionar el bug anterior: Editar el archivo /usr/bin/printop (es un script Tcl/Tk) y modificar la linea del path de "lpc" para forzar el uso del servidor remoto así: ---8<--- set confLPC "/usr/sbin/lpc -S192.168.0.1" --->8--- ARCHIVOS: /etc/printcap Definición de impresoras /etc/lpd.conf Configuración /etc/lpd.perms Control de acceso global /var/log/lp-acct Info de inicio y fin de trabajos POR DENTRO: El uso local de lpr se realiza con una conexión a 127.0.0.1:515 a lpd a través del loopback (lo) DEFICIENCIAS: No veo la forma de limitar los interfaces en los que escucha el demonio de impresión (Bug#74293) BUGS: 1) lpr, lprm y lpq no deberían ser suid root por defecto (solucionable) 2) printop falla a medias en la gestión remota (solución más arriba) MAS INFORMACION: /usr/doc/lprng-doc/html/LPRng-HOWTO.html #HOWTO man lpd.conf # man del archivo de configuración man lpd.perms # man del archivo de control de acceso 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) man lpd # man del demonio lpd man printcap # configuración de impresión En los filtros en /etc/magicfilter en las primeras lineas explica para que impresoras vale... RFC1179 Definición del protocolo del demonio de impresión http://www.astart.com/lprng/LPRng.html http://www.astart.com/lprng/LPRng-HOWTO.html