==Phrack Magazine== Volume Four, Issue Forty-Four, File 14 of 27 ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()() A Guide to Data General Corporation's AOS/VS System PART I by Herd Beast INTRODUCTION ~~~~~~~~~~~ This file is a full (as full as such a file can get) guide to the AOS/VS system. The main reason for writing it is that from what I've seen, there is practically no info (in the form of files or otherwise) about it. I won't say I'm the only one who knows anything about it, but I had a hell of a time getting any sort of help when I started hacking these systems (I didn't get that help, in case you were wondering, and wrote this file all by myself 'cause I'm a MAN! Hahaha! <snort> <snort>). I will explain a little about AOS/VS and then explain some of the commands and security features in it. This file is not a buffer of any help facility, although much information can and will be found in the help facility. I can be contacted (hopefully) at email@example.com. If you want a nice start, and a front page on Newsweek, some Texaco ("Star of the American Road") systems run AOS/VS. I cannot, will not, and do not assume liability for ANY of the effects of the use of this file. Also, I cannot guarantee that EVERYTHING will work EVERYWHERE, so treat this file as a reference. This file by no means covers everything about AOS/VS. IDENTIFYING THE SYSTEM ~~~~~~~~~~~~~~~~~~~~~ Should you just fall at the system prompt, you might mistake it for a VMS. However, blank prompts like that are rare. An AOS/VS will identify itself like this: (this and all other buffered info in this file are from an AOS/VS II with CLI32. Only the best for Phrack) AOS/VS II 2.20.00.12 / EXEC-32 2.20.00.07 31-May-93 22:51:25 @CON177 Username: Password: Another thing different will be the incorrect login message: Invalid username - password pair The header line lists the system version, current time/date and the console you are using. When you reach the maximum incorrect logins defined in the system, it will show the line below and disconnect: Too many attempts, console locking for 10 seconds When you do succeed to log on, the system will display: ------ Copyright (C) Data General Corporation, 1980 - 1992 All rights reserved. Licensed material -- property of Data General Corporation This software is made available solely pursuant to the terms of a DGC license agreement which governs its use. ((NOTE: Or something else. This is the default)) -------- Most recent logon 1-Jan-93 10:10:01 Very clear. Before you do anything, type CHARACTERISTICS. You will then get output like this: /605X/LPP=24/CPL=80/BREAK=BMOB/TCC=40000/TCD=5000/TDW=1000/THC=2000/TLT=2000 /ON/ST/EB0/ULC/WRP/CTD /OFF/SFF/EPI/8BT/SPO/RAF/RAT/RAC/NAS/OTT/EOL/UCO/MRI/FF/EB1/PM/NRM/MOD/TO/TSP/ C/FKT/VAL/HOFC/SHR/OFC/IFC/16B/ACC/SRDS/XLT/AUTOBAUD/CALLOUT/MDUA/HDPX/SMCD/RT D/HIFC/G1G0/DKHW/NLX Look for "/NAS". It stands for non ANSI standard, which means that if you are using ANSI (probably you are), you needs to issue CHARACTERISTICS/OFF/NAS, should you find "/NAS" listed after "/ON". Upon logging off from the system (BYE), you will see: AOS/VS II CLI Terminating 1-JAN-93 11:11:01 Process 180 Terminated Elapsed Time 0:16:26, CPU Time 0:00:02.447, I/O Blocks 281 (Other console jobs, same USERNAME -- 16) User 'HBT' logged off @CON228 1-Jan-93 11:11:01 SYSTEM DEFAULTS ~~~~~~~~~~~~~~ These are accounts I usually found existing. As usual, they are really similar to those of any other system. USERNAME -------- ((Privileged accounts)) OP EXEC default username SYSMGR System manager CEO_MGR If the system is running CEO OPER OPERATOR ((Regular accounts)) CEO.xxxxx If the system is running CEO, a CEO user, xxxxx being his number. As for password guessing, well, it's all been said. Try the username, with some modification, you might get in. As dumb as it sounds, yes, people do have weak passwords, even today, although not everywhere. SYSTEM STRUCTURE ~~~~~~~~~~~~~~~ In this section I'll try to describe the real basics of AOS/VS. I will describe a few commands HERE, and not under "Command List", these commands will be the basic commands: change directory, list files, etc, needed to survive in any system. The AOS "shell" is called CLI (Command Line Interpreter). There are two versions of CLI, CLI16 and CLI32, with CLI32 being more advanced. The CLI version affects the system prompt, the way commands are handled by the system and by the user, and more. For example, some command switches do not exist under CLI16 (unless very important, I omitted switches that work only under CLI32 from this file). Here are the privilege levels available under AOS/VS: CLI16 PROMPT CLI32 PROMPT PRIVILEGES MODES -------------+--------------+-------------------------- ) ) None Sm) System Manager +) Sp) Superprocess *) Su) Superuser SmSp) System Manager and Superprocess SmSu) System Manager and Superuser #) SpSu) Superprocess and Superuser SmSpSu) System Manager, Superprocess, Superuser AOS/VS doesn't grant privileges upon logon. A user's profile may state the user can access privilege level So-And-So, and if the user later needs that level, he calls upon a SUPER utility to grant him that level. This is the place to explain how several different utilities work. OPERATOR grants the user the ability to access diskettes in dump or load sessions (see the section titled "System Commands") in sequential order, instead of accessing them one by one. SUPERUSER turns off all access checking, enabling the user to do anything with any file on the system. SUPERPROCESS gives the user the ability to terminate, block, unblock, or change priorities of any process on the system. The last command, PRIVILEGE, which is available only under CLI32, enables the user to set both SUPERUSER and SUPERPROCESS access. It also offers the only way to set SYSTEMMANAGER access, which is required for operations like changing time or date. Command are executed by calling their names, or any part of their name that only fits them. For example, SUPERUSER can be abbreviated as SUPERU. It is important to remember that command switches MUST follow the command without any space, or else the command will try to process the switches! For example, CHARACTERISTICS /OFF/NAS will result in an "Error: Illegal filename character characteristics,/off/nas". The root directory directory is called ':'. Any other directories are under it, for example ':OUT' and ':OUT:RALF'. If, for example, you FTP into an AOS/VS and use "cd /" you will be moved in ':'. If you use "cd /out/ralf" you will be moved into ':OUT:RALF'. To make this much more clearer (right): : HBT | | TEXT / \ PHRACK SEX Legal characters in file or directory names are all the alphabet and numbers, plus '$', '_', '.' and '?'. Moving from directory to directory is done by using the "DIRECTORY" command. Without any arguments, DIRECTORY shows the current path. With an argument, DIRECTORY changes to that directory. DIRECTORY [directory] --------------------- /I Changes to the initial directory /I path Changes the initial directory to "path" /P Changes to the previous directory To list files in a directory, use "FILESTATUS". Without arguments, FILESTATUS lists files in the current directory. With a path argument, FILESTATUS lists file in that path. FILESTATUS [directory] ---------------------- /[AFTER|BEFORE]/[TCR|TLA|TLM]=date and/or time Shows files matching the selection date or time. The selections are: time created (TCR); time last accessed (TLA); and time last modified (TLM). The difference between accessed and modified is pretty clear, for example if the file is an executable. The date/time format is: for TIME - hour-minute-sec (xx-xx-xx); for DATE - day-month-year (xx-xxx-xx); for BOTH - dd-mmm-yy:hh:mm:ss. Example command lines will be FILESTATUS/AFTER/TCR=11 Created after 11 AM FILESTATUS/BEFORE/TLM=01-JAN-90 Modified before 01/01 1990 FILESTATUS/AFTER/TLA=01-JAN-90:11 Accessed after 11 AM, 01/01, 1990 /ASSORTMENT Normally, FILESTATUS output is just file name. With /ASSORTMENT, FILESTATUS shows file type, time/date of creation, and length in bytes. Similar to Unix, if the file is a link, the file type is set to LNK and FILESTATUS shows its path. /COUNT Tells how many files are in the directory. [CLI32] /[DCR|DLA|DLM] Shows date of creation (DCR); date last accessed (DLA); and date last modified (DLM). /LENGTH Displays file length in bytes. /LINKNAME If the file is a link, FILESTATUS displays the information about the file that it's linked too. For example, if BOB is linked to RON, FILESTATUS/LINKNAME BOB would display RON's details. Otherwise, nothing happens. /TYPE=[\]type Displays files of type, or all files not of that type (if \type) was used. See below for valid file types. /UDA If the file has a UDA (user data area), its presence is displayed. The CLI's wildcards (sort of), are '=', '^', ':' and '@. '=' means the current directory. '^' means the parent directory. ':' is (as already said) the root directory. '@' means the devices directory (where consoles, tape drives, modems, etc are. Similar to /dev on Unix). Note that when talking about directories, the ':' is already included. For example, if you're in :UDD:HBT:TEXT, and want to move to :UDD:HBT:BIN, you'd type DIRECTORY ^BIN, and not DIRECTORY ^:BIN. File wildcards are '+', which is equivalent to '*' at DOS, and '#' which is equivalent to '*.*' at DOS. For example, FILE +.CLI will show all the files whose names end with ".CLI"; FILE :UDD:# will display all the files in UDD (which won't happen if you just issue FILE :UDD -- in that case, you'll see only information about the directory UDD, and not the files within it). As with Unix, you can enter more than one command on a line if you separate the commands with a ';' (a semicolon). If you need more than a line for your commands, type an '&' before pressing Return, and the CLI will just keep on reading, instead of processing the command line and try to run it. This goes ONLY for a sequence like this: "&<Return>", an '&' anywhere else acts just like any other character. There are several control characters the CLI takes and uses: CONTROL CHAR WHAT IT DOES ------------------+------------------------------- Ctrl-C Begins a Ctrl char sequence. Ctrl-D End of file. Ctrl-L Clear screen. Ctrl-P Don't interpret the following character in any special way. Ctrl-S Stops output to the terminal. Ctrl-Q Resumes output to the terminal. Ctrl-U Cancel (delete) current input line. Ctrl-C Ctrl-A Interrupt current process. Ctrl-C Ctrl-B Terminates current process. Ctrl-C Ctrl-C Empties the input buffer. Ctrl-C Ctrl-E Terminates current process and create a break file (where termination message is stored). If the CLI is run with a /NOCA switch, it will ignore Ctrl-C Ctrl-A sequences, so if put in the start of a macro file, it won't allow you to break that macro and enter the CLI. AOS/VS had many file types. File types are three letter acronyms (although not always) for the file; the same way DOS and VMS have extensions, the file type controls what the file is (it can have any extension in its name). File types have a decimal numbers assigned to them, as well. There are 70 file types, although the operating system reserves space for 128. The user can define his own file types. These are some of the he AOS/VS file types: TYPE NUMBER TYPECODE MEANING -------------+------------+----------------- All these types / 11 LDU Logical disk unit are directories -| 12 CPD Control point directory \ 10 DIR Directory 0 LNK Link 68 TXT Text 1 SDF System data file 2 MTF Magnetic tape file 13 MTV Magnetic tape volume 22 MTU Magnetic tape unit 49 CON Console 51 RMA Remote host (RMA) 52 HST Remote host (X.25 SVC) 54 PVC Remote host (X.25 PVC) 64 UDF User data file 69 LOG System log file 74 PRV AOS/VS program file 75 WRD Word processing file 87 UNX Unix file (created on a Unix) 95 SPD Spreadsheet file 104 PIP Pipe 105 TTX Teletex file "Generic files" are actually pointers that help using devices and files. For example, the @NULL generic file functions like /dev/null on Unix. Here are the generic files: @CONSOLE The process' (user's) console. @DATA A long file created by the user that will be used as data by a program. @DATA is set using DATAFILE. @INPUT A short file created by the user that will be used as input by a program. @INPUT is set using PROCESS/INPUT=. @NULL Well, null. @LIST A long output file that will be used as a program's output. @LIST is set using LISTFILE. @OUTPUT A short output file for a program. @OUTPUT is set using PROCESS/OUTPUT=. When a program is run, it will sometime try to open one of these generic files. If they're not set, it will fail on error 21 (non existent file). But if the file is set, it can use it. So, for example, you can use PROCESS/OUTPUT=@CONSOLE PROGRAM for output to go to you, or PROCESS/OUTPUT=OUT_FILE PROGRAM for it to go to OUT_FILE. "Device files" are files the connect to hardware parts, such as modems, printers, tapes, diskette drives, FAX machines, etc. In due time, a program called EXEC makes a connection between processes and devices and utilizes those devices (see the section titled "The 'EXEC' Program"). Some devices are also used by the backup related programs DUMP and LOAD, and more. Some of these are: @MTB0:x The magnetic tape unit #0, x being a dumpfile on the tape (x starts from 0). @DPJ A diskette device name. @LFD A generic labeled diskette file name. The equivalent of a PATH (usually environment variable) in other systems is called SEARCHLIST in AOS/VS. When you call a command, or ask for help, the CLI looks through your SEARCHLIST for the files. So, assuming you typed HELP MODEM, and somewhere in your searchlist there exists a file called MODEM.CLI, HELP will show you, modem - Macro, File :UTIL:COMM:MODEM.CLI The same goes for other commands, even TYPE (TYPE MODEM.CLI from :UDD:HBT, if :UTIL:COMM is in your searchlist and there's no MODEM.CLI in :UDD:HBT will work). To display your searchlist, just use plain SEARCHLIST. To change it, use SEARCHLIST path,path,path ... It's possible to set a password for your current CLI session. This password is not the password used upon login! It's a password the user sets to protect his session. He then types LOCK, and from then, anyone wishing to use the user's CLI (from the user's console), must enter the password first. Legal passwords are up to 32 characters long, not including Ctrl characters. The CLI offers several levels to the user. It starts on the highest level, 0, and the user may create other level, and use POP to move up a level, and PUSH to go down a level. When a user POPs to a level, the CLI environment of the older (higher) level remains (the environment of the level he was in until that time is therefore changed). When he PUSHes, the current level's environment is copied to the lower level. To display the current CLI level, use LEVEL. To display the level's environment, use CURRENT. To display an upper level's environment (except when at the highest level), use PREVIOUS. When you want to print a file, or run something in the background, you have to submit it as a job. The submit a printing job, use the QPRINT command (will print the file). To submit a batch job, which is for executing a command, use QBATCH (for example, QBATCH MASM ASMPROG). AOS/VS had a facility called "queues", managed by the EXEC program (see "The 'EXEC' Program"). A queue is a place where file transfer, batch, and printing jobs are stored until the right process can take them and execute them. The standard queues are: QUEUE NAME JOB TYPE CONTENTS --------------+------------+---------------------------------- BATCH_INPUT Batch Batch input files. Submitted by QBATCH or QSUBMIT. BATCH_OUTPUT Printing Output files from finished batch jobs (usually sent to a line printer). BATCH_LIST Printing List files from finished batch jobs (usually sent to a line printer). ((Batch jobs are submitted through QBATCH.)) LPT Printing Print jobs submitted by QSUBMIT. MOUNTQ Mount Tape mount requests. Submitted by MOUNT. After a job has been submitted, use QDISPLAY to show its status. Use QHOLD to hold jobs and QUNHOLD to release them. Last, to display the status of all queues, use QDISPLAY as well. AOS/VS also has an extensive help facility. For help on broad topics, use HELP (to list topics) and then HELP *TOPIC. For help on system commands, use HELP COMMAND (for a list of switches) or HELP/V COMMAND for more details. CLI MACRO PROGRAMMING ~~~~~~~~~~~~~~~~~~~~ Macro filenames usually end with ".CLI" are usually text files (filetype TXT). A macro is a file that will be executed when called (adding .CLI to the name when calling isn't necessary), and perform the commands (or other macros) in it. If the macro matches the name of a CLI command, the macro must be called together with the .CLI part of its name. Macros expand arguments in the following way: Range Arguments (like filenames): %x% Argument number x, with its switches. %0% is the macro's name. %-% All the arguments, with their switches, except for %0%. %x-y,i% Arguments x through y, in jumps of i. If x or i are missing, the CLI assumes 1. If y is omitted, 32767 is assumed. For example, if the arguments were "1 2 3 4 5 6 7", a %2-6,2% call expands to "2 4 6". Switch Arguments: %x/% All the switches of argument x. %x\% Argument x, without its switches. %x/y% Argument x, with switch number y. %x/y=% The value of argument's x switch number y. %x\y% All the switches of argument x, including their values, except for switch number y. Conditionals are used in the form of [CONDITIONAL,ARGS]. If a conditional returns TRUE, the CLI executes everything after it until it reaches an ELSE or an END. Otherwise, it skips to an ELSE or an END (basic programming). !EQUAL True if both arguments equal alphabetically. !NEQUAL True if both arguments don't equal alphabetically. !UEQ True if both arguments equal numerically. These are called pseudo macros, and are usually built like conditionals, although sometimes they just substitute for a part of the environment. There are about 60 of them, but I'll only list a selected few for brevity. [!ACL path] Expands for the ACL of path. [!ASCII octnum] Expands to the ASCII character with the octnum octal number. For example, newline is octal 12. [!CLI] Expands to CLI32 or CLI16, according to the CLI. [!DATE] Date, like 01-Jan-93. [!SYSTEM] Expands to the type of OS. [!SEARCHLIST] Expands to the search list. [!LEVEL] Expands to the current CLI level. [!CLI] Expands to the CLI type. [!EXPLODE args] Puts a comma between each pair of character in args. When used with STRING, in converts spaces and tabs too. When used with WRITE, in converts into space. [!LISTFILE] Expands to the path of the listfile. [!USERNAME] Expands to the username of the person running the macro. [!LOGON] Returns CONSOLE if logged on to a terminal or BATCH if logged in on a batch stream (only works for EXEC logons). [!DATAFILE] Expands to the path of the datafile. [!HID [host]] Returns the host ID. With [host] return the host ID of [host]. [!HOST [host]] Returns the host name. [!STRING] Expands to the value of the CLI string. A more complex pseudo macro is !READ: [!READ[/args] text] !READ prints text to the output and then expands to what was received from the input (which is considered finished when a newline is received). !READ's args are functional only under CLI32 and are: /EOF=str The string that will be returned if EOF is met. /FILEID=file Reads from file instead of @OUTPUT. The file must be already opened using OPEN. /LENGTH=x Read until x characters were typed. /S Discards all typed after a semicolon (';') or a left bracket ('['). Otherwise, that text must be a valid CLI command or macro, or a pseudo macro or macro ending with a right bracket if following the left bracket. Note that all pseudo macros, including !READ can be used at the command line and not just in CLI macro files. Here's an example: COMMENT ------------------------------------------------- COMMENT Examples of the use of conditionals and arguments COMMENT in macros. COMMENT This macro was invoked like this: COMMENT HMAC 9 0 000 COMMENT ------------------------------------------------- [!EQUAL,%1%,] WRITE,,,,Execute with arguments please! [!ELSE] [!EQUAL,%2%,%3%] WRITE,,,,%2% and %3% do match ALPHABETICALLY. [!ELSE] WRITE,,,,%2% and %3% don't match ALPHABETICALLY. [!END] [!UEQ,%2%,%3] WRITE,,,,%2% and %3% do match NUMERICALLY. [!ELSE] WRITE,,,,%2% and %3% don't match ALPHABETICALLY. [!END] [!UEQ,%1%,%2%] WRITE,,,,%1% and %2% do match NUMERICALLY. [!ELSE] WRITE,,,,%1% and %2% don't match NUMERICALLY. [!END] [!END] COMMENT ------------------------------------------------- COMMENT The output would be: COMMENT 0 and 000 don't match ALPHABETICALLY. COMMENT 0 and 000 do match NUMERICALLY. COMMENT 9 and 0 don't math NUMERICALLY. COMMENT ------------------------------------------------- [!EQUAL,[!READ What's your name?,,],HBT] WRITE,,,,[!ASCII 12]You're HBT. [!ELSE] WRITE,,,,[!ASCII 12]You're not HBT. [!END] [!EQUAL,[!CLI],CLI16] WRITE,,,,[!ASCII 12]I was going to show you something else. WRITE,,,,Too bad you're using CLI16 which won't let READ take arguments. [!ELSE] STRING [!READ/LENGTH=1 Continue? (Y/N)] [!EQUAL,[!STRING],N] WRITE,,,,[!ASCII 12]Good man [!USERNAME]. [!ELSE] [!EQUAL,[!STRING],Y] WRITE,,,,[!ASCII 12]Too bad Mister I-Use-[!SYSTEM] [!ELSE] WRITE,,,,[!ASCII 12]Learn English guy. [!END] [!END] [!END] WRITE,,,,Thank you for using %0%. AOS/VS can also be programmed in 16 bit and 32 bit Assembly (and compiled using MASM), BASIC, Fortran, C, Pascal and probably others. This second program is actually quite simple. I do not even read the UPF type file directly; I just feed text into the PREDITOR (see the next section). COMMENT ------------------------------------------------- COMMENT Delete the little help screen if you are under COMMENT CLI16. Or just run CLI32. COMMENT ------------------------------------------------- [!EQUAL,%1%,] WRITE,,,,[!ASCII 12]Format is: %0%/A NAME WRITE,,,,,,,,,,,,or /L NAME [!ELSE] [!EQUAL,%1%,] WRITE,,,,,,,Which user exactly? [!ELSE] [!NEQUAL,%0/L%,] WRITE/L=?USER.TMP L WRITE/L=?USER.TMP %1% WRITE/L=?USER.TMP WRITE/L=?USER.TMP b PROC/DEF/IOC/IN=?USER.TMP/BLOCK PREDITOR DEL ?USER.TMP [!ELSE] WRITE/L=?USER.TMP c WRITE/L=?USER.TMP %1% WRITE/L=?USER.TMP y WRITE/L=?USER.TMP %1% WRITE/L=?USER.TMP n WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP WRITE/L=?USER.TMP b PROC/DEF/IOC/IN=?USER.TMP/BLOCK PREDITOR DEL ?USER.TMP [!END] [!END] [!END] SYSTEM SECURITY ~~~~~~~~~~~~~~ The AOS/VS login is performed in the following manner. Every username has a file associated with it in the :UPD directory. That file is its profile, and contains the account profile. Once the user has entered a correct username/password pair, the operating system loads the user's profile (which includes how much memory and disk space the user is allowed to use and the user's allowed privileges) into its internal tables. Several privileges which can be set are the initial user directory and initial program that will be executed upon completion of the login (eg, the CLI); how many processes the user may run; what process priorities the user has; and what SUPER privileges the user has (eg, SUPERUSER, SUPERPROCESS). As mentioned, if the user has SUPER privileges, he must activate them himself (using the right command, or PRIVILEGE if using CLI32). An important thing to know about password security is that if the system is running Data General's XODIAC networking software, user's might not be able to access remote machines through the network if the passwords are encrypted. Therefore, if you are on a XODIAC host, chances are the passwords won't be encrypted. The ACL of the :UPD directory doesn't let every user can access it, though. Passwords are changed by the user by pressing Ctrl-L immediately after entering the password at login. This will only work for users that have the privilege to set their own passwords. Legal passwords are 6 to 15 characters. This the format (the fields) of the AOS/VS profiles: * Password * Initial program To be executed after login * Initial IPC file The LOGON file * Initial directory * Default user priority The user's process priority * Maximum queue priority The highest queue priority which the user can set for a batch job. The lower the number, the higher the priority (1-255). * Unlimited son processes * Maximum son processes If the above option if off. * Disk quota in blocks * Logical address space Allows the user to control the size of the (batch) logical address space in which his programs will be executed. If -1, the system sets. * Minimum working set The minimum number of pages a user can have in (batch) their active processes. If -1, the system determines the value according to the program's demands. * Maximum working set (batch) * Logical address space (non batch) * Minimum working set (non batch) * Maximum working set (non batch) * Encrypt password * Superuser * Superprocess * Use IPC Allows the user to make IPC calls. * Use console * Use batch * Use virtual console Virtual consoles are created by networked logins. * Use modem A modem is a console with the characteristic of /MOD on. * Change password * Change priority * Change type * Change username Allows user to become another username without actually logging in into that user's profile. * Access devices Allows user to directly issue Assembly instructions to devices. * Create without block Allows the user to start a son process without blocking the father process. * System manager privileges * Access local devices remotely * Change addr. space type Allows 32 bit processes to be called from 16 bit processes (usually on, since there is a CLI16, but most programs are 32 bit). * Change working set limit Allows user to change the working set size of programs. * Comments User profiles can be created, deleted, read, and modified from the AOS/VS User Profile Editor: PREDITOR. PREDITOR gives you a prompt from which you can read any account and the values of its fields. PREDITOR does not, however, display the password field, whether it's encrypted or not -- just an indication of what the Encrypt Password field is set to. This is easily overcome, since if you can execute the PREDITOR, you can just as well SED the :UPD:USERNAME file and look at the password (it's right up there) -- PREDITOR can only be loaded by a user that can become Superuser. Legal commands for the PREDITOR are Create, Delete, Edit, List, Question, Rename, and Use. They can all be abbreviated to their first letter. When CREATE is called, it first asks if you want to set the password, and depending on the answer asks you to enter a password. It then queries about the other fields, giving you three options (usually): YES, NO, and NL, the system's default. DELETE just asks for a confirmation on deleting the user, and also his home directory. EDIT is just like CREATE, allowing you to modify any field in the user's profile (including the password). LIST lists the status of every field in the profile (by using a template profile, such as '+', one could view every user on the system). QUESTION sets the system defaults, which will later be used by CREATE and EDIT. RENAME allows you to rename a user to another name, and USE changes the value in the !DEFAULT variable (your username). Logins are handled by a program called EXEC (that's what the EXEC-32 x.xx.xx.xx part in the login message means). EXEC just reads the username/password and if correct, logs the user in. After EXEC has been completed, the Initial Program from the profile is run. The commands for logins are CONTROL @EXEC DISABLE and ENABLE. See "The 'EXEC' Program" for more information about EXEC. When using ENABLE, the console receives login capabilities; apart from actually logging in, EXEC will also display :UTIL:LOGON.BANNER.SCREEN. ENABLE ------ /ALL Gives all the consoles the said capabilities. /TRIES=x Sets maximum login tries to x. /STOP This will have the same result as if an operator issued CONTROL @EXEC DISABLE <console> after the maximum login tries was exceeded. /CONTINUE Lock console for 10 seconds and then continue. /FORCE Change the other parameters while the console is enabled. SYSTEM COMMANDS ~~~~~~~~~~~~~~ Every command has its own switches. However, all commands accept the /1, /2, /L and /Q switches (and /STR=string and /ESTR=string under /CLI32). /1=ERROR|ABORT|IGNORE|WARNING /2=WARNING|ERROR|ABORT|IGNORE Controls what the program will do under a class 1 or 2 error. The first option listed is the default. ERROR displays "Error: something" and stops command execution. ABORT aborts the command. IGNORE ignores the error, and WARNING displays "Warning: something" and continues with the command. /L=path The command will store all its output in 'path'. /Q Display output in columns with on space separating them (an exception to this switch is TYPE). /STR=string /ESTR=string The command will store its output in the 'string' string variable, which can be viewed later using the STRING command. If there is no output or the command is TYPE or COPY the string is set to null. /ESTR is for error output, /STR is for regular output. Some important AOS/VS commands are listed next. I included information about the DUMP and LOAD commands for information purposes only; as they require diskettes, I don't think you'll use them daily. However, I didn't go into diskette handling, etc in detail. Sorted alphabetically: ACL <path> ---------- ACL is a utility to control the ACL (Access Control List). An ACL is just what is sounds like: it includes a list of usernames and what kind of access they have to the file. ACL used one-letter access code, as follows. LETTER TYPE/FILE TYPE/DIR -----------+---------------------------------+------------------------ A(ppend) Append to a file. Create files in the directory or move files into it. E(xecute) Execute the program. Allows access to the directory (changing into it, reading, etc). O(wner) Allows the user to change the ACL or erase the file/dir. R(ead) Read a file. List the files in the directory. W(rite) Write to a file. Create, delete or change ACLs of files in the directory. The default ACL for any file is OWARE for the user. ACL <path> shows the ACL. To modify the ACL: ACL <path> [user,access] [...] Access being one of the OWARE group, for example: ACL PHRACK43 HBT,OWARE (There is NO space between 'username' and 'access'!) ACL PHRACK42 HBT,OWARE +,R (In this example, the '+' template was used, '+' standing for all the users. This means that HBT has full access to the file, while the rest of the users can only read it. If templates are used, they should be used last, with specific usernames before them.) Under CLI32 group access is also available in the format of: ACL <path> [user:group,access] [...] Switches: /[BEFORE|AFTER]/[TCR|TLA|TLM]=date and/or time /TYPE=type These function just like the same switches in FILESTATUS. /D Use the default settings (OWARE). Defaults may be changed using DEFCAL. /K Delete ACL - no one but a superuser will be able to access the file. /V Show each file changed. BROWSE ------ BROWSE is a program to browse (view, search, scroll in any direction) through any number of ASCII or binary files. While in BROWSE help is available by using 'H' or '?'. BROWSE starts at the end of file and lets you move backward (but you can change this). No further details are included since BROWSE can run only on CRT terminals (the actual terminals the employees usually sit at), and I didn't have the pleasure of using one of these (nor do I think will the information be of any use). CHARACTERISTICS --------------- CHARACTERISTICS displays or sets the characteristics of a device attached to a terminal (not a printer, for example). To change characteristics of a device permanently and not just for the current CLI level, you must be PID 2 (local console) or have SYSTEMMANAGER privilege on. To this, you must use EXEC first to DISABLE the device, use CHARACTERISTICS, and then use EXEC to ENABLE the device (see the section titled "The 'EXEC' Program"). The CHARACTERISTICS switch will be /DEFAULT/[default device characteristics] device. "device" for example, is @CON100. CHARACTERISTICS switches look like this: CHARACTERISTICS /[ON|OFF]/SWITCH. It's self explanatory. /8BT Interpret all 8 bits of an ASCII char as data. (For use with 8 bit character sets, of course.) /16B For Asian language translation. /4010I Device is a DG model 4010I terminal. /6012 Device is a DG model 6012 terminal. /605X Device is a DG DASHER model 6052, 6053, D210 or D211 terminal. /6130 Device is a DG DASHER model 6130, D410 or D460 terminal. /ACC Line requires modem access control (only users with the Use Modem privilege may login). /AUTOBAUD The system will automatically determine the terminal's baud (it's bps, damnit!) rate. /BAUD=b Sets a device's bps rate to b. b can be 45.5, 50, 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2400, 3600, 4800, 7200, 9600, 19200, 38400. /BREAK=[BMOB|CAOB|CBOB|CFOB|DCOB] How the system will respond to a BREAK: BMOB (default) Clears binary mode and restore normal character handling CAOB Issues Ctrl-C Ctrl-A CBOB Issues Ctrl-C Ctrl-B CFOB Issues Ctrl-C Ctrl-F DCOB Disconnect user /CALLOUT Allow host initiated calls (outside calls). /CHARLEN=[5|6|7|8] Character length in bits, *including* stop bit. /CONTYPE=connection type Connection types are: BITMAPPED Windowing terminal DIRECT Standard connection PAD From PAD hardware PBX From a PBX controller PCVT From a DG/PC*i controller TERMSERVER From terminal server hardware TELNET Through telnet VIRTUAL Through a virtual terminal /CPL=[8-255] The maximum number of characters per line. /CTD Disconnect line if the user doesn't respond to login after a while. /DEFAULT Displays the default characteristics of the terminal. /DKHW If OFF, and /16B and /8BT are on, enable support for Chinese characters. /EB0 Specify the echoing of control characters. /EB1 When both off, nothing is echoed. When EB0 is on and EB1 is off, echos ^char. When EB0 is off, and EB1 is on, echos exactly what was entered. /EOL Don't output a newline if the number of characters in input has exceeded the line length. /ESC Interpret an escape as a Ctrl-C Ctrl-A interrupt. /FF Output a formfeed when the device opens. /G1G0 Enables the G1G0 character set (Taiwanese characters). /16B and /8BT must also be ON. /HARDCOPY Device is a printing terminal. /HDPX Provide half duplex support for a modem line. /HIFC Use CTS/RTS input flow control, cannot be on if /HDPX or /MOD are on. /HOFC Use CTS/RTS output flow control. /IFC Enables XON/XOFF to control terminal input (the Ctrl-S/Ctrl-Q control characters). /LEVEL=x Sets characteristics to the same as those in CLI level #x. /LPP=[4-255] The number of lines per page. /MDUA Allows direct access to the modem on the line (/MOD must also be set). You can then use ?WRITE to send commands to the modem. See the section titled "CLI Macro Programming". /MOD Use modem interface on this line. /MRI Monitor line for rings. /NAS Device is non ANSI standard. /NLX Enable Asian natural language translation. /16B and /8BT must also be ON. /NRM Suppress messages (from SEND) not sent from PID 2 (something like "mesg n" in Unix). /OFC XON/XOFF output flow control. /OTT Convert characters sequence "~}" to an escape (use with VT100 emulation, or how will you escape). /P Sets the characteristics to be the same as those used on the previous CLI level. /PARITY=[ODD|EVEN|NONE] Default is NONE. /PM Enable page mode, which pauses output every LPP lines (as set with the /LPP switch, default is 24). Ctrl-Q resumes. /RESET Reset characteristics to the default value. /RTSCD Check carrier detect before processing RTS signals. /HDPX must be ON. /SFF Simulate formfeeds. /SMCD Ignore carrier detect on modem lines. /MOD and must be ON, and this must be set if /HPDX is ON. /ST Simulate a tab every 8 columns. /STOPBITS=[1|1.5|2] /TCC=[time to wait for a carrier detect signal after the modem connect] Default is 40000 ms. /TCD=[time to wait for a carrier detect signal to return after it drops] Default is 5000 ms. /TDW=[delay between modem connect and the first I/O] Default is 2000 ms. /THC=[the amount of time after disconnecting for the modem to settle] Default is 10000 ms. /TLT=[time to wait between sending the last char and dropping RTS] Default is 0 ms. /HPDX must be ON. /TO Enable timeouts. /UCO Convert lowercase input to uppercase when displaying it. /ULC Accept both uppercase and lowercase as input. /WRP Wrap on a long line. /XLT Enable VT100 terminal emulation. Knowledge is knowledge, but AT&T is something different. Here is how you'd open a modem line for calling out: (You must be SYSTEMMANAGER) CLEARDEVICE/RXON @CON999 CONTROL @EXEC DISABLE @CON999 CHARACTERISTICS/ON/MOD/MDUA/CTD/CALLOUT @CON999 CONTROL @EXEC ENABLE @CON999 ((And here's how you put it back)) CLEARDEVICE/RXON @CON999 CONTROL @EXEC DISABLE @CON999 CHARACTERISTICS/DEF @CON999 CONTROL @EXEC ENABLE @CON999 CLEARDEVICE <device> -------------------- You must be PID 2 (local console) or have SYSTEMMANAGER privileges turned on to use CLEARDEVICE on a terminal that isn't yours. <device> must be a terminal line (eg, @CON100). /RXON Simulates a XON character from the device. /SBREAK Sends a break character to the device.