From:	CRDGW2::CRDGW2::MRGATE::"SMTP::CRVAX.SRI.COM::RELAY-INFO-VAX"  9-AUG-1989 10:57
To:	MRGATE::"ARISIA::EVERHART"
Subj:	RE: sysuaf

Message-Id:  <8908091444.AA13023@crdgw1.ge.com>
Received: From KL.SRI.COM by CRVAX.SRI.COM with TCP; Wed,  9 AUG 89 07:17:16 PDT
Received: from CUNYVM.CUNY.EDU by KL.SRI.COM with TCP; Wed, 9 Aug 89 06:48:18 PDT
Received: from UALR.BITNET by CUNYVM.CUNY.EDU (IBM VM SMTP R1.2.1MX) with BSMTP id 1728; Wed, 09 Aug 89 09:49:49 EDT
Date: Wed, 9 Aug 89 08:45 CST
From: Dale Miller <DOMILLER%UALR.BITNET@CUNYVM.CUNY.EDU>
Subject: RE: sysuaf
To: INFO-VAX@KL.SRI.COM
X-Vms-To: IN%"INFO-VAX@KL.SRI.COM"

 Pan Xiaofeng
      (cs.utexas.edu!usc!polyslo!vlsi3b15!lafcol!panx@TUT.CIS.OHIO-STATE.EDU>)
      writes:
>Hi, I want to write some account management program that will use sysuaf
>file. But accessing it through authorize is too slow and painful. Can
>someone tell me where to find info about the structure of sysuaf( the
>various keys and how different flags are stored)? Other info and/or
>advice concerning the manipulation of the file will be appreciated.
>Thanks in advance.
>
>--Xiaofeng Pan
>BITNET    panx@lafayett
>UUCP      ..!rutgers!lafcol!panx
>( bitnet preferred)
Since I thought this might be of general interest, here is the SYSUAF
definition in FORTRAN with DTR comments.

        structure /uaf_record/
          byte          B_RTYPE                 ! pos 001-001 USAGE IS BYTE
          byte          B_VERSION               ! pos 002-002 USAGE IS BYTE
          integer*2     W_USRDATOFF             ! pos 003-004 USAGE IS WORD
          character*32  T_USERNAME              ! pos 005-036 PICTURE IS X(32)
          integer*2     W_MEMBER                ! pos 037-038 USAGE IS WORD
          integer*2     W_GROUP                 ! pos 039-040 USAGE IS WORD
          integer*4     L_SUB_ID                ! pos 041-044 USAGE IS LONG
          real*8        Q_PARENT_ID             ! pos 045-052 USAGE IS QUAD
          real*8        T_ACCOUNT_1             ! pos 053-060 USAGE IS QUAD
          character*24  FILLER_1                ! pos 061-084 PICTURE IS X(24)
          byte          B_OWNER_LENGTH          ! pos 085-085 USAGE IS BYTE
          character*31  T_OWNER_1               ! pos 086-116 PICTURE IS X(31)
          byte          B_DEFDEV_LENGTH         ! pos 117-117 USAGE IS BYTE
          character*31  T_DEFDEV_1              ! pos 118-148 PICTURE IS X(31)
          byte          B_DEFDIR_LENGTH         ! pos 149-149 USAGE IS BYTE
          character*63  T_DEFDIR_1              ! pos 150-212 PICTURE IS X(63)
          byte          B_LGICMD_LENGTH         ! pos 213-213 USAGE IS BYTE
          character*63  T_LGICMD_1              ! pos 214-276 PICTURE IS X(63)
          byte          B_DEFAULT_CLI_LENGTH    ! pos 277-277 USAGE IS BYTE
          character*31  T_DEFAULT_CLI_1         ! pos 278-308 PICTURE IS X(31)
          byte          B_CLITABLES_LENGTH      ! pos 309-309 USAGE IS BYTE
          character*31  T_CLITABLES_1           ! pos 310-340 PICTURE IS X(31)
          real*8        Q_PWD                   ! pos 341-348 USAGE IS QUAD
          real*8        Q_PWD2                  ! pos 349-352 USAGE IS QUAD
          integer*2     W_LGIFAILS              ! pos 353-354 USAGE IS WORD
          integer*2     W_SALT                  ! pos 355-356 USAGE IS WORD
          byte          B_ENCRYPT               ! pos 357-357 USAGE IS BYTE
          byte          B_ENCRYPT2              ! pos 358-358 USAGE IS BYTE
          integer*2     B_PWD_LENGTH            ! pos 359-360 USAGE IS WORD
          real*8        Q_EXPIRATION            ! pos 361-368 USAGE IS DATE
          real*8        Q_PWD_LIFETIME          ! pos 369-376 USAGE IS QUAD
          real*8        Q_PWD_DATE              ! pos 377-384 USAGE IS DATE
          real*8        Q_PWD2_DATE             ! pos 385-392 USAGE IS DATE
          real*8        Q_LASTLOGIN_I           ! pos 393-400 USAGE IS DATE
          real*8        Q_LASTLOGIN_N           ! pos 401-408 USAGE IS DATE
          real*8        Q_PRIV1                 ! pos 409-416 USAGE IS QUAD
          real*8        Q_DEF_PRIV1             ! pos 417-424 USAGE IS QUAD
          character*20  MIN_CLASS               ! pos 425-444 PICTURE IS X(20)
          character*20  MAX_CLASS               ! pos 445-464 PICTURE IS X(20)
          integer*4     L_FLAGS                 ! pos 465-468 USAGE IS LONG
          character*3   B_NETWORK_ACCESS_P      ! pos 469-471 PICTURE IS X(3)
          character*3   B_NETWORK_ACCESS_S      ! pos 472-475 PICTURE IS X(3)
          character*3   B_BATCH_ACCESS_P        ! pos 476-479 PICTURE IS X(3)
          character*3   B_BATCH_ACCESS_S        ! pos 480-482 PICTURE IS X(3)
          character*3   B_LOCAL_ACCESS_P        ! pos 483-485 PICTURE IS X(3)
          character*3   B_LOCAL_ACCESS_S        ! pos 486-488 PICTURE IS X(3)
          character*3   B_DIALUP_ACCESS_P       ! pos 489-491 PICTURE IS X(3)
          character*3   B_DIALUP_ACCESS_S       ! pos 492-494 PICTURE IS X(3)
          character*3   B_REMOTE_ACCESS_P       ! pos 495-497 PICTURE IS X(3)
          character*3   B_REMOTE_ACCESS_S       ! pos 498-500 PICTURE IS X(3)
          character*13  FILLER_2                ! pos 501-513 PICTURE IS X(13)
          byte          B_PRIMEDAYS             ! pos 514-514 USAGE IS BYTE
          byte          B_PRI                   ! pos 515-515 USAGE IS BYTE
          byte          B_QUEPRI                ! pos 516-516 USAGE IS BYTE
          integer*2     W_MAXJOBS               ! pos 517-518 USAGE IS WORD
          integer*2     W_MAXACCTJOBS           ! pos 519-520 USAGE IS WORD
          integer*2     W_MAXDETACH             ! pos 521-522 USAGE IS WORD
          integer*2     W_PRCCNT                ! pos 523-524 USAGE IS WORD
          integer*2     W_BIOLM                 ! pos 525-526 USAGE IS WORD
          integer*2     W_DIOLM                 ! pos 527-528 USAGE IS WORD
          integer*2     W_TQCNT                 ! pos 529-530 USAGE IS WORD
          integer*2     W_ASTLM                 ! pos 531-532 USAGE IS WORD
          integer*2     W_ENQLM                 ! pos 533-534 USAGE IS WORD
          integer*2     W_FILLM                 ! pos 535-536 USAGE IS WORD
          integer*2     W_SHRFILLM              ! pos 537-538 USAGE IS WORD
          integer*4     L_WSQUOTA               ! pos 539-542 USAGE IS LONG
          integer*4     L_DFWSCNT               ! pos 543-546 USAGE IS LONG
          integer*4     L_WSEXTENT              ! pos 547-550 USAGE IS LONG
          integer*4     L_PGFLQUOTA             ! pos 551-554 USAGE IS LONG
          integer*4     L_CPUTIM                ! pos 555-558 USAGE IS LONG
          integer*4     L_BYTLM                 ! pos 559-562 USAGE IS LONG
          integer*4     L_PBYTLM                ! pos 563-566 USAGE IS LONG
          integer*4     L_JTQUOTA               ! pos 567-570 USAGE IS LONG
          integer*2     W_PROXY_LIM             ! pos 571-572 USAGE IS WORD
          integer*2     W_PROXIES               ! pos 573-574 USAGE IS WORD
          integer*2     W_ACCOUNT_LIM           ! pos 575-576 USAGE IS WORD
          integer*2     W_ACCOUNTS              ! pos 577-578 USAGE IS WORD
        end structure

--------------------------------------------------------------------------
| Dale O. Miller                        | #   #  ###  #     ####         |
| University of Arkansas at Little Rock | #   # #   # #     #   #        |
| 2801 S. University                    | #   # ##### #     ####         |
| Little Rock, AR  72204-1099  USA      | #   # #   # #     #  #         |
| (501)569-8714                         |  ###  #   # ##### #   #        |
| DOMILLER@UALR.BITNET                  | Disclaimer: This does not      |
| 92-20-28 W,34-43-30 N.ICBMNET         | say what I say it doesn't say. |
--------------------------------------------------------------------------

