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. 

 

Respondre per correu electrònic a