Cambiar USERID en REXX

Todo lo relacionado con REXX en este ambiente.
Responder
man010
Usuario
Usuario
Mensajes: 11
Registrado: 19 Feb 2016, 07:46
País: España
Ciudad: Barcelona
Ocupación: IT Specialist

Cambiar USERID en REXX

Mensaje por man010 » 03 Oct 2016, 06:32

Hola a todos,

Estoy creando una aplicación REXX que se lanzará por ISPF con EXEC o a traves de una llamada desde un panel.

Necesito que en un momento determinado el usuario de ejecución cambie, es decir, que al principio del programa USERID sea el ejecutor y en un momento determinado sea otro definido en el propio programa (este usuario tendrá menos privilegios que el que lo lanza).

Esta operación la podemos realizar en JCL, el problema no es de permisos.

¿Existe alguna manera de cambiar el usuario dentro de la propia ejecución del REXX?

Muchas gracias
Un saludo

NJB
Su anfitrion
Su anfitrion
Mensajes: 1114
Registrado: 12 Oct 2003, 16:27
País: Argentina
Ciudad: Capilla del Señor
Ocupación: System Programmer
Contactar:

Re: Cambiar USERID en REXX

Mensaje por NJB » 05 Oct 2016, 16:31

Hola

No entiendo lo que planteas, el userid no es algo que se pueda cambiar. Está asociado a tu address space. Por eso de que funciona por JCL no lo entiendo. Una vez que submitis un job el usuario no se cambia.

Contanos en detalle que haces con el JCL a ver si se aclara tu pregunta.

Gracias
Norberto Bocalandro

man010
Usuario
Usuario
Mensajes: 11
Registrado: 19 Feb 2016, 07:46
País: España
Ciudad: Barcelona
Ocupación: IT Specialist

Re: Cambiar USERID en REXX

Mensaje por man010 » 06 Oct 2016, 05:49

Hola,
Parece que es bastante improbable que se pueda moficiar el USERID en REXX, pero bueno...

A lo que me refería mediante JCL:
Si el USUARIO1 lanza un JOB y se especifica USER='otrouser' en la sentencia JOB, si USUARIO1 tiene privilégios para lanzar en nombre de USUARIOX, USUARIO1 tendrá todos los accesos que tiene USUARIOX porque en realidad el JOB lo está lanzando USUARIOX.
Espero estar explicandolo bien...

//USUARIO1 JOB (SIS),'PRUEBA USER',CLASS=J,MSGCLASS=S,
// USER=USUARIOX,
// MSGLEVEL=(1,1),NOTIFY=USUARIO1,

En SDFS el OWNER será USUARIOX.

Necesitamos que un usuario lance ejecuciones REXX en nombre de otro usuario para controlar los permisos.

Estoy bastante cerca de resolver la duda, no creo que se pueda, USERID es una variable de sistema y no puede cambiarse, valoré la opción de REXEC... pero es demasiado peligroso...

Muchas gracias

Avatar de Usuario
Vicente
Colaborador avanzado
Colaborador avanzado
Mensajes: 545
Registrado: 21 Jul 2011, 04:52
País: España
Ciudad: Malaga
Ocupación: Técnico en Sistemas

Re: Cambiar USERID en REXX

Mensaje por Vicente » 07 Oct 2016, 06:11

Hola man010
Dijiste:
"Necesitamos que un usuario lance ejecuciones REXX en nombre de otro usuario para controlar los permisos."

Si fuese posible hacer esas ejecuciones REXX en batch, el usuario podría montar un JCL con USER= y submitirlo.

Un saludo
Varios días probando, equivocandote y volviendo a probar
pueden ahorrarte quince minutos de lectura de un manual.

man010
Usuario
Usuario
Mensajes: 11
Registrado: 19 Feb 2016, 07:46
País: España
Ciudad: Barcelona
Ocupación: IT Specialist

Re: Cambiar USERID en REXX

Mensaje por man010 » 07 Oct 2016, 08:38

Hola Vicente,

Correcto, el usuario puede hacer ejecuciones BATCH con USER=xxx, pero necesito que eso sea transparente para estos usuarios y que no puedan ver el usuario "ejecutor" ni realizar acciones por fuera de las utilidades REXX que tengo diseñadas, al menos que no sea evidente.
Si pusieran USER=xxx conseguirían lo mismo, pero xxx debe ser desconocido para ellos. Se intenta limitar toda operación a los paneles y utilidades.

De cualquier modo, esta operación supondría modificar la STORAGE AREA... cosa que, a no ser que alguien indique lo contrario, voy a dar por imposible.
Parece complicado que si accedo a STORAGE adecuado pueda modificar el valor de este... tendré que buscar alternativas.

ASCB = C2D(STORAGE(224,4))
ASXB = C2D(STORAGE(D2X(ASCB+108),4))
ACEE = C2D(STORAGE(D2X(ASXB+200),4))
USER = STORAGE(D2X(ACEE+21),8)
SAY 'USERID :' USER
Que es lo mismo que USERID() y que es lo que necesitaría cambiar.

Muchisimas gracias
Un saludo

NJB
Su anfitrion
Su anfitrion
Mensajes: 1114
Registrado: 12 Oct 2003, 16:27
País: Argentina
Ciudad: Capilla del Señor
Ocupación: System Programmer
Contactar:

Re: Cambiar USERID en REXX

Mensaje por NJB » 07 Oct 2016, 09:48

Hola

El bloque de control ACEE se puede modificar pero se debe hacer con un programa en assembler y el mismo debe ser APF autorizado, o sea en un sistema de prueba se podría llegar a hacer, en uno de producción no pues es un expuesto de seguridad brutal.
De todas formas aún con el ACEE modificado no es seguro que logres lo que deseas.

Este post es solo para responder a tu comentario:
De cualquier modo, esta operación supondría modificar la STORAGE AREA... cosa que, a no ser que alguien indique lo contrario, voy a dar por imposible.
Parece complicado que si accedo a STORAGE adecuado pueda modificar el valor de este... tendré que buscar alternativas.
Suerte con tu investigación para encontrar alternativas.

Saludos
Norberto Bocalandro

Avatar de Usuario
Vicente
Colaborador avanzado
Colaborador avanzado
Mensajes: 545
Registrado: 21 Jul 2011, 04:52
País: España
Ciudad: Malaga
Ocupación: Técnico en Sistemas

Re: Cambiar USERID en REXX

Mensaje por Vicente » 07 Oct 2016, 11:56

Hola man010,
Me refería a que fuese tu REXX el construyese y submitiera un jcl con USER= en el cual se ejecute otro rexx que haga lo que necesitas.
Pero si esto supone, como dices:
"realizar acciones por fuera de las utilidades REXX que tengo diseñadas, al menos que no sea evidente"
Y si no lo puedes "esconder", entiendo tus reparos.
Lo comento por si en tu instalación es factible esconder ejecuciones de determinados jcls de la vista de algunos usuarios.
Un saludo
Varios días probando, equivocandote y volviendo a probar
pueden ahorrarte quince minutos de lectura de un manual.

Cerbumota
Colaborador
Colaborador
Mensajes: 137
Registrado: 07 Feb 2007, 05:34
País: España
Ciudad: Madrid
Ocupación: Otra

Re: Cambiar USERID en REXX

Mensaje por Cerbumota » 12 Jul 2017, 07:19

Siento retomar tan tarde el tema. Pero veo un campo interesante, aunque creo que los tiros no van por miro.
En principio, no hay ningún problema a priori, para poder lanzar un jcl con otro userid. Salvo, lógicamente, los propios de seguridad. Entiendo que ésto es obvio porque yo, personalmente, por defecto no voy a poder lanzar un jcl con tu usuario. Sería un pecado que la seguridad me lo permitiera tan fácil... Pero lanzarlo con un usuario de aplicaciones que no tenga privilegios de nada (como se suele realizar a través de un planificador, (por ejemplo) no conlleva ningún problema ni riesgo. Verá la salida, tan sólo quien tenga permisos para ello.
Lo que no entiendo es que no quieras que el usuario propietario de la ejecución, se entere que lanzas un jcl en su nombre. Vamos, hombre... ¿qué quieres hacer? :negar: :negar: :negar:
Eso, o no acabo de entender las necesidades de la ejecuciónl.
Mi lema favorito, el de las tres "uVes": Velocidad, Valor y... Vuevos.

Responder