![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: Do you know of a way of resetting the Login Fails back to zero within authorize without actually logging in. I can't find any VMS command/utility/freeware that will actually do this... The Answer is : A sufficiently-privileged user can use a simple program and particularly a call to the $setuai system service for this purpose. In deference to various web browsers, the angle brackets normally used in this and other C programs have been here converted over into braces. /* ** ** COPYRIGHT (c) 1992, 1998 BY ** DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS. ** ALL RIGHTS RESERVED. ** ** THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ** ONLY IN ACCORDANCE OF THE TERMS OF SUCH LICENSE AND WITH THE ** INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER ** COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY ** OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY ** TRANSFERRED. ** ** THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ** AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT ** CORPORATION. ** ** DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ** SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. ** */ /* ** ** Facility: ** ** Examples ** ** Version: V1.0 ** ** Abstract: ** ** Resets the logfail count on the specified account. ** Requires write access to SYSUAF.DAT via sys$setuai. ** ** Author: ** Stephen Hoffman ** OpenVMS Engineering ** ** Creation Date: 29-Oct-1998 ** ** Modification History: ** ** */ #pragma module LOGFAIL_SETUAI "V1.0-000" /* ** To build and to reset the default account to zero: ** ** $ CC/DECC LOGFAIL_SETUAI ** $ LINK LOGFAIL_SETUAI ** $ LF :== $SYS$DISK:[]LOGFAIL_SETUAI ** $ LF DEFAULT 0 ** */ #include {descrip.h} #include {ssdef.h} #include {starlet.h} #include {stdio.h} #include {string.h} #include {stsdef.h} #include {uaidef.h} #include {unixlib.h} struct ItemList3 { short int ItemLength; short int ItemCode; void *ItemBuffer; void *ItemRetLen; }; #ifndef UAF$S_USERNAME #define UAF$S_USERNAME 32 #endif main( int argc, char **argv ) { int RetStat; struct ItemList3 ItmLst[10]; char Username[UAF$S_USERNAME]; struct dsc$descriptor UsernameDsc = { 0, DSC$K_DTYPE_T, DSC$K_CLASS_S, NULL }; int i; int LogFailCount = 0; if (( argc != 2 ) && ( argc != 3 )) { printf("usage: %s username count\n", argv[0] ); printf(" username is required.\n"); printf(" count defaults to zero.\n"); printf("this is a foreign command.\n"); return SS$_BADPARAM; } sscanf( argv[1], "%s", Username ); if ( argc == 3 ) sscanf( argv[2], "%d", &LogFailCount ); LogFailCount &= 0x0ffff; UsernameDsc.dsc$w_length = strlen( Username ); UsernameDsc.dsc$a_pointer = Username; printf("Resetting username %s to %d logfails.\n", Username, LogFailCount ); i = 0; ItmLst[i].ItemLength = sizeof(short int); ItmLst[i].ItemCode = UAI$_LOGFAILS; ItmLst[i].ItemBuffer = (void *) &LogFailCount; ItmLst[i++].ItemRetLen = NULL; ItmLst[i].ItemLength = 0; ItmLst[i].ItemCode = 0; ItmLst[i].ItemBuffer = NULL; ItmLst[i++].ItemRetLen = NULL; RetStat = sys$setuai( 0, 0, &UsernameDsc, ItmLst, 0, 0, 0); if (!$VMS_STATUS_SUCCESS( RetStat )) return RetStat; return SS$_NORMAL; }
|