OpenVMS Notes: System Manager Tips

  1. The information presented here is intended for educational use by qualified OpenVMS technologists.
  2. The information presented here is provided free of charge, as-is, with no warranty of any kind.
  3. The information presented on this page can be really dangerous if you don't know what you are doing. So develop your skills by practicing on files first copied to scratch drives. On top of that, always make sure you have good backup copies of everything before you begin.

Freeing space on the system disk

DCL Command Result
$set def sys$manager
$reply/ena
$reply/log
$reply/dis
$pur/log/noco OPERATOR.LOG
  • move to the system manager directory
  • enable opcom messages on this terminal (they still go to the log file)
  • close the current operator log then open a new one
  • disable opcom messages on this terminal
  • purge extra copies of this file from this directory
  • Note: many unattended VMS systems do this once a week from batch (optionally employing the  optional "/keep=2" option if security is a concern)
$set def sys$manager
$set audit/server=new
$pur/log/noco SECURITY.AUDIT$JOURNAL
  • move to the system manager directory
  • close the current audit log then open a new one
  • purge extra copies of this file from this directory
  • Note: don't do this if someone at your company needs these files for security purposes
$set def sys$manager
$set acc/new
$pur/log/noco ACCOUNTNG.DAT
  • move to the system manager directory
  • close the current accounting file then open a new one
  • purge extra copies of this file from this directory
  • Note: don't do this if someone at your company needs these files to bill other clients for resources they used on your system
$sho dev d
$set default $1$dia0:[000000]
$dir [000000...]/size=all/sel=siz=min=99000
  • see the disk names
  • move to the root directory of disk $1$dia0: (use ds0: if shadowed)
  • locate all files >= 99000 blocks (or whatever)
  • <<< research your findings >>>

$pur/log/noco $1$dia0:[000000...]*.log/keep=5
  • <<< consider purging the disk of some logs >>>
  • purge the disk of all some files (keeping the last 5 versions)
  • Note: don't do this if you are having other problems which the log files could help solve

$pur/log/noco $1$dia0:[000000...]*.log
  • <<< consider purging the disk of all logs >>>
  • purge the disk of all log files
  • Note: don't do this if you are having other problems which the log files could help solve

$pur/log/confirm $1$dia0:[000000...]
  • <<< consider purging the disk of all files >>>
  • purge the disk of all files
  • Emergency Use Only (if you need to recover disk space)
  • This is a last-resort command

$netcu
NETCU> set log/new
NETCU> exit
$pur/log/noco tcpware:*.log
  • <<< optional command for TCPware >>>
  • start the TCPware network control utility
  • close the current log file then open a new one
  • exit the TCPware network control utility
  • purge TCPware log files

$sho dev d
$set default $1$dia0:[000000]
$dir *undo*/date
  • <<< consider deletion of UNDO files >>>
  • Note: UNDO files are left over from patch installations
  • see the disk names
  • move to the root directory of disk $1$dia0: (use ds0:
    if shadowed)
  • see PCSI Undo directories
<<< considering running DFU >>>
$sho dev d $set default $1$dia0:[000000] $mcr dfu DFU> verify $1$dia0: DFU> verify $1$dia0: /lock/fix/rebuild
  • Digital File Utility (from the freeware CD)
  • see the disk names
  • move to the root directory of disk $1$dia0: (use ds0: if shadowed)
  • fire up DFU
  • verify this disk (read only)
  • verify this disk (write; only do this when system is idle)

See who is deleting files

DCL Command Result
system wide  
$set audit/server=new
$set audit/class=file/audit/enable=access=(SUCCESS:DELETE) 
[...wait a short period of time for users to do their thing...]
$set audit/server=flush
$anal/audit/full/out=TEMP.TMP SYS$MANAGER:SECURITY.AUDIT$JOURNAL
[...if you no longer need this audit...]
$set audit/class=file/audit/disable=access=(SUCCESS:DELETE) 
  • close the current audit log then open a new one
  • enable the auditing of successful file deleting
  • wait a short period of time
  • push buffered audits into the file
  • inspect the audit file
  • when finished
  • remove the audit
directory specific  
$set def someplace
$set def [-]
$dir *.dir/width=file=50
$set security						   -
/acl=(ALARM=SECURITY,ACCESS=DELETE+WRITE+SUCCESS+FAILURE) - neil.dir $reply/enable=security [... when done ...] $set security/acl/delete neil.dir
  • navigate to the directory in question
  • go up on level
  • get a directory of the directories
  • attach an ACL to the directory in question
  • copy security alerts to your terminal
  • remove the acl from the file (er, directory)

DFU Special Notes:

DFU (Digital File Utility) can also be used to UNDELETE files. Since this very powerful feature write-locks a disk prior to scanning for your missing file(s), the developers did not want too many accounts to be able to use UNDELETE so they made it a little difficult for users to activate. Here is a slightly obscure example:
$ set def sys$system								!
$ r authorize									!
UAF> add/id yada								! create system-wide identifier "yada"
%UAF-I-RDBADDMSG, identifier YADA value %X8001005D added to rights database	!
UAF> grant/id yada  neil							! grant "yada" to user "neil"
%UAF-I-GRANTMSG, identifier YADA granted to NEIL				!
UAF> sh neil									!

Username: NEIL                             Owner:  NSR_N123119_ADM
Account:  ADMCSM                           UIC:    [346,1] ([NEIL])
[...snip...]
Identifier                         Value           Attributes
  DFU_ALLPRIV                      %X8001001D
  YADA                             %X8001005D

UAF> revoke/id yada neil							! revoke "yada" from user "neil"
%UAF-I-REVOKEMSG, identifier YADA revoked from NEIL				!
UAF> rem/id yada   								! remove system-wide identifier "yada"
%UAF-I-RDBREMMSG, identifier YADA value %X8001005D removed from rights database	!
UAF> exit									!
%UAF-I-NOMODS, no modifications made to system authorization file		!
%UAF-I-NAFNOMODS, no modifications made to network proxy database		!
%UAF-I-RDBDONEMSG, rights database modified					!
$										!
Caveat: On older systems (like VMS-5.x) you will not be able to grant/revoke by account name. In this case you need to grant/revoke by UIC.

See who is accessing certain files (includes read)

DCL Command Result
$reply/dis
$reply/ena=security
$SET SECURITY -
/ACL=(ALARM=SECURITY,ACCESS=DELETE+CONTROL+READ+WRITE+SUCCESS+FAILURE) - SYS$COMMON:[SYSEXE]SYSUAF.DAT $dir/security SYS$COMMON:[SYSEXE]SYSUAF.DAT
$sho security SYS$COMMON:[SYSEXE]SYSUAF.DAT [...wait for a while...] $SET SECURITY/ACL/DELETE SYS$COMMON:[SYSEXE]SYSUAF.DAT
  • disable all opcom messages here
  • enable security messages here
  • request notification...
    ...of all accesses
    ...to this file
  • view the attached ACLs to this file
  • repeat
  • [wait for a while]
  • remove the notification

See who is changing the system clock

DCL Command Result
$set audit/server=new
$set audit/alarm/ena=time [...wait until you think you've got a problem...] $set audit/server=flush $anal/audit/full/out=TEMP.TMP SYS$MANAGER:SECURITY.AUDIT$JOURNAL
  • close the current audit log then open a new one
  • enable auditing of clock changes
  • wait for a while
  • push buffered audits into the file
  • inspect the audit file

See who is trying to break into the system

DCL Command Result
$set def sys$manager
$sho audit
$set audit/audit/enable=logfail=all [...wait until you think you've got a problem...] $set audit/server=flush $ana/audit/event=logfail/since=25-dec-2006 $ana/audit/event=logfail/since=25-dec-2006/full/pause=2
  • navigate to the system manager's home directory
  • see what events are currently audited
  • enable auditing of all login failures (should be enabled)
  • wait for a while
  • push buffered audits into the audit file
  • browse login failure in the audit file
  • display detailed failure messages

Actual Detailed Example Record

  Security Audit Analysis Utility
  -----------------------------------------------------------------------------------
  Security alarm (SECURITY) and security audit (SECURITY) on KAWC99, system id: 15335
  Auditable event:          Network login failure
  Event time:               25-DEC-2006 07:32:17.73
  PID:                      0000C6F3
  Process name:             SSHD 0796
  Username:                 test
  Remote nodename:          200.222.17.14       <<<---hacker/bot address (in 2006)
  Remote node id:           236052168
  Remote username:          SSH:TEST
  Status:                   %LOGIN-F-NOSUCHUSER, no such user
traceroute 200.222.17.14
traceroute to 200.222.17.14 (200.222.17.14), 30 hops max, 5 second(s) timeout
 1  207.35.137.65 (207.35.137.65)  1 ms  2 ms  2 ms
 2  10.18.89.1 (10.18.89.1)  7 ms  6 ms  6 ms
 3  206.47.229.198 (206.47.229.198)  143 ms  209 ms  12 ms
 4  core4-toronto63_POS9-0-0.net.bell.ca (64.230.147.153)  14 ms  14 ms  13 ms
 5  bx4-toronto63_so-1-0-0.net.bell.ca (64.230.160.126)  10 ms  12 ms  10 ms
 6  if-0-0-0.mcore3.TTT-Scarborough.as6453.net (216.6.98.57)  13 ms  11 ms  11 ms
 7  if-8-3-0-0.tcore1.NJY-Newark.as6453.net (216.6.98.2)  31 ms  46 ms  31 ms
 8  if-2-2.tcore2.NJY-Newark.as6453.net (66.198.70.2)  30 ms  31 ms  29 ms
 9  Vlan1351.icore1.NTO-NewYork.as6453.net (66.198.111.30)  36 ms  32 ms  35 ms
10  0.ae20.BR2.NYC4.ALTER.NET (204.255.168.173)  31 ms  31 ms  32 ms
11  0.ae2.XT2.NYC4.ALTER.NET (152.63.3.117)  31 ms  30 ms  31 ms
12  0.xe-11-1-1.XL4.NYC1.ALTER.NET (152.63.10.101)  32 ms  31 ms  32 ms
13  0.xe-9-0-0.GW14.NYC1.ALTER.NET (152.63.19.93)  32 ms  32 ms  31 ms
14  telemar-gw.customer.alter.net (152.179.29.238)  152 ms  153 ms  152 ms
15  pos4-0-1-arc-rj-rotn-01.telemar.net.br (200.223.131.70)  153 ms 200.223.46.121 (200.223.46.121)  154 ms 200.223.46.129 (200.223s
16  gigabitethernet1-0-1-arc-rj-rotn-h01.telemar.net.br (201.18.246.2)  160 ms  163 ms  160 ms
17  gigabitethernet1-0-0-arc-rj-rotd-h01.telemar.net.br (201.18.247.206)  152 ms  157 ms  153 ms
18  gigabitethernet1-0-0-arc-rj-rota-h01.telemar.net.br (201.18.247.36)  173 ms  159 ms  161 ms
19  serial2-1-7-0-arc-rj-rota-h01.telemar.net.br (200.222.66.2)  161 ms  184 ms  162 ms
                                              ++--- somewhere in Brazil

Debugging via the accounting file

sh  acc					! see current accounting
set acc/ena ! enable all accounting
set acc/new ! enable new log
================================================================
do something like running the troublesome program
-OR-
just let the system run for a short while
================================================================ set acc/dis ! disable all accounting
acc/brief ! browse the accounting log (inspect exit codes) acc/full ! browse the accounting log (inspect exit codes)
================================================================
notes:
1) some systems use the accounting file for customer billing so you might not wish to purge them
2) rather than "set acc/dis" you may wish to only disable some of the events (so that "sh acc"
would be returned from the original value

Related Links


Back to Home
Neil Rieck
Waterloo, Ontario, Canada.