(go to: table of contents, index, list of vms_sys, prev: SETPRN, next: SETSWM)
Format:
SETPRV - Set Privilege
Enables or disables specified privileges for the calling process.
14-FEB-1999 ZE.
prvprv = vms_sys.setprv ([enbflg] [,prvadr] [,prmflg])
Returns:
Arguments:
Examples:
$ SHOW PROCESS /PRIVILEGES
27-NOV-1998 20:48:21.80 User: ZESSIN Process ID: 00000156
Node: HERE Process name: "ZESSIN_FTA14"
Authorized privileges:
NETMBX OPER SETPRV SYSPRV TMPMBX
Process privileges:
NETMBX may create network device
OPER may perform operator functions
SETPRV may set any privilege bit
SYSPRV may access objects via system protection
TMPMBX may create temporary mailbox
Process rights:
INTERACTIVE
LOCAL
NEWS_MANAGER
System rights:
SYS$NODE_HERE
$
$ python
>>> import vms_lib
>>> import vms_prvdef
>>> import vms_sys
>>> vms_lib.getjpi ('JPI$_CURPRIV', 0)
(342, 269795328L)
>>> q_newprv = vms_prvdef.PRV_M_BYPASS
>>> q_oldprv = vms_sys.setprv (1,q_newprv)
>>> q_oldprv
(1, 269795328L)
>>> hex (q_oldprv[1])
'0x1014C000L'
>>>
>>> vms_lib.getjpi ('JPI$_CURPRIV', 0)
(342, 806666240L)
>>>
>>> # the READALL privilege bit is in the second longword
>>> q_newprv = vms_prvdef.PRV_M_READALL
>>> print hex (q_newprv)
0x800000000L
>>> q_oldprv = vms_sys.setprv (1,q_newprv,1)
>>> q_oldprv , hex (q_oldprv[1]) # prmflg ^ specified
((1, 269795328L), '0x1014C000L')
>>>
$! from another process
$ SHOW PROCESS /PRIVILEGES /IDENTIFICATION=00000156
27-NOV-1998 20:53:13.99 User: ZESSIN Process ID: 00000156
Node: HERE Process name: "ZESSIN_FTA14"
Authorized privileges:
NETMBX OPER SETPRV SYSPRV TMPMBX
Process privileges:
NETMBX may create network device
OPER may perform operator functions
READALL may read anything as the owner
SETPRV may set any privilege bit
SYSPRV may access objects via system protection
TMPMBX may create temporary mailbox
[...]
$
>>> q_newprv = vms_prvdef.PRV_M_SYSLCK
>>> q_oldprv = vms_sys.setprv (0,q_newprv,1)
>>> q_oldprv , hex (q_oldprv[1])
((1, 34629533696L), '0x81014C000L')
>>>
>>> vms_lib.do_command ('show process/privileges')
27-NOV-1998 20:55:27.46 User: ZESSIN Process ID: 00000156
Node: HERE Process name: "ZESSIN_FTA14"
Authorized privileges:
NETMBX OPER SETPRV SYSPRV TMPMBX
Process privileges:
NETMBX may create network device
OPER may perform operator functions
READALL may read anything as the owner
SETPRV may set any privilege bit
SYSPRV may access objects via system protection
TMPMBX may create temporary mailbox
[...]
$
- READALL privilege is still enabled after Python has ended
--------------------
$ SHOW PROCESS /PRIVILEGES
28-NOV-1998 19:07:59.78 User: NOPRIV Process ID: 0000015B
Node: HERE Process name: "NOPRIV"
Authorized privileges:
NETMBX READALL TMPMBX
Process privileges:
READALL may read anything as the owner
TMPMBX may create temporary mailbox
[...]
$
$ python
>>> import vms_lib
>>> import vms_prvdef
>>> import vms_sys
>>> pid, q_priv = vms_lib.getjpi ('JPI$_CURPRIV', 0)
>>> q_priv, hex(q_priv)
(34359771136L, '0x800008000L')
>>>
>>> q_newprv = vms_prvdef.PRV_M_NETMBX
>>> status, q_oldprv = vms_sys.setprv (1,q_newprv)
>>> status, q_oldprv
(1, 34359771136L)
>>>
>>> pid, q_priv = vms_lib.getjpi ('JPI$_CURPRIV', 0)
>>> q_priv, hex(q_priv)
(34360819712L, '0x800108000L')
>>>
>>> # BYPASS is not an authorized privilege
>>> q_newprv = vms_prvdef.PRV_M_BYPASS
>>> status, q_oldprv = vms_sys.setprv (1,q_newprv)
>>> status, q_oldprv
>>> vms_sys.getmsg (status)
('%SYSTEM-S-NOTALLPRIV, not all requested privileges authorized',\
(0, 0, 0, 0))
>>>
--------------------
>>> vms_sys.setprv ('X')
Traceback (innermost last):
File "<stdin>", line 1, in ?
TypeError: argument 1: enbflg - must be integer or None
>>>
>>> vms_sys.setprv (1,'X')
Traceback (innermost last):
File "<stdin>", line 1, in ?
TypeError: argument 2: prvadr - must be long integer or None
>>>
>>> vms_sys.setprv (1,0L,'X')
Traceback (innermost last):
File "<stdin>", line 1, in ?
TypeError: argument 3: prmflg - must be integer or None
>>>
(go to: table of contents,
index,
list of vms_sys,
prev: SETPRN,
next: SETSWM)