El 14/09/16 a les 11:22, orestes ha escrit: > A 2016-09-13 20:31, Narcis Garcia escrigué: > >> Hola; >> >> He aprofitat la característica de CUPS per crear una impressora virtual >> i fer-la treballar amb un programet (script) a /etc/cups/interfaces/ >> La meva intenció és que, quan l'usuari trii imprimir amb aquesta >> impressora virtual, transferir el document a un ordinador remot (~scp) i >> executar la instrucció «lp document» a l'ordinador remot per a què >> s'imprimeixi localment des d'allà. >> >> Això implica pel cas un programet com a: >> /etc/cups/interfaces/Epson1 >> El qual s'executa quan CUPS rep l'orddre d'imprimir per la impressora >> «Epson1», i es fa com a usuari «lp». >> El programet fa la còpia del document, però en intentar executar ssh >> (+expect per posar contrasenya) diu: >> >> You have too many files are open. Close some files or increase your >> per-process descriptor limit. >> >> Com que penso que el límit de 800.000 a nivell de sistema ja és gran, i >> no sé com modificar-ho per «lp»*, doncs intento que el programet es >> cridi a sí mateix com a un usuari normal: >> sudo -n -u UnUsuari "$0" >> >> I he hagut d'afegir una línia amb visudo**: >> lp ALL = (%users) NOPASSWD: /etc/cups/interfaces/* >> >> Penso que això significa: «L'usuari lp de tots els hosts poden actuar >> com a un membre del grup users sense contrasenya per executar allò que >> hi hagi a /etc/cups/interfaces/» >> >> EL PROBLEMA ARA: >> La instrucció «sudo» no s'arriba mai a executar (o no aconseguixo >> interceptar cap missatge per stdout ni stderr), i dóna el codi de sortida 1. >> >> LES MEVES PREGUNTES: >> - Estic escrivint malament al fitxer «sudoers»? >> - Hi ha un altre camí per fer una execució remota via SSH? >> >> (*) Ja he comprovat que un usuari normal pot executar el mateix sense >> problema. >> (**) CUPS no permet que les seves crides executin res com a «root» > > No tinc gens d'experiència en les qüestions que comentes, però et puc > explicar quelcom que potser hi està relacionat i et dóna alguna pista. > Fa uns anys vaig intentar fer un script que s'executés com a root (amb > setuid) i després de no sortir-me'n vaig llegir que era una política (de > debian?) no permetre l'execució d'scripts amb setuid. La solució que > donaven era crear un petit programa *executable* (en C, per exemple), > fer-lo setuid i fer que l'script el cridés. > > A veure si serà quelcom semblant. > > Orestes. > > > >
Prefereixo utilitzar el «sudo», i tenir-ho tot escrit en ShellScript. No crec que sigui necessari executar res com a «root», apart de què al fitxer /etc/cups/cups-files.conf hi ha un comentari que parla d'una restricció sobre aquesta mala pràctica. Gràcies.

