0

我们有一个基于 OpenVMS 的遗留 COBOL 应用程序——我们对它的配置没有清晰的概念。在这种情况下,我所说的“配置”是:

  1. 哪些可执行文件包含应用程序;
  2. 哪些原始源文件对应于哪些可执行文件。

上面的 1 是未知的东西可能看起来很奇怪,但随着时间的推移,可执行文件“来来去去”(并且许多仍在使用)。由于不再需要哪些可执行文件的知识已经随着时间的流逝而丢失,因此不知道哪些可执行文件构成了当今存在的应用程序。实际上,该团队忠实地编译所有源代码文件并部署生成的可执行文件,尽管有明显不再使用的程序。

不用说,没有正式的配置管理流程,源代码也没有保存在版本控制系统中。由于应用程序运行在 OpenVMS 上,相应的基于Files-11的文件系统保留了旧版本的文件(包括源文件),这一直是不将应用程序源放入版本控制系统的借口(尽管使用一个 VCS 远远超出了仅具有以前版本的记录)。

当然,可以通过多种方式确定配置,但我想从第一个“小步骤”开始,即:确定构成应用程序的可执行文件集。在这一点上我应该提一下,应用程序的可执行组件不仅限于 OpenVMS 映像,还包括 DCL 命令文件。我想:

  1. 记录驻留在某个目录或一组目录中的所有图像调用;
  2. 记录驻留在某个目录或一组目录中的命令文件的所有调用。

如果我们在生产系统上运行这个日志记录很长一段时间,比如两个月,我们可以很好地了解应用程序包含什么。连同用户咨询,我们将能够确认是否需要未调用的可执行文件。

我想我对如何执行上述 1 有一个想法,尽管我不确定具体情况,即使用SET/AUDIT. 第二部分,现阶段,我不知道该怎么做。

因此,这项工作的主要标准是尽可能少地影响现有系统以获得上述信息。由于围绕配置的问号(以及完全缺乏自动化测试),改变任何东西都是一件令人伤脑筋的事情。

使用操作系统级别的服务SET/AUDIT可以让人们了解正在运行的内容,而无需更改源代码和/或重新编译任何内容。所以,我的问题是多方的:

  1. 这是在 OpenVMS 上执行此操作的最佳方式吗?
  2. 我需要做什么来限制SET/AUDIT只监视特定目录中的图像?
  3. 如何在不更改.COM源文件的情况下记录命令文件调用?
  4. 由于记录此类信息而导致性能下降,我应该期待什么?
4

2 回答 2

5

Ad 2., 3.

I would try security auditing with ACLs. From a a privileged account, something like ...

Make sure ACL auditing is enabled:

$ show audit

should show

System security audits currently enabled for:
...
ACL
...

If it doesn't, enable it with

$ set audit/audit/enable=acl

and then you may want to disable it when you are done with

$ set audit/audit/disable=acl

Set audit ACLs on all the wanted files:

$ set sec/acl=(audit=security,access=success+execute) [.app]*.com
$ set sec/acl=(audit=security,access=success+execute) [.app]*.exe

and you may want to delete the ACLs when you are done with

$ set security/acl=(audit=security,access=success+execute)/delete [.app]*.com
$ set security/acl=(audit=security,access=success+execute)/delete [.app]*.exe

You can check what ACLs are set with:

$ show security [.app]*.*

Run you application ...

Get the results from the audit file

$ analyze/audit [vms$common.sysmgr]security.audit$journal/sel=access=execute/full/since=17:00/out=app.log

Check your report for your files:

$ pipe type app.log |search sys$pipe "File name", ,"Access requested"
File name:                _EMUVAX$DUA0:[USER.APP]NOW.COM;1
Access requested:         READ,EXECUTE
Auditable event:          Object access
File name:                _EMUVAX$DUA0:[USER.APP]ECHO.EXE;1
Access requested:         READ,EXECUTE
$ 

Sorry, I have no answer for 1. and 4.

于 2015-11-25T16:54:14.680 回答
0

了解 OpenVMS 版本(例如 6.2、7.3-2、8.4...)和架构(Vax、Alpha、Itanium)会有所帮助。

最近的 OpenVMS 版本有很好的 sda 扩展

http://h71000.www7.hp.com/doc/84final/6549/6549pro_ext1.html

或者

http://de.openvms.org/Spring2009/05-SDA_EXTENSIONS.pdf

例如 LNM 用于检查进程使用的逻辑名称,PCS 用于进程的 PC 采样,FLT 用于检查应用程序的故障行为,RMS 用于 RMS 数据结构,PERF 仅用于 Itanium 性能跟踪,PROCIO 用于读取和写入进程打开的所有文件

发布一个

dir sys$share:*sda.exe

以便我们知道哪些 Sda 扩展可供您使用。

您可以随时检查 pid 为 204002B4 的进程如何处理

$ ana/sys set proc/id=204020b4 sh process /channel exam @pc

并在过程继续进行时重复。

于 2015-12-26T20:59:35.440 回答