HP OpenVMS Systemsask the wizard |
The Question is: Hello, I am looking for a way to allow users to create files, but once written, become read only, similar to a worm drive. Our users access the host in 2 ways: 1. through Reflection Terminal emulation which takes them directly into our application (no DCL access) 2. through NFS (Reflection NFS Connection) from a PC I have looked into assigning default file protection in a directory, but I'm not sure if I understand the implications of doing it that way. Can you help? Thanks! The Answer is :
This kind of storage area is fairly easy to do as a variation on the
"Project directory" as documented in the OpenVMS Guide to System
Security section 8.8.1.2. The files will be owned by a resource
identifier. Users will be able to create new files, and read them, but
will not be able to delete existing files. Note that due to OpenVMS
security rules, this means that users will not be able to create new
versions of existing files.
Here is a simple example. The resource identifier and directory are
called "TRAPDOOR" and the restricted user is called WIZARD:
$ MCR AUTHORIZE
UAF> ADD/IDENT TRAPDOOR/ATTRIBUTES=RESOURCE
%UAF-I-RDBADDMSG, identifier TRAPDOOR value %X80010070 added to rights database
UAF> GRANT/IDENT TRAPDOOR WIZARD/ATTRIBUTES=RESOURCE
%UAF-I-GRANTMSG, identifier TRAPDOOR granted to WIZARD
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
$ CREATE/DIRECTORY DKA100:[TRAPDOOR]/OWNER=TRAPDOOR
$ SET SECURITY DKA100:[000000]TRAPDOOR.DIR /ACL=( -
_$ (DEFAULT_PROTECTION,S:RWED,O:RWED,G,W),-
_$ (IDENTIFIER=TRAPDOOR,ACCESS=READ+WRITE+EXECUTE),-
_$ (IDENTIFIER=TRAPDOOR,OPTIONS=DEFAULT,ACCESS=READ+WRITE+EXECUTE),-
_$ (CREATOR,ACCESS=READ+EXECUTE))
Note that both the directory and DEFAULT ACE deny DELETE access and the
CREATOR ACE denies both DELETE and WRITE access.
From the users perspective:
$ create DKA100:[TRAPDOOR]AFILE.TXT
This file can be written. It will be owned by TRAPDOOR. It cannot be
deleted by the creator, only by someone with SYSTEM privileges. It
cannot be superceeded.
Exit
$ directory/security DKA100:[TRAPDOOR]AFILE.TXT
Directory DKA100:[TRAPDOOR]
AFILE.TXT;1 TRAPDOOR (RWED,RWED,,)
(IDENTIFIER=[USERS,WIZARD],OPTIONS=NOPROPAGATE,ACCESS=READ+EXECUTE)
(IDENTIFIER=TRAPDOOR,ACCESS=READ+WRITE+EXECUTE)
Total of 1 file.
$
$ type DKA100:[TRAPDOOR]AFILE.TXT
This file can be written. It will be owned by TRAPDOOR. It cannot be
deleted by the creator, only by someone with SYSTEM privileges. It
cannot be superceeded.
$ delete DKA100:[TRAPDOOR]AFILE.TXT;
%DELETE-W-FILNOTDEL, error deleting DKA100:[TRAPDOOR]AFILE.TXT;1
-RMS-E-PRV, insufficient privilege or file protection violation
$ create DKA100:[TRAPDOOR]AFILE.TXT
%CREATE-E-OPENOUT, error opening DKA100:[TRAPDOOR]AFILE.TXT; as output
-RMS-E-PRV, insufficient privilege or file protection violation
As an alternative, you can also use DECnet task-to-task to create
a privileged server, using either an executable image or DCL procedure
as the server. The caller passes a filename to a DECnet client task
(possibly embedded in your existing menu system), and the client then
passes a fully-qualified filename over to the server (potentially on
the same node), and the server then pulls the file over into a protected
(read-accessable) area. (This approach also permits the server to
establish the particular filename used.)
In either approach, remote NFS access adds another layer of mapping,
as the remote systems (the NFS clients) must be mapped into the
appropriate local user (in the NFS server). Either approach will
likely be easier if the files are "dropped off" using explicit local
access (via DCL in the menu, or via a DECnet task-to-task client in
the menu system), rather than files that are "dropped off" via direct
NFS (write) access.
|