Annotation of researchv10no/cmd/uucp/doc/admin/AppendixIV, revision 1.1.1.1

1.1       root        1: .H 1 Introduction
                      2: The Permissions file replaces the USERFILE for uucp.
                      3: It's purpose is to specify the permission that remote sites
                      4: have with respect to login, file access, and command
                      5: execution.
                      6: Options provide for restricting the ability to request files and
                      7: the ability to receive files queued by the local site.
                      8: In addition, an option is available to specify the commands that a
                      9: remote site can execute on the local system.
                     10: .P
                     11: The next section gives three Permissions' file entries.
                     12: Taken together, they provide all the entries needed by most
                     13: sites running the uucp system.
                     14: Section three gives the basics of the syntax and semantics of the
                     15: Permissions file.
                     16: The remainder of the documents gives a detailed explanation of the
                     17: options available, their uses, and setting up the default values.
                     18: .H 1 " Starting Examples"
                     19: The first example is the model of an entry for the public login on
                     20: your system;
                     21: it represents the most restrictive access to your system.
                     22: .HU "Example 1"
                     23: .sp
                     24: .nf
                     25:                LOGNAME=nuucp
                     26: .fi
                     27: .sp
                     28: It states that login "nuucp" has all the default permissions/restrictions:
                     29: .BL
                     30: .LI
                     31: The remote site can send files exclusively to the \fIuucp public\fR directory.
                     32: (usually /usr/spool/uucppublic)
                     33: .LI
                     34: The remote site can \fInot\fR request to receive any files.
                     35: .LI
                     36: \fINo\fR files that are queued for the remote site will be transferred
                     37: during the present session.
                     38: .LI
                     39: The only commands that can be executed are the defaults--usually
                     40: "rmail".
                     41: (See section 6 for details on how to set this default.)
                     42: .LE
                     43: .P
                     44: This entry alone is sufficient to start communications with remote sites,
                     45: permitting files to be transferred to the uucp public directory by request of
                     46: the remote site.
                     47: .HU "Example 2"
                     48: The next entry is for remote sites that log in, but have fewer restrictions.
                     49: The login and passwd corresponding to this entry should not be distributed
                     50: to the general public;
                     51: it is usually reserved for closely coupled systems where the Systems file
                     52: information can be tightly controlled.
                     53: .sp
                     54: .nf
                     55:                LOGNAME=uucpz REQUEST=yes SENDFILES=yes \\
                     56:                  READ=/  WRITE=/
                     57: .fi
                     58: .sp
                     59: This entry provides the following permissions
                     60: when a remote site logs in as "uucpz":
                     61: .BL
                     62: Files can be requested from the local site (REQUEST option).
                     63: .LI
                     64: Files can be transferred to any directory or any file
                     65: that is writable by user "other"--that is
                     66: a file/directory that is writable by a local user with
                     67: neither owner nor group permissions.
                     68: (Option WRITE controls this permission.)
                     69: .LI
                     70: Any files readable by user "other" can be requested.
                     71: (Option READ controls this permission.)
                     72: .LI
                     73: Any requests queued by the local site will be executed during
                     74: the conversation;
                     75: these are requests by local users that are destined for the
                     76: site that is calling in.
                     77: (SENDFILES option).
                     78: .LI
                     79: The commands sent for execution on the local system by the remote
                     80: must be in the default set ( usually "rmail").
                     81: .LE
                     82: .HU "Example 3"
                     83: Thus far, the examples showed entries that referred to remote sites
                     84: when they log in to the local system.
                     85: This example is an entry used when calling a remote site.
                     86: .sp
                     87: .nf
                     88:                MACHINE=mhtsa:mhtsb:mhtsc:pwbcc \\
                     89:                  REQUEST=yes READ=/ WRITE=/
                     90: .fi
                     91: .sp
                     92: When calling any of the systems given in the MACHINE list,
                     93: the following permissions prevail:
                     94: .BL
                     95: .LI
                     96: The remote site can both request and send files (REQUEST option).
                     97: .LI
                     98: The source or destination of the files on the local system can
                     99: be anywhere in the file system.
                    100: .LI
                    101: The only commands that will be executed for the remote site
                    102: are those in the default list.
                    103: .LE
                    104: .P
                    105: Any site that is called that does not have its name in a MACHINE
                    106: entry will have the default permissions as stated in "example 1"
                    107: with the exception that files queued for that site will be sent (the SENDFILES
                    108: option only has meaning in a LOGNAME entry).
                    109: .P
                    110: It is possible to put these
                    111: three examples together to form a Permissions file that
                    112: can be used by a system with a public login for remote sites
                    113: and several closely coupled machines.
                    114: .H 1 Basics
                    115: Each \fIentry\fR is a logical line;
                    116: physical lines are terminated with a "\\" to indicate continuation.
                    117: Entries are made up of "white space" delimited \fIoptions\fR.
                    118: Each option is a name/value pair;
                    119: these are constructed by an option name followed by a "=" followed by
                    120: the value.
                    121: Note that \fIno\fR white space is allowed within an option assignment.
                    122: .P
                    123: Comment lines begin with '#';
                    124: they occupy the entire line up to a newline character.
                    125: Blank lines are ignored (even within multi line entries).
                    126: .P
                    127: There are two types of entries:
                    128: .BL
                    129: .LI
                    130: LOGNAME entries specify permissions for remote sites
                    131: when they log in to the local machine.
                    132: .LI
                    133: MACHINE entries
                    134: specify permissions for sites that the local machine call.
                    135: .LE
                    136: .P
                    137: LOGNAME entries will contain a LOGNAME option.
                    138: MACHINE entries will contain a MACHINE option.
                    139: .H 1 "Some Rules"
                    140: \fIRULE\fR:--All login ids used by remote sites to login for uucp
                    141: \fImust\fR appear in one and only one LOGNAME entry.
                    142: .P
                    143: \fIRULE\fR:--Any site that is called whose name
                    144: \fIdoes not\fR appear in a
                    145: MACHINE entry in the Permissions file will have the following
                    146: default permissions/restrictions:
                    147: .BL
                    148: .LI
                    149: Local send and receive requests will be executed.
                    150: .LI
                    151: The remote can send files to the system's public uucp directory.
                    152: .LI
                    153: The commands sent by the remote for execution on the local machine
                    154: must be in the default set--usually "rmail" and "rnews".
                    155: .LE
                    156: .H 1 "Options"
                    157: This section give the details of each option, specifying how they are
                    158: used and their default values.
                    159: .HU "MACHINE"
                    160: The MACHINE entry specifies the permissions that take effect when
                    161: a remote site is called.
                    162: .sp
                    163: .nf
                    164:                MACHINE=mhtsa
                    165: .fi
                    166: .sp
                    167: is the start of an entry that will specify the permissions associated
                    168: with machine "mhtsa".
                    169: The MACHINE option can contain a list of different system names,
                    170: each separated by a ":".
                    171: For example,
                    172: .sp
                    173: .nf
                    174:                MACHINE=mhtsa:mhtsb:mhtsc
                    175: .fi
                    176: .sp
                    177: .HU "LOGNAME"
                    178: The LOGNAME option specifies a list of login ids of remote sites
                    179: that are able to log into the local system.
                    180: The option contains one or more names separated by a ":".
                    181: For example,
                    182: .sp
                    183: .nf
                    184:                LOGNAME=nuucp
                    185: .sp
                    186: .or
                    187:                LOGNAME=uucpz:uucyz
                    188: .fi
                    189: .sp
                    190: Names that appear in LOGNAME options can appear in only one such option.
                    191: .HU "REQUEST"
                    192: The REQUEST option can appear in either a LOGNAME entry or a MACHINE entry
                    193: and specifies whether the remote can make requests to receive local
                    194: files.
                    195: .sp
                    196: .nf
                    197:                REQUEST=yes
                    198: .fi
                    199: .sp
                    200: specifies that the remote \fIcan\fR request files.
                    201: .sp
                    202: .nf
                    203:                REQUEST=no
                    204: .fi
                    205: .sp
                    206: specifies that the remote \fIcan not\fR request files.
                    207: The latter is the default--it will be used if the REQUEST
                    208: option is not specified.
                    209: .HU "SENDFILES"
                    210: SENDFILES specifies whether the \fIcalled\fR site will execute locally
                    211: queued requests during the conversation.
                    212: The default is that locally queued
                    213: requests will not be executed during the call;
                    214: they will be done only when the remote is \fIcalled\fR by the local system.
                    215: (I don't care who you say you are, I'll send you queued files when
                    216: I call you.)
                    217: .P
                    218: Clearly, this option is only significant in LOGNAME entries, since
                    219: MACHINE entries apply when calls are made out to remote sites.
                    220: In fact, the option is ignored when a MACHINE entry is being used.
                    221: .sp
                    222: .nf
                    223:                SENDFILES=yes
                    224: .fi
                    225: .sp
                    226: specifies that the locally queued requests will be executed when
                    227: the remote site logs in as one of the names in this entry's
                    228: LOGNAME option.
                    229: .P
                    230: The default setting for the SENDFILE option is
                    231: .sp
                    232: .nf
                    233:                SENDFILES=call
                    234: .fi
                    235: .sp
                    236: meaning that queued files will be sent only when I call you.
                    237: This option can be specified for documentation purposes.
                    238: .HU "READ and WRITE"
                    239: The default for both the READ and WRITE options
                    240: is the uucp public directory.
                    241: The options
                    242: .sp
                    243: .nf
                    244:                READ=/usr/spool/uucppublic \\
                    245:                WRITE=/usr/spool/uucppublic
                    246: .fi
                    247: .sp
                    248: are the defaults and may be specified for documentation purposes.
                    249: The options
                    250: .sp
                    251: .nf
                    252:                READ=/ WRITE=/
                    253: .fi
                    254: .sp
                    255: specify permission to access any file that can be accessed by a local
                    256: user with "other" permissions.
                    257: .P
                    258: The value of these entries is a colon separated list of path
                    259: names.
                    260: The READ option is for requesting files and the WRITE option for
                    261: depositing files.
                    262: One of the values must be the prefix
                    263: of any full path name of a file coming in or going out.
                    264: .P
                    265: To grant permission to deposit files in /usr/news
                    266: as well as the public directory, specify
                    267: .sp
                    268: .nf
                    269:                WRITE=/usr/spool/uucppublic:/usr/news
                    270: .fi
                    271: .sp
                    272: in the entry.
                    273: .P
                    274: \fIRULE\fR:--If the READ or WRITE option is specified, all the
                    275: path names must be specified;  these do not add to the default
                    276: list.
                    277: .HU "NOREAD and NOWRITE"
                    278: There are two other options in the file access class,
                    279: NOREAD and NOWRITE.
                    280: These will rarely be used;
                    281: they specify exceptions to the READ and WRITE options or defaults.
                    282: .sp
                    283: .nf
                    284:                READ=/ NOREAD=/etc \\
                    285:                WRITE=/usr/spool/uucppublic
                    286: .fi
                    287: .sp
                    288: This example would permit reading any file except those in the /etc
                    289: directory (and its sub directories--remember these are prefixes)
                    290: and writing only to the default /usr/spool/uucppublic directory.
                    291: NOWRITE works the same way for sending files to the local system.
                    292: .HU  "CALLBACK - Is That Really You?"
                    293: The CALLBACK option is used in LOGNAME entries to specify that
                    294: no transaction will take place, but the calling system,
                    295: as established during handshake, will be called back.
                    296: .sp
                    297: .nf
                    298:                CALLBACK=yes
                    299: .fi
                    300: .sp
                    301: specifies this action.
                    302: The default is
                    303: .sp
                    304: .nf
                    305:                CALLBACK=no
                    306: .fi
                    307: .sp
                    308: The CALLBACK option will rarely be used.
                    309: (Note that if two sites have this option set for each other, a conversation
                    310: will never get started.)
                    311: .HU "COMMANDS"
                    312: WARNING!!
                    313: \fI
                    314: The COMMANDS option can be hazardous to the security
                    315: of your system.
                    316: Use it with extreme care.
                    317: \fR
                    318: The VALIDATE option should be used in conjunction with the
                    319: COMMANDS option whenever potentially dangerous commands
                    320: like "cat" and "uucp" are specified.
                    321: Any command that reads or writes files is potentially
                    322: dangerous to local security when executed by the uucp
                    323: remote execution demon (uuxqt).
                    324: .P
                    325: The \fIuux\fR program will generate remote execution requests and queue
                    326: them to be transferred to the remote site.
                    327: Files and a command are sent to the target site.
                    328: The COMMANDS option can be used
                    329: in MACHINE entries to specify the commands that a remote
                    330: machine can execute.
                    331: .sp
                    332: .nf
                    333:                COMMANDS=rmail:rnews
                    334: .fi
                    335: .sp
                    336: This line indicates the commands that can be executed by the
                    337: remote machine are either rmail or rnews exclusively.
                    338: (The default list is specified in the "parms.h" header file
                    339: during installation of uucp.
                    340: The defaults settings will be discussed later.)
                    341: The entry
                    342: .sp
                    343: .nf
                    344:                MACHINE=owl:raven:hawk:dove \\
                    345:                  COMMANDS=rmail:rnews:lp
                    346: .fi
                    347: .sp
                    348: overrides the  COMMAND default such that the command list
                    349: for machines owl, raven, hawk, and dove now consists of
                    350: "rmail", "rnews" and "lp".
                    351: .HU "VALIDATE"
                    352: \fIRULE\fR:--If you don't trust a caller's identity, don't let that system
                    353: execute dangerous commands.
                    354: .sp
                    355: \fICOROLLARY\fR:--If you can't trust a site, don't give it
                    356: a privileged login and passwd.
                    357: .sp
                    358: \fBWARNING!\fR
                    359: Giving a site a special login, with file access and remote execution
                    360: capability, is like giving anyone on that system a normal login.
                    361: .P
                    362: Use the VALIDATE option in connection with the COMMANDS option
                    363: when specifying dangerous commands.
                    364: It is used in LOGNAME entries to provide \fIsome\fR verification
                    365: of the caller's identity.
                    366: However, an important aspect of this validation is that the
                    367: login/passwd associated with this entry be protected.
                    368: If an outsider gets that information, the validation is not valid!
                    369: .P
                    370: Now that the warnings are out of the way, here is an example:
                    371: .sp
                    372: .nf
                    373:                LOGNAME=uucpfriend VALIDATE=eagle:owl:hawk
                    374: .fi
                    375: .sp
                    376: This entry specifies that if a remote logs in and says that it is
                    377: any of the specified birds, it must have logged in as "uucpfriend".
                    378: As can be seen, if an outsider gets the uucpfriend login/passwd,
                    379: masquerading is trivial.
                    380: .P
                    381: But what does this have to do with the COMMANDS option,
                    382: which only appears in MACHINE entries?
                    383: A short answer is that it connects the MACHINE entry that has the
                    384: COMMANDS option with a protected login entry that appears in
                    385: a LOGNAME option.
                    386: This connection is needed because the execution demon is not
                    387: running while the remote is logged in;
                    388: it is in fact, an asynchronous process with no knowledge of
                    389: what system sent the execution requests.
                    390: .P
                    391: Therefore, the real question is, how does the local site know who put the
                    392: execution files (X. files created by the uux command on the remote site)?
                    393: .P
                    394: Each remote site has its own "spool" directory, with write permission
                    395: only given to the uucp programs.
                    396: The execution files from the remote site are put in its spool directory.
                    397: Therefore, when the "uuxqt" demon program runs, it can use the
                    398: spool directory name to find the MACHINE entry in the Permissions
                    399: file and get the COMMANDS list, or if the machine name does not
                    400: appear in the Permissions file, the default list will be used.
                    401: Example
                    402: .sp
                    403: .nf
                    404:                MACHINE=mhtsa:mhtsb:mhtsc   REQUEST=yes \\
                    405:                COMMANDS=ALL \\
                    406:                READ=/  WRITE=/
                    407: 
                    408:                LOGNAME=uucpz   VALIDATE=mhtsa:mhtsb:mhtsc \\
                    409:                REQUEST=yes   SENDFILES=yes \\
                    410:                READ=/  WRITE=/
                    411: .fi
                    412: .sp
                    413: provides unlimited read, write, and command execution.
                    414: The ALL value in the commands option means that any command
                    415: can be executed!
                    416: \fBWARNING\fR:
                    417: Using the ALL value gives the remote site unlimited access to your
                    418: system.
                    419: In fact, files that are only readable or writable by user "uucp"
                    420: (like Systems)
                    421: can be accessed using commands like "ed".
                    422: .P
                    423: The assumption you make by the first entry above is that when you
                    424: call mhtsa, mhtsb or mhtsc, you really know who you are talking to.
                    425: Therefore, any files put into one of the "mhtsa", "mhtsb", or "mhtsc"
                    426: spool directories is put there by one of those sites.
                    427: If a remote site logs in and says they are one of these three systems,
                    428: their execution files will also be put in the privileged spool
                    429: directory.
                    430: You therefore have to validate that the site has the privileged
                    431: login "uucpz".
                    432: .HU "COMMANDS revisited"
                    433: The COMMANDS option specifies a list of commands that can be
                    434: executed by remote machines.
                    435: In addition to the names as specified above, they can be full path
                    436: names of commands, for example
                    437: .sp
                    438: .nf
                    439:                COMMANDS=rmail:/usr/lbin/rnews:/usr/local/lp
                    440: .fi
                    441: .sp
                    442: specifies that command "rmail" uses the default path,
                    443: which is set up at uucp installation time--specified in the
                    444: parms.h file.
                    445: When the remote site specifies rnews or /usr/lbin/rnews for the
                    446: command to be executed, /usr/lbin/rnews will be executed
                    447: regardless of the default path.
                    448: Likewise, /usr/local/lp is the lp command that will be executed.
                    449: .P
                    450: Including the "ALL" value in the list means that any command from the
                    451: remote machine(s) specified in the entry will be executed.
                    452: If you use this value, you give the remote machine full access
                    453: to you machine!
                    454: .sp
                    455: .nf
                    456:                COMMANDS=/usr/lbin/rnews:ALL:/usr/local/lp
                    457: .fi
                    458: .sp
                    459: This example illustrates two points.
                    460: The ALL value can appear anywhere in the string.
                    461: And, the path names specified for rnew and lp will be used
                    462: if the requested command does not contain the full path names
                    463: for rnews or lp.
                    464: .H 1 "Who Am I?"
                    465: When a remote calls, the called system responds with the local system
                    466: name;
                    467: this communicated in the \fIShere\fR message.
                    468: There are some situations when a system may want to say it is someone else.
                    469: First, for testing, this permits a system to call itself.
                    470: Also, a series of systems can be made to look like one to the outside world,
                    471: while retaining unique identities within a local network.
                    472: .sp
                    473: .nf
                    474:                LOGNAME=uucptest   MYNAME=testing
                    475: .fi
                    476: .sp
                    477: The local system will report its name as \fItesting\fR whenever
                    478: a remote logs in as uucptest.
                    479: .P
                    480: This facility can also be used when calling out:
                    481: .sp
                    482: .nf
                    483:                MACHINE=testmach   MYNAME=atest
                    484: .fi
                    485: .sp
                    486: Tells the machine, \fItestmach\fR, that machine \fIatest\fR is calling.
                    487: .H 1 "Public Directory"
                    488: The public directory, \fI/usr/spool/uucppublic\fR, provides a tree
                    489: for public access (by default, receiving files from sites.)
                    490: One may want to have different public directories based on
                    491: login ids.
                    492: .sp
                    493: .nf
                    494:                LOGNAME=loginA   PUBDIR=/usr/spool/uucppublic/loginA
                    495: 
                    496:                LOGNAME=loginB   PUBDIR=/usr/spool/uucppublic/loginB
                    497: .fi
                    498: .sp
                    499: This can also be specified when remote machines are called:
                    500: .sp
                    501: .nf
                    502:                MACHINE=machineA   PUBDIR=/usr/spool/uucppublic/machineA
                    503: 
                    504:                MACHINE=machineB   PUBDIR=/usr/spool/uucppublic/machineB
                    505: .fi
                    506: .sp
                    507: .H 1 "Default Settings"
                    508: The parms.h header file contains some default settings that affect
                    509: the Permissions file processing.
                    510: The PATH manifest defines the PATH environment variable that will be
                    511: set when remote commands are executed.
                    512: A typical line is
                    513: .sp
                    514: .nf
                    515:        #define PATH    "PATH=/bin:/usr/bin:/usr/lbin " /* */
                    516: .fi
                    517: .sp
                    518: The default list of commands is defined by
                    519: .sp
                    520: .nf
                    521:        #define DEFAULTCMDS     "rmail"
                    522: .fi
                    523: .sp
                    524: Another example is
                    525: .sp
                    526: .nf
                    527:        #define DEFAULTCMDS     "rmail:rnews:xp:lp"
                    528: .fi
                    529: .sp
                    530: These take effect if no COMMANDS option is specified for the
                    531: machine that sent the remote execution.
                    532: .H 1 "MACHINE Entry For Other Systems"
                    533: An administrator may want to specify different option values for
                    534: the machines it calls that are not mentioned in specific MACHINE
                    535: entries.
                    536: This may occur when there are many machines calling in, and the command
                    537: set changes from time to time.
                    538: For these cases, it is not convenient to change the DEFAULTCMDS
                    539: as it would require a recompile.
                    540: The name "OTHER" for the machine name is used for this entry.
                    541: .sp
                    542: .nf
                    543:                MACHINE=OTHER  \\
                    544:                COMMANDS=rmail:rnews:/usr/lbin/Photo:/usr/lbin/xp
                    545: .fi
                    546: .sp
                    547: All other options available for the MACHINE entry may also be set
                    548: for the machines that are not mentioned in other MACHINE entries.
                    549: .H 1 "Combining MACHINE and LOGNAME Entries"
                    550: It is possible to combine MACHINE and LOGNAME entries into a single entry
                    551: where the common options are the same.
                    552: For example, these two entries
                    553: .sp
                    554: .nf
                    555:                MACHINE=mhtsa:mhtsb:mhtsc REQUEST=yes \\
                    556:                  READ=/  WRITE=/
                    557: 
                    558:                LOGNAME=uucpz REQUEST=yes SENDFILES=yes \\
                    559:                  READ=/  WRITE=/
                    560: .fi
                    561: .sp
                    562: share the REQUEST, READ, and WRITE options.
                    563: They can be merged into one entry
                    564: .sp
                    565: .nf
                    566:                MACHINE=mhtsa:mhtsb:mhtsc REQUEST=yes \\
                    567:                LOGNAME=uucpz SENDFILES=yes \\
                    568:                  READ=/  WRITE=/
                    569: .fi
                    570: .sp
                    571: that will take the place of the two entries.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.