Aprendamos OpenVMS.

¡Bueeeeenas, programmers!

Después de una larga temporada ya estoy de nuevo por estos lares, en la anterior entrada os hablé de cierto lenguaje de programación llamado VAX BASIC, ¿verdad? pues bien, hay cierto programita llamado SecureCRT, que es un programa para emular terminales y es capaz de usar un sistema Operativo llamado OpenVMS, un sistema multiusuario y multiproceso, utilizado en entornos de tiempo compartido y tiene un procesamiento por lotes y transacciones.






Bien, pues dentro de lo que es OpenVMS somos capaces de crear programitas ya sea mediante unos lenguajes de comandos llamados DCL o con este lenguaje de programación que ya he mencionado: VAX BASIC.

¿Y qué es DCL en OpenVMS?

Es el intérprete de la línea de comandos predeterminado para el sistema OpenVMS, al igual que nuestro querido Windows tiene sus propios comandos OpenVMS también los tiene y con ellos somos capaces de crear programitas como este por ejemplo:

$ FECHA = F$CVTIME("TOMORROW","ABSOLUTE","DATE")
$ HORA = "21:00:00"
$ WHEN = FECHA + ":" + HORA
$! Ejecuta el script en el directorio donde le indiques.
$ SUBMIT/AFTER="''WHEN'" /NOLOG DISCO1:[MBORREDA]TRANSF_BBDD.COM
$ EXIT

Esto básicamente lo que hace es ejecutar el programa TRANSF_BBDD.COM en el directorio MBORREDA del disco 1 que tenemos en nuestro sistema, cada día a las 9 de la noche. 

Como ya expliqué en la anterior entrada qué es VAX BASIC no lo haré en esta entrada. 

Me voy a centrar más esta vez en OpenVMS y en lo que podemos hacer con él, que son infinitas pero en esta entrada me voy a centrar en la creación de usuarios.

Hay que tener en cuenta antes una cosa, en OpenVMS al igual que en Windows existen usuarios con privilegios, y en OpenVMS existe un usuario llamado System que digamos que es un administrador y mediante unos comandos DCL puede dar privilegios a otros usuarios.

Desde el usuario System y para poder dar privilegios mayores mínimo debemos darle el permiso SYSPRV, así que podemos ejecutar los siguientes comandos:

- Añadir permiso SYSPRV:

SET PROCESS/PRIVILEGE=SYSPRV

- Añadir todos los permisos:

SET PROCESS/PRIVILEGES=ALL 

¿Cuál sería el comando completo?

MODIFY nombre_usuario /PRIVILEGE=SYSPRV

Si ejecutas pues ese comando desde System ya podríamos añadirle ese permiso al usuario que le indicamos.

A partir de aquí viene algo importante, tras haber investigado mucho acerca de esto y hecho numerosas pruebas me he dado cuenta de que por así decirlo existen "los usuarios de sistema" y "los usuarios normales", aunque parece ser que todo es debido a qué archivo SYSUAF.DAT usas, dicho archivo nos permite entrar al entorno UAF que en OpenVMS sirve para la creación de usuarios, es como RDO que nos permite gestionar las bases de datos.

Haciendo pruebas dependiendo de si creabas el usuario con System se creaba como "usuario de sistema", al hacer un show * dentro del entorno UAF aparecen estos usuarios:

PRE>RUN SYS$SYSTEM:AUTHORIZE

UAF> show *

Username: DEFAULT                          Owner:  

Account:                                   UIC:    [200,200] ([DOC,PEPITO])

CLI:      DCL                              Tables: DCLTABLES

Default:  [USER]

LGICMD:   

Flags:  DisUser

Primary days:   Mon Tue Wed Thu Fri        

Secondary days:                     Sat Sun

No access restrictions

Expiration:            (none)    Pwdminimum:  6   Login Fails:     0

Pwdlifetime:         90 00:00    Pwdchange:      (pre-expired) 

Last Login:            (none) (interactive),            (none) (non-interactive)

Maxjobs:         0  Fillm:       128  Bytlm:        128000

Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0

Maxdetach:       0  BIOlm:       150  JTquota:        4096

Prclm:           8  DIOlm:       150  WSdef:          4096

Prio:            4  ASTlm:       300  WSquo:          8192

Queprio:         4  TQElm:       100  WSextent:      16384

CPU:        (none)  Enqlm:      4000  Pgflquo:      256000

Authorized Privileges: 

  NETMBX       TMPMBX

Default Privileges: 

  NETMBX       TMPMBX


Username: SYSTEM                           Owner:  SYSTEM MANAGER

Account:  SYSTEM                           UIC:    [1,4] ([SPHERA,SYSTEM])

CLI:      DCL                              Tables: DCLTABLES

Default:  SYS$SYSROOT:[SYSMGR]

LGICMD:   

Flags: 

Primary days:   Mon Tue Wed Thu Fri        

Secondary days:                     Sat Sun

No access restrictions

Expiration:            (none)    Pwdminimum:  8   Login Fails:     0

Pwdlifetime:         30 00:00    Pwdchange:      (pre-expired) 

Last Login:            (none) (interactive),            (none) (non-interactive)

Maxjobs:         0  Fillm:       128  Bytlm:        256000

Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0

Maxdetach:       0  BIOlm:       150  JTquota:        4096

Prclm:          10  DIOlm:       150  WSdef:          4096

Prio:            4  ASTlm:       300  WSquo:          8192

Queprio:         0  TQElm:       100  WSextent:      16384

CPU:        (none)  Enqlm:      4000  Pgflquo:      700000

Authorized Privileges: 

  ACNT         ALLSPOOL     ALTPRI       AUDIT        BUGCHK       BYPASS

  CMEXEC       CMKRNL       DIAGNOSE     DOWNGRADE    EXQUOTA      GROUP

  GRPNAM       GRPPRV       IMPERSONATE  IMPORT       LOG_IO       MOUNT

  NETMBX       OPER         PFNMAP       PHY_IO       PRMCEB       PRMGBL

  PRMMBX       PSWAPM       READALL      SECURITY     SETPRV       SHARE

  SHMEM        SYSGBL       SYSLCK       SYSNAM       SYSPRV       TMPMBX

  UPGRADE      VOLPRO       WORLD

Default Privileges: 

  ACNT         ALLSPOOL     ALTPRI       AUDIT        BUGCHK       BYPASS

  CMEXEC       CMKRNL       DIAGNOSE     DOWNGRADE    EXQUOTA      GROUP

  GRPNAM       GRPPRV       IMPERSONATE  IMPORT       LOG_IO       MOUNT

  NETMBX       OPER         PFNMAP       PHY_IO       PRMCEB       PRMGBL

  PRMMBX       PSWAPM       READALL      SECURITY     SETPRV       SHARE

  SHMEM        SYSGBL       SYSLCK       SYSNAM       SYSPRV       TMPMBX

  UPGRADE      VOLPRO       WORLD

Identifier                         Value           Attributes

  NET$MANAGE                       %X91F50002      

  WBEM$ADMIN                       %X80010006  


Y esto si lo ejecutamos desde un usuario normal:

Username: MBORREDA                         Owner:  MBORREDA

Account:  MBORREDA                         UIC:    [100,304] ([EMPRESA,MBORREDA])

CLI:      DCL                              Tables: DCLTABLES

Default:  DISCO1:[MBORREDA]

LGICMD:   

Flags: 

Primary days:   Mon Tue Wed Thu Fri        

Secondary days:                     Sat Sun

No access restrictions

Expiration:            (none)    Pwdminimum:  6   Login Fails:     0

Pwdlifetime:         90 00:00    Pwdchange:  23-JUN-2025 12:41 

Last Login:  1-AUG-2025 14:18 (interactive), 30-JUL-2025 12:37 (non-interactive)

Maxjobs:         0  Fillm:       100  Bytlm:         64000

Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0

Maxdetach:       0  BIOlm:       150  JTquota:        4096

Prclm:           8  DIOlm:       150  WSdef:          2000

Prio:            4  ASTlm:       250  WSquo:          4000

Queprio:         4  TQElm:        10  WSextent:      16384

CPU:        (none)  Enqlm:      2000  Pgflquo:       50000

Authorized Privileges: 

  BYPASS       MOUNT        NETMBX       OPER         READALL      TMPMBX

Default Privileges: 

  BYPASS       NETMBX       TMPMBX


Username: PEPITOLP                         Owner:  PEPITOLP

Account:                           UIC:    [100,304] ([EMPRESA,PEPITOLP])

CLI:      DCL                              Tables: DCLTABLES

Default:  DISCO1:[PEPITOLP]

LGICMD:   

Flags: 

Primary days:   Mon Tue Wed Thu Fri        

Secondary days:                     Sat Sun

No access restrictions

Expiration:            (none)    Pwdminimum:  6   Login Fails:     0

Pwdlifetime:         90 00:00    Pwdchange:  23-JUN-2025 12:41 

Last Login:  1-AUG-2025 14:18 (interactive), 30-JUL-2025 12:37 (non-interactive)

Maxjobs:         0  Fillm:       100  Bytlm:         64000

Maxacctjobs:     0  Shrfillm:      0  Pbytlm:            0

Maxdetach:       0  BIOlm:       150  JTquota:        4096

Prclm:           8  DIOlm:       150  WSdef:          2000

Prio:            4  ASTlm:       250  WSquo:          4000

Queprio:         4  TQElm:        10  WSextent:      16384

CPU:        (none)  Enqlm:      2000  Pgflquo:       50000

Authorized Privileges: 

  BYPASS       MOUNT        NETMBX       OPER         READALL      TMPMBX

Default Privileges: 

  BYPASS       NETMBX       TMPMBX


Siguiente paso, una vez ya podamos crear un usuario con los privilegios que corresponde, aunque si eres un usuario normal con privilegios debes acceder al SYSUAF.DAT correspondiente y usar el siguiente comando con sus respectivos parámetros:

ADD userpprove /UIC=[200,205] /ACCOUNT=userpprove /DEVICE=DISCO1 /DIRECTORY=[userppre] /OWNER="userpprove" /PASSWORD=olakase /FLAGS=PWD_EXPIRED

Explicación de los parámetros:

-UIC: Se refiere al grupo y miembro que pertenece el usuario. El número de miembro es un número de identificación del usuario.

-ACCOUNT: Sirve para registrar el nombre de la cuenta contable.

-DEVICE: Define el disco donde se va a guardar el usuario.

-DIRECTORY: Define el directorio del usuario.

-OWNER: Es el nombre o identificador el propietario de la cuenta.

-PASSWORD: Contraseña del usuario.

-FLAGS: Estado especial o configuración de la cuenta.

¡Y esto sería todo! espero que esta publicación pueda ayudar sobre todo a todos aquellos que a día de hoy utilizan OpenVMS para trabajar o cualquier otra cosa importante. 

¡Nos seguimos leyendo, programmers!

Comentarios

Entradas populares de este blog

Hablemos de los lenguajes "Basic".

Hablemos del próximo material y de JavaFX.

¿Qué es Radzen?