UUCP (BNU) Configuration Files


About This Document
The "Systems" file
The "Permissions" file
The "Devices" File
Examples and Notes

About This Document

This document is an aid to understanding the UUCP (BNU) configuration files on your RISC System/6000. BNU (Basic Networking Utilities) is the AIX version of UUCP (UNIX-to-UNIX Copy Program). The terms "BNU" and "UUCP" are used interchangeably in this document. This document applies to AIX 3.1 and 3.2.

You can use the /usr/lib/uucp/uucpadm command to initially set up the files, and then edit them to suit your exact needs.

The following information describes the Systems, Permissions, Devices and Dialers files and the fields within them.

The "Systems" file

The /usr/lib/uucp/Systems file contains the primary information that is used by the "uucico" program (which will be described later in this guide) to connect to the various systems. Consider this file the "database" of systems to which your machine can connect. In this file you will find entries of the format:

system_name Call_time Device speed phone_no. "login_sequence" 
     |          |       |      |      |         | 
     |          |       |      |      ------------> "Chat script" 
     |          |       |      | 
     |          |       |      --> Bits per second 
     |          |       |          (for serial lines only) 
     |          |       | 
     |          |       ----> The name of a device found in the 
     |          |             BNU "Devices" file. 
     |          | 
     |          ----> The "Time of Day" that calls out may be tried 
     |                from your system to the system "system_name". 
     ----> The name that the remote system returns when the command 
           "uuname -l" is issued from a shell prompt. 

Note: The remote system will not be allowed access to your machine (and your machine will not be allowed access to the remote machine) if system_name does not match the output of uuname -l - this will be explained later.


This name is a "handle" that the BNU caller program (uucico) uses to associate the remote system to the dial-up and login information in your "Systems" file. When you read through a complete "Systems" file entry on your machine, you will see that it contains basically all the information you need to call a specific system and log in as a specific user. When uucico calls the remote system, it will actually log in (like any other user) into a specially set up account that will invoke as its login shell "uucico". When the remote system invokes "uucico" it will present its "uuname" to the calling host (your machine in this case). That "uuname" will need to match the name you gave the remote system in your "Systems" file. If they do not match, your system will say "WRONG MACHINE NAME" and the call will fail.


This field indicates when your machine can call out to the specified remote site. Normally (for testing), this entry will simply read "Any", which means "I can call this system 'Any' time of the day." Other valid entries are "Never", day of the week in the format "MoTuWeThFrSaSu", weekdays only (indicated by "Wk"), time of day (specified by 24 hour times ("1800" (6:00pm) or "0800" (8:00am)), and time of day specified by ranges such as 0600-1800. (Ranges of times such as this must be preceded by a day specification, such as "Any0600=1800" or "Mo0600-1800".) Read the IBM documentation for more specific usage information on this entry.


This is the name of a device that is listed in the BNU "Devices" file. Only seven significant characters will be used, and the named device must exist in the devices file. There are no other restrictions on the name. If you do not wish to use the devices file, "-" indicates a valid "NULL" device.


This is the connection speed for serial line communications. If you are using a direct-connect serial line (no modems, just one box connected serially to the other) or modem lines, this field is required. If you are using a "TCP" connection device type (a special "Devices" file type), this field should be a "-".

Chat script

The phone_no and login_sequence are the heart of all BNU Systems file entries. The UUCP "chat utility" is what allows your machine to log in to other systems and start a BNU connection without your intervention. This sequence is broken up into "send" and "expect" fields. For every send, there is a corresponding expect (until the last one). Basically it works like this: "I send", "the other end responds", "I send", "the other end responds", and so on, until I am logged in. Think about it as: "What would I type, and what would the modem and/or the remote system respond if I were going to log in to the remote system?" Normally this sequence starts with the phone number of the remote system (if the remote system is to be connected over a modem) and is then followed by the sequence used to log in to the remote system. The login sequence will look something like:

  in:--in: <username> word: <password> 

The login sequence usually begins: "in:--in:" which is the last three digits in the "login:" prompt separated by "--" which is used to signify, "If I do not get this within my default time-out period, send the characters between the "-"s plus a "carriage return" and then wait for "in:" again. In the following example, we wait for "in:" and if we do not see it, send "hello" and wait for "howdy:" in response:


(Of course, such a sequence would probably never be used, but the emphasis is what role the "-<string>-" sequence plays in the "expect" portion of the chat sequence.)

The next part of the chat sequence is usually the "username" of the remote site's uucp account. This can be any login account the remote system administrator wants to set up to do uucp, but the default program that it calls must be uucico. Some sites accomplish this by creating a normal user and making the first line of the user's .profile call uucico, but that is risky at best. The default directory of this user is usually /usr/spool/uucppublic, but it not a requirement.

The next part of the chat sequence is the expect "word:" which is the last five characters of the "password:" prompt. If the remote system were to say "Enter your secret code:" instead of prompting for the "password:", this entry would be "code:" in the chat sequence.

The last entry in the chat sequence is usually the actual password of the account you will be using for uucp on the remote system. This entry should result in a completed login and direct access to the uucico program. Some systems have two or more passwords per account, so you would simply add more 'expect - send' entries onto the chat sequence to account for the difference.

Note: For quickest setup, it is probably easiest to copy the existing sample entry in the "Systems" file and to replace the system name, phone number, and account specific information (login name and password) from this default entry.

The "Permissions" file

The /usr/lib/uucp/Permissions file is used to create security control over machines attempting to communicate with your machine. (There are limitations, but they are usually subject to common sense.) This file has two distinct entries, and each does a different job; they are not related to each other.

The "MACHINE=" Line

The first entry in the Permissions file is the "MACHINE=" entry. This entry is used to establish the base permissions for a given sitename. It will follow the format:

MACHINE=system_name REQUEST=yes READ=/ WRITE=/  COMMANDS=cmd:cmd 
          |              |       |       |               |    | 
          |              |       |       |        ------------- 
          |              |       |       |        | 
          |              |       |       |        v 
          |              |       |       | 
          |              |       |       |        The commands that the 
          |              |       |       |        remote uucico program 
          |              |       |       |        may execute on your 
          |              |       |       |        system. 
          |              |       |       | 
          |              |       |       --> The directories 
          |              |       |           (separated by ":"s) that 
          |              |       |           the remote system may write 
          |              |       |           to on your system. 
          |              |       | 
          |              |       --> The directories (separated by ":"s) 
          |              |           that the remote system may read on 
          |              |           your system. 
          |              | 
          |              --> A "yes/no" toggle that indicates whether the 
          |                  remote system may "REQUEST" that work files 
          |                  be transfered (REQUEST=yes) or if it must wait 
          |                  for your local system to initiate the request 
          |                  (REQUEST=no). 
          --> The names of systems (separated by ":"s) that will have the 
              same dial in/out parameters (as listed by the rest of that 
              line).  This name must match a name in the "Systems" file. 

  1. The "MACHINE=" field on this line indicates the remote systems that are allowed to access your machine. This entry must have a corresponding "system_name" listed in the /usr/lib/uucp/Systems file; otherwise it is just ignored. Several system names may be separated by ":"s on one entry (all systems entered this way will have the same permissions, as dictated by the rest of the entry's fields).
  2. The "REQUEST=" field on this line indicates whether or not the users from remote systems may initiate requests to perform BNU jobs on your system. If you indicate "yes" then you must also indicate "yes" in the "REQUEST=" field for the "LOGNAME=" entry in this file (this line will be discussed later). An answer of "yes" means that remote users may spool jobs for your system and may request that files be transfered to and from your system. For secure systems, it is usually recommended that "REQUEST=no" be used so that only your machine can initiate job requests.
  3. The "READ=" field on this line indicates the directories (separated by ":"s) (and their children) that the remote system may have "READ" access on your system. If you give the remote system access to "/" then it will be able to read ALL directories on your machine, subject only to the normal AIX/UNIX permissions. (NOTE: Giving the remote system READ access to "/" will allow it to READ only those directories that the "uucp" account can read.) If your intention is to restrict access to only the "uucppublic" directory and the "tmp" directory, your "READ=" field would look like this:
  4. The "WRITE=" field on this line indicates which directories (separated by ":"s) (and their children) that the remote system may "WRITE" to on your system. This works the same as the "READ=" field above but determines "WRITE" access instead.
  5. The "COMMANDS=" field on this line indicates the "COMMANDS" that the remote system may execute on your system (separated by ":"s). These commands can be the command name or the complete path to the command. This field also does not override normal file permissions to permit execution on your system. In order for the command to be executed, the uucp user account on your machine will need permission to allow execution.

The "LOGNAME=" Line

The other type of line in the Permissions file is used to establish the permissions for the login account that the remote system is using. Several of the fields for this line are the same as the "MACHINE=" fields of the same name. The primary difference is that these entries are specific to the login account that the remote system is using, where the "MACHINE=" fields are specific to the remote system's uuname. The "LOGNAME=" line has the format:

           |              |             |       |       | 
           |              |             |       ---------> Same as the MACHINE 
           |              |             |                  entry from this 
           |              |             |                  file. 
           |              |             | 
           |              |             --> Can be "yes" or "call" and is used 
           |              |                 to indicate when the local system 
           |              |                 is allowed to send files to the 
           |              |                 remote system. 
           |              | 
           |              --> Same as the MACHINE entry for this file. 
           --> The usernames (separated by ":"s) that remote systems will 
               use to login on your machine. 

  1. The "LOGNAME=" field on this line indicates the user names (separated by ":"s) that remote systems will use when logging into your machine. When a remote system logs into your machine, its username will be checked against the Permissions file for an entry that has "LOGNAME=" as the first characters on the line. After uucico checks the "LOGNAME=" line, the permissions for that remotely logged in system will be set to the the permissions defined on the rest of the "LOGNAME=" line.
  2. The "REQUEST=" field is exactly the same as the "MACHINE=" line entry of the same name, but it sets permissions based on the login name, as opposed to the system name.
  3. The "SENDFILES=" field is only used on the "LOGNAME=" line and can be set to either "yes" or "call". This field indicates when the local system may send files to a remote system. When the field is set to "yes", the local system may send files (and/or jobs) to the remote system when either system initiates the call. When the field is set to "call", the local system may only send files (and/or jobs) when the local system initiates the call. This means that with "SENDFILES=" set to "call", when the remote system calls you, you can only receive files from the remote system when it calls your system, but you can send and receive files from the remote system when you call the remote system.
  4. The "READ=" field is the same as the "MACHINE=" line entry of the same name, but it sets permissions based on the login name, as opposed to the system name.
  5. The "WRITE=" field is the same as the "MACHINE=" line entry of the same name, but it sets permissions based on the login name, as opposed to the system name.

The "Devices" File:

The /usr/lib/uucp/Devices file is used by several programs (including uucico) to determine which device on your system to use for a given connection attempt. The "cu" program uses entries in this file for "Direct" access to the tty port, serial line IP (SLIP) uses the Devices file for determining access to a tty for TCP/IP connections over serial line, and ECS (the IBMLINK connection facility) uses the Devices file to make modem connections to IBMLINK. As you can see, this file is very useful for many programs across the system. Its basic purpose is to define the device type, location, speed, and other basic communication parameters for the dial-out programs (it is only used for dial-out connections). In this file, you will see lines of the format:

device_name connection_port - speed dialer token 
      |           |         |  |     |     | 
      |           |         |  |     |     --> Determines whether the 
      |           |         |  |     |         "/usr/lib/uucp/Dialcodes" file 
      |           |         |  |     |         will be used with the phone 
      |           |         |  |     |         number string that is in the 
      |           |         |  |     |         "Systems" file.  Possible 
      |           |         |  |     |         entries are "\T" and "\D" 
      |           |         |  |     |         or blank (which defaults to 
      |           |         |  |     |         "\D"). 
      |           |         |  |     | 
      |           |         |  |     --> The name of the entry from the 
      |           |         |  |         "/usr/lib/uucp/Dialers" file to use. 
      |           |         |  |         Normally set to "hayes" for modern 
      |           |         |  |         modem use. 
      |           |         |  | 
      |           |         |  --> The speed of serial connections (in bits- 
      |           |         |      per-second).  Will be "-" if the connection 
      |           |         |      is through TCP and can be  "Any" if any 
      |           |         |      speed is supported by the communication 
      |           |         |      device. 
      |           |         | 
      |           |         --> Usually called "line2", this is the entry that 
      |           |             was used (in the "old" days) for the Automatic 
      |           |             Calling Unit (ACU).  The "old" style modems 
      |           |             could not dial the telephone, so they had an 
      |           |             ACU dial for them and then connect the phone 
      |           |             line to the "connection_port". 
      |           | 
      |           --> The physical port name of the outgoing connection.  This 
      |               will be "-" for a TCP connection but is usually the 
      |               tty name of the port with the modem attached. 
      --> The name you have chosen for the dial-out device.  For modems, a 
          semi-standard has evolved to call this "ACU", but you can call the 
          device by any name.  This name is the same one that you used in the 
          3rd field of the "Systems" file entry (called "Device_name" earlier 
          in this guide). 

  1. The "device_name" field is a user-specified name for the device you will be dialing out on. This name can be anything (except for a few reserved names) that you choose. By convention the name ACU is usually used for modem dial-out connections. The name ACU stands for "Automatic Calling Unit". An ACU device used to be required for auto-dialing the telephone numbers for modems. The device would be attached to a second line and would dial the phone for the modem and then attach the telephone line to the modem for communication with the remote modem/system. Reserved device names are: "Direct" and "TCP". These two device names are used for direct connect serial connections (hard-wired; no modems) and connections using TCP/IP over a network. The "cu" program uses the "Direct" device to determine whether a device is available for dialing out when a phone number or system is specified that is not listed in the Systems file. Serial Line Internet Protocol (SLIP) also uses the "Direct" device to make a connection through a serial port.
  2. The "connection_port" field is used to specify the physical device that the named UUCP device will use. Normally, for serial communication, this is a tty device such as tty2. If the "device_name" specified is "TCP", this field will be a "-" to indicate no physical tty will be used.
  3. The "-" field (or "line2") is not usually used for anything other than a place holder. This field was once used for indicating the tty that the auto-dialer was attached to. In most modern setups, the modem does the dialing itself so the auto-dialer is not needed.
  4. The "speed" field is used to indicate the speed in bits per second of a serial line connection. If the "device_name" is "TCP" this field will be "-". If you do not wish to limit the speed of this device to a specific speed, you can specify the speed for a given connection in the Systems file, and use the keyword "Any" in this field. This will allow the same device to be used for several different systems that need to connect at different speeds.
  5. The "dialer" field is used to indicate the type of "dialer" (as specified in the "/usr/lib/uucp/Dialers" file) that this device will normally use. Several "default" dialers are specified in the "Dialers" file. They are:
      hayes, penril, ventel, rixon, vadic, micom, TCP, and direct 

    Each "dialer" specifies a different command set to use when attempting to dial the modem. For the most part, you will only be interested in three dialers: h ayes, direct, and TCP. The "hayes" dialer is the standard command set used by most modems. If they have their own command set, they will usually also recognize the hayes "AT" command set. The "direct" dialer is really only a "dummy" dialer, in that it does not specify any command set (because it is used for connections that do not usually have a modem attached). The "TCP" dialer is effectively the same as the "direct" dialer, but it is a keyword that the TCP/IP UUCP connections look for when making a call.

  6. The "token" indicates whether the Devices file should send the phone number as it is listed in the Systems file or whether it should interpret the number through the /usr/lib/uucp/Dialcodes file first. A "\D" indicates that the number should be checked with the Dialcodes file first, and a "\T" indicates that the number should be passed straight through to the Dialers file without interpretation. The Dialcodes file is used to make standardized names for certain parts of a phone number. For example, if you made a lot of calls to a certain area code in San Francisco, you could create a Dialcodes entry that reads "SFO 9,1415", which would be used in the phone number dial-string like this: "SFO5551212" (instead of 9,14155551212). The "SFO" would be changed by the Dialcodes file for you. (Most people never use this feature of UUCP, but for safety's sake, you will usually want to make your "token" a "\D" - just in case.)

Examples and Notes

Sample Entries for the BNU Configuration Files


Correlation of Configuration Files

Systems file: 
            <System_name>  Any  ACU 9600  9,1512-555-1111 
Devices file:     _______________/ 
                ACU  tty0  -  Any      hayes   \D 
Dialers file:      ______________________/ 
               hayes   =, -, "" \dAt\r\c OK ATDT\T\r\c CONNECT....  

A Note on Bidirectional Ports

With bidirectional ports, when the remote port is set for "delay" or "getty -r" and the chat script expects key input, you may find that ports set for "delay" are expecting one or more carriage returns before proceeding with the login. If this is the case, try beginning the chat script on the dialing system with the following:

   ""\r\d\r\d\r\d\r in:--in: ... 

Interpreted, the above reads: expect nothing, send return, delay, return, delay, return, delay, return.

UUCP (BNU) Configuration Files: uucp.files.32.zap ITEM: FAX
Dated: 99/01/13~00:00 Category: zap
This HTML file was generated 99/06/24~12:42:09
Comments or suggestions? Contact us