|
|
1.1 root 1: .\" Copyright (c) 1986 Regents of the University of California.
2: .\" All rights reserved. The Berkeley software License Agreement
3: .\" specifies the terms and conditions for redistribution.
4: .\"
5: .\" @(#)implement.ms 6.4 (Berkeley) 8/27/86
6: .\"
7: .ds UU UUCP
8: .ds Uu U\s-2UCP\s+2
9: .ds uu \s-2UUCP\s+2
10: .TL
11: Installation and Operation of \*(UU
12: .br
13: 4.3BSD Edition
14: .AU
15: D. A. Nowitz
16: .AI
17: AT&T Bell Laboratories
18: Murray Hill, New Jersey 07974
19: .AU
20: Carl S. Gutekunst
21: .AI
22: Communications Software Research and Development
23: Pyramid Technology Corporation
24: Mountain View, California 94039
25: .AB
26: \*(Uu is a series of programs designed to permit communication
27: between
28: .UX
29: systems using a variety of communications links.
30: \*(Uu provides batched, error free file transfers and remote command
31: execution.
32: It is well suited for tasks such as electronic mail, public news networks,
33: and software distribution, particularly when only slow,
34: low-cost communication links are available (e.g., 1200 baud dial-up).
35: .PP
36: This document describes the 4.3BSD version of \*(Uu.
37: This is a distant but direct descendent of the ``second implementation''
38: of \*(Uu developed by D. A. Nowitz at AT&T Bell Laboratories.
39: A number of other \*(Uu versions are in common usage; these are discussed
40: only to the extent that they affect administration of 4.3BSD systems.
41: .LP
42: Revised August 24, 1986
43: .AE
44: .LP
45: .OH 'Installation and Operation of UUCP''SMM:9-%'
46: .EH 'SMM:9-%''Installation and Operation of UUCP'
47: .ne 5
48: .NH
49: \*(UU OVERVIEW
50: .PP
51: \*(Uu is a batch-type operation.
52: Users issue commands that are queued in a spool directory for processing
53: by background daemons.
54: .LP
55: \fIUucp\fP (UNIX-to-UNIX Copy) and \fIuux\fP (UNIX-to-UNIX Execution)
56: provide the user interface to \*(Uu.
57: .I Uucp
58: has syntax and semantics similar to the standard
59: .UX
60: utility \fIcp\fP(1), with the added ability to prefix filenames with
61: system names.
62: Similarly, \fIuux\fP mimics the conventions of \fIsh\fP(1), and allows
63: commands to be prefixed with system names.
64: .LP
65: \fIUucico\fP (Copy-In, Copy-Out) is the primary \*(Uu daemon.
66: It processes the requests queued by \fIuucp\fP and \fIuux\fP,
67: initiates calls to remote systems, transfers files, and forks other
68: daemons to execute \fIuux\fP-requested commands.
69: \fIUucico\fP also acts as the \*(Uu ``shell'' when remote systems call in
70: to requests transfers.
71: .LP
72: Three types of files are used in \*(Uu operation.
73: \fIControl files\fP describe the \*(Uu environment, including
74: known remote hosts, available devices, and remote file access permissions.
75: Control files are relatively static; they are generally changed only by the
76: system administrator.
77: \fISpool files\fP (also called \fIQueue files\fP) contain transfer requests
78: and data; they are created and deleted as necessary
79: by \fIuucp\fP, \fIuux\fP, and \fIuucico\fP.
80: \fILog files\fP accumulate a history of \*(Uu activity; these tend to
81: grow forever if not periodically cleaned up.
82: .LP
83: Spool files are further divided into three types:
84: \fIWork files\fP
85: contain directions for file transfers between systems.
86: Every invocation of \fIuucp\fP or \fIuux\fP creates one or more work files.
87: \fIData files\fP contain data for transfer to or from remote systems.
88: \fIExecution files\fP contain directions for
89: .UX
90: command executions which
91: involve the resources of one or more systems.
92: Execution files are created only by \fIuux\fP.
93: .\"===========================================================================
94: .\" SECTION 2: USER UTILITIES
95: .\"===========================================================================
96: .ne 5
97: .NH
98: USER UTILITIES
99: .PP
100: \*(Uu includes a total of ten ``primary'' utilities, that is, ten
101: utilities for general users.
102: All reside in the \fB/usr/bin\fP directory, where they are easily accessible.
103: This section provides detailed implementation descriptions for the more
104: important commands; see the corresponding \fIman\fP pages for additional
105: information.
106: .LP
107: The following two commands queue transfer requests:
108: .RS
109: .IP uucp(1C) 15
110: UNIX-to-UNIX File Copy.
111: One of more \fIcontrol files\fP are created, containing names of files to be
112: transferred.
113: When necessary, local files are copied into \fIdata files\fP for
114: transmission.
115: .IP uux(1C)
116: Execute command.
117: An \fIexecute file\fP is created, containing a
118: .UX
119: command to be executed and its arguments.
120: A \fIcontrol file\fP is created that includes all files that must be
121: transferred to execute the command, including the \fIexecute file\fP itself.
122: When necessary, local files are copied into \fIdata files\fP for
123: transmission.
124: Any output from the command will also be written to \fIdata files\fP.
125: .RE
126: .LP
127: The following four commands provide \*(Uu status information:
128: .RS
129: .IP uulog(1C) 15
130: Display selected information from the \*(Uu log.
131: .IP uuname(1C)
132: Display the names of all remote hosts that are directly accessible via \*(Uu.
133: .IP uusnap(8C)
134: Provide a snapshot of the current queue, including
135: the number of work files, data files, and execute files for each site.
136: .IP uuq(1C)
137: A variant of \fIuusnap\fP, lists files and \fIuux\fP commands
138: queued for each site.
139: \fIUuq\fP also permits the \*(Uu administrator to delete jobs.
140: .RE
141: .LP
142: The following four commands provide miscellaneous support services:
143: .RS
144: .IP uudecode(1C) 15
145: The decoder for files created by \fIuuencode\fP, below.
146: .IP uuencode(1C)
147: A filter to convert binary files into printable ASCII.
148: This is useful when transferring object files over communications links
149: that do not support 8-bit transfers.
150: .IP uupoll(8C)
151: A user utility to conveniently fork the \*(Uu daemon, \fIuucico\fP.
152: .IP uusend(1C)
153: A utility to send files to remote sites more than one ``hop'' distant.
154: .RE
155: .\"===========================================================================
156: .NH 2
157: Uucp - UNIX to UNIX File Copy
158: .LP
159: The \fIuucp\fP
160: command is the user's primary interface with the system.
161: The
162: .I uucp
163: command was designed to look like
164: .I cp
165: to the user.
166: The syntax is
167: .IP
168: .I uucp\ \
169: .B [
170: option
171: .B ]
172: \ ...\ \ source\ ...\ \ destination
173: .LP
174: where the source and destination
175: may contain the prefix \fIsystem-name\fP\fB!\fP
176: which indicates the system on which the file
177: or files reside
178: or where they will be copied.
179: .LP
180: The options interpreted by
181: .I uucp
182: are:
183: .RS
184: .IP \-f 10
185: Don't make directories when copying the file.
186: The default is to make the necessary directories.
187: .IP \-C
188: Copy source files to the spool directory.
189: The default is to use the specified source when the actual
190: transfer takes place.
191: .IP \-g\fIgrade\fR
192: Put
193: .I grade
194: in as the grade in the name of the work file.
195: This is a single character in the range \fB[0-9][A-Z][a-z]\fP.
196: The \fIgrade\fP will be used by \fIuucico\fP to establish the
197: priority of requests.
198: \fB0\fP is the highest (best) grade; \fBz\fP is the lowest (worst).
199: The default
200: .I grade
201: for
202: .I uucp
203: is \fBn\fP.
204: .IP \-m
205: Send mail on completion of the work.
206: .IP \-n\fIuser\fR
207: Notify \fIuser\fR on the destination system that a file was sent.
208: .LP
209: The following options are used primarily for debugging, or when
210: .I uucp
211: is invoked from other programs:
212: .IP \-r 10
213: Queue the job but do not start \fIuucico\fP.
214: The assumption is that \fIuucico\fP will be started at a later time, perhaps
215: by \fIcron\fP(8) or \fIuupoll\fP.
216: .IP \-s\fIdir\fR
217: Use directory
218: .I dir
219: for the top level spool directory.
220: .IP \-x\fInum\fR
221: .I Num
222: is the level of debugging output desired.
223: This option requires the user to have read permission to the \*(Uu
224: control file \fIL.sys\fP.
225: .RE
226: .LP
227: The destination may be a directory name,
228: in which case the file name is taken from the last part of the
229: source's name.
230: The source
231: name may contain special shell characters
232: such as ``\fB?*[]\fR'';
233: these and other shell characters such as ``\fB!<>\fP'' will need to be quoted
234: or escaped.
235: If a source argument has a
236: \fIsystem-name\fP\fB!\fP
237: prefix for a remote system,
238: the file name expansion will be done on the remote system.
239: .LP
240: The command
241: .IP "" 12
242: uucp\ \ *.c\ \ usg!/usr/dan
243: .LP
244: will set up the transfer of all files whose names end with ``.c''
245: to the ``/usr/dan'' directory on the ``usg'' machine.
246: .LP
247: The source and/or destination names may also contain a \fB~\fP\fIuser\fP
248: prefix.
249: This translates to the login directory on
250: the specified system.
251: A lone \fB~\fP prefix is expanded to the name of the specified system's
252: public access directory, usually
253: \fB/usr/spool/uucppublic\fP.
254: For names with partial path-names,
255: the current directory is prepended to the file name.
256: File names with
257: .I ../
258: are not permitted.
259: .LP
260: The command
261: .IP "" 12
262: uucp\ \ usg!~dan/*.h\ \ ~dan
263: .LP
264: will set up the transfer of files whose names end with ``.h''
265: in dan's login
266: directory on system ``usg'' to dan's local
267: login directory.
268: .LP
269: For each source file,
270: the program will check the source and destination
271: file-names
272: and the system-part of each to
273: classify the work into one of five types:
274: .RS
275: .IP [1]
276: Copy source to destination on local system.
277: .IP [2]
278: Receive files from a remote system.
279: .IP [3]
280: Send files to a remote system.
281: .IP [4]
282: Send files from remote system
283: to another remote system.
284: .IP [5]
285: Receive files from remote system when the source pathname
286: contains special shell characters as
287: mentioned above.
288: .RE
289: .LP
290: After the work has been set up in the spool directories,
291: the \*(Uu daemon \fIuucico\fP is started to try to contact the other
292: machine to execute the work (unless the \-r option
293: was specified).
294: .SH
295: Type 1
296: .LP
297: .I Uucp
298: makes a copy of the file.
299: The
300: .I \-m
301: option is not honored in this case.
302: .SH
303: Type 2
304: .LP
305: A one line
306: .I "work file"
307: is created for each file requested and put in the \fBC.\fP spool directory
308: with the following fields, each separated by a blank.
309: (All
310: .I "work files"
311: and
312: .I "execute files"
313: use a blank as the field separator.)
314: .RS
315: .IP [1]
316: R
317: .IP [2]
318: The full path-name of the source or a ~user/path-name.
319: The
320: .I ~user
321: part will be expanded on the remote system.
322: .IP [3]
323: The full path-name of the local destination file.
324: If the
325: .I ~user
326: notation is used, it will be immediately
327: expanded to be the login directory for the user.
328: .IP [4]
329: The user's login name.
330: .IP [5]
331: A `\-' followed by an option list.
332: .RE
333: .KS
334: .SH
335: Type 3
336: .LP
337: For each source file, a
338: .I "work file"
339: is created.
340: A \fB\-C\fP option on the
341: .I uucp
342: command will cause the
343: .I "data file"
344: to be copied into the spool directory
345: and the file to be transmitted from
346: the copy; the copy is deleted when the transfer completes.
347: The fields of each entry are given below.
348: .RS
349: .IP [1]
350: S
351: .IP [2]
352: The full-path name of the source file.
353: .IP [3]
354: The full-path name of the destination or
355: ~user/file-name.
356: .IP [4]
357: The user's login name.
358: .IP [5]
359: A `\-' followed by an option list.
360: .IP [6]
361: The full path-name of the local source file.
362: If the
363: .I ~user
364: notation is used, it will be immediately
365: expanded to be the login directory for the user.
366: If the \fB\-C\fP option was used, this will be the name of a
367: .I "data file"
368: in the spool directory.
369: .IP [7]
370: The file mode bits of the source file
371: in octal print format
372: (e.g. 0666).
373: .IP [8]
374: The user to notify on the remote system that the transfer has completed.
375: .RE
376: .KE
377: .SH
378: Type 4 and Type 5
379: .LP
380: .I Uucp
381: generates a
382: .I uucp
383: command and sends it to the remote machine;
384: the remote
385: .I uucico
386: executes the
387: .I uucp
388: command.
389: .\"===========================================================================
390: .NH 2
391: Uux - UNIX To UNIX Execution
392: .LP
393: The \fIuux\fP
394: command is used to set up the execution of a
395: .UX
396: command
397: where the execution machine and/or some of the
398: files are remote.
399: The syntax of the uux command is
400: .IP
401: .I uux\ \
402: .B [
403: \-
404: .B "] ["
405: option
406: .B ]
407: \ ...\ \ command-string
408: .LP
409: where the command-string is made up of one or more arguments.
410: All special shell characters such as ``<>|*?!'' must be quoted
411: either by quoting the entire command-string
412: or quoting the character as a separate argument.
413: Within the command-string, the command and file names may
414: contain a
415: \fIsystem-name\fP\fB!\fP
416: prefix.
417: All arguments which do not contain a ``!'' will not
418: be treated as files.
419: (They will not be copied to the execution machine.)
420: The `\-' is used to indicate that the standard input
421: for
422: .I command-string
423: should be inherited from the standard input
424: of the
425: .I uux
426: command.
427: .LP
428: The options, used mostly for debugging and by other programs, are:
429: .RS
430: .IP \-a\fIname\fP 10
431: Use \fIname\fP as the requestor of the \fIuux\fP command, instead of the
432: real system and login names.
433: Unlike most other \*(Uu arguments, \fIname\fP may consist of a chain of
434: system names separated by `!' characters, as in:
435: .IP \ 15
436: uux\ \ \-\ \ \-r\ \ \-aihnp4!decwrl!pyramid!csg\ \ seismo!rmail\ \ rick
437: .IP \-C 10
438: Copy source files to the spool directory.
439: Same as for \fIuucp\fP.
440: .IP \-g\fIgrade\fR
441: Put
442: .I grade
443: in as the grade in the name of the work file.
444: Same as for \fIuucp\fP.
445: The default
446: .I grade
447: for
448: .I uux
449: is \fBA\fP.
450: .IP \-n
451: Do not mail an acknowledgement to the requestor of the command.
452: Normally the execution daemon, \fIuuxqt\fP, will mail a message
453: to the user who entered the \fIuux\fP command.
454: This message includes the status return value that the program exited with.
455: The \fB\-n\fP option requests that this message not be sent.
456: .IP \-r
457: Do not start the \*(Uucp daemons \fIuucico\fP(8C) or \fIuuxqt\fP(8C)
458: after queuing the job.
459: .IP \-x\fInum\fR
460: Num is the level of debugging output desired.
461: .IP \-z
462: Mail an acknowledgement to the requestor only if the command fails, that
463: is, the command exits with a non-zero status.
464: .RE
465: .LP
466: The command
467: .IP "" 12
468: pr\ \ abc\ \ |\ \ uux\ \ \-\ \ usg!lpr
469: .LP
470: will set up the output of ``pr abc''
471: as standard input to an lpr command
472: to be executed on system ``usg''.
473: .LP
474: .I Uux
475: generates an
476: .I "execute file"
477: which contains the
478: names of the files required
479: for execution (including standard input),
480: the user's login name, the destination
481: of the standard output, and the command to be executed.
482: This file is either put in the \fBX.\fP spool directory
483: for local execution,
484: or in the \fBD.\fP\fIhostname\fP\fBX\fP directory
485: for transfer to the remote system.
486: .LP
487: For required files which are not on the execution machine,
488: .I uux
489: will generate receive command files (type 2 above).
490: These command-files will be put on the execution machine and
491: executed by
492: \fIuucico\fP.
493: (This will work only if the local system has permission
494: to put files in the remote spool directory as controlled
495: by the remote
496: \fIUSERFILE\fP.)
497: .LP
498: The
499: .I "execute file"
500: will be processed
501: by the
502: \fIuuxqt\fP(8C)
503: program on the execution machine.
504: It is made up of several lines,
505: each of which contains an identification character
506: and one or more arguments.
507: The order of the lines in the file is not relevant
508: and some of the lines may not be present.
509: Each line is described below.
510: .RS
511: .SH
512: User Line
513: .IP
514: U\ \ user\ \ system
515: .LP
516: where the
517: .I user
518: and
519: .I system
520: are the requestor's login name and system.
521: .SH
522: Required File Line
523: .IP
524: F file-name real-name
525: .LP
526: where the
527: .I file-name
528: is the generated name of a file for the execute machine
529: and
530: .I real-name
531: is the last part of the actual file name (contains no
532: path information).
533: Zero or more of these lines may be present in the
534: .I "execute file" .
535: The
536: .I uuxqt
537: program will check for the existence of all required
538: files before the command is executed.
539: .SH
540: Standard Input Line
541: .IP
542: I\ \ file-name
543: .LP
544: The standard input is either specified by a `<' in the
545: command-string or inherited from the standard input of the
546: .I uux
547: command if the `\-' option is used.
548: If a standard input is not specified,
549: .B /dev/null
550: is used.
551: .SH
552: Standard Output Line
553: .IP
554: O\ \ file-name\ \ system-name
555: .LP
556: The standard output is specified by a `>' within the
557: command-string.
558: If a standard output is not specified,
559: .B /dev/null
560: is used.
561: (Note \- the use of ``>>'' is not implemented.)
562: .SH
563: Status Return Line
564: .IP
565: N
566: .LP
567: Normally \fIuuxqt\fP mails an acknowledgement message to the
568: requestor after the command completes.
569: The message includes the status return value that the program exited with.
570: This line inhibits mailing of the acknowledgement message.
571: It is generated by the \fB-n\fP option of \fIuux\fP;
572: it is also quietly assumed by \fIuuxqt\fP on the command \fBrmail\fP.
573: .SH
574: Error Status Return Line
575: .IP
576: Z
577: .LP
578: A variant of the \fIStatus Return\fP line, this line indicates that
579: an acknowledgement should be mailed only if the command's status
580: return is non-zero, i.e., the program exited with an error.
581: This line is generated by the \fB-z\fP option of \fIuux\fP.
582: It is also quietly assumed by \fIuuxqt\fP on the command \fBrnews\fP.
583: If both the \fBZ\fP and \fBN\fP lines appear, the \fBZ\fP line has
584: precedence.
585: .SH
586: Requestor Line
587: .IP
588: R\ \ requestor
589: .LP
590: where
591: .I requestor
592: is a complete return mailing address to the original requestor.
593: This line is generated by the \fB-a\fP option of \fIuux\fP, and is used
594: to override the mail return address implied by the \fIUser\fP line.
595: This is commonly used by mailers and programs like \fIuusend\fP that
596: know how to ``hop'' a file from system to system.
597: .SH
598: Command Line
599: .IP
600: C\ \ command\ \
601: .B [
602: arguments
603: .B ]
604: \ ...
605: .LP
606: The arguments are those specified in the command-string.
607: The standard input and standard output will not appear on this
608: line.
609: All
610: .I "required files"
611: will be moved to the execution directory (a subdirectory
612: of the spool directory)
613: and the
614: .UX
615: command is executed using the Shell specified in the
616: .I uucp.h
617: header file (usually \fI/bin/sh\fP).
618: In addition, a shell ``PATH'' statement is prepended
619: to the command line.
620: .LP
621: After execution, the temporary standard output file is copied to
622: or set up to be
623: sent to the proper place.
624: .RE
625: .\"===========================================================================
626: .\" SECTION 3: SYSTEM UTILITIES
627: .\"===========================================================================
628: .ne 5
629: .NH
630: SYSTEM AND ADMINISTRATIVE UTILITIES
631: .LP
632: \*(Uu includes four system utilities;
633: these are not normally referenced by users.
634: All except \fIuucpd\fP reside in the \*(Uu administrative directory,
635: \fB/usr/lib/uucp\fP.
636: These include:
637: .RS
638: .IP uucico(8C) 15
639: Copy In, Copy Out. This is the primary \*(Uu daemon.
640: .IP uuclean(8C)
641: A handy utility to clean up the \*(Uu spool directories.
642: .IP uucpd
643: The \*(Uu TCP/IP daemon.
644: This daemon ``answers'' the connection request from a remote \fIuucico\fP
645: to a TCP/IP socket.
646: It is functionally a stripped-down version of \fIrlogind\fP(8) that provides
647: full 8-bit communication.
648: (Note: this utility does not have a \fIman\fP page.)
649: .IP uuxqt(8C)
650: Execution Daemon.
651: This is forked by \fIuucico\fP to interpret execution files
652: transferred from a remote system.
653: .RE
654: .\"===========================================================================
655: .NH 2
656: Uucico - Copy In, Copy Out (\*(Uu Daemon)
657: .LP
658: .I Uucico
659: is the ``heart'' of the \*(Uu system.
660: The program performs the following major functions:
661: .RS
662: .IP -\ \ 3
663: Scan the spool directory for work.
664: .IP -\ \
665: Place a call to a remote system.
666: .IP -\ \
667: Negotiate a line protocol to be used.
668: .IP -\ \
669: Execute all requests from both systems.
670: .IP -\ \
671: Log work requests and work completions.
672: .RE
673: .LP
674: .I Uucico
675: may be started in several ways;
676: .RS
677: .IP a) 5
678: by a system daemon (such as \fIcron\fP(8)),
679: .IP b)
680: by one of the
681: .I
682: uucp, uux, uuxqt
683: .R
684: or
685: .I uupoll
686: programs,
687: .IP c)
688: directly by the user (this is usually for testing),
689: .IP d)
690: by a remote system.
691: (The \fIuucico\fP program should be specified as the ``shell''
692: field in the \fB/etc/passwd\fP file for the \*(Uu logins.)
693: .RE
694: .LP
695: When started by method a, b or c, the program is considered to
696: be in
697: .I MASTER
698: mode.
699: In this mode, a connection will be made to a remote system.
700: If started by a remote system (method d),
701: the program is considered to be in
702: .I SLAVE
703: mode.
704: .LP
705: The
706: .I MASTER
707: mode will operate in one of two ways.
708: If no system name is specified
709: (\-s option not specified)
710: the program will scan the spool directory for
711: systems to call.
712: If a system name is specified, that system will be called,
713: and work will only be done for that system.
714: .LP
715: The
716: .I uucico
717: program is generally started by another program.
718: There are several options used for execution:
719: .RS
720: .IP \-g\fIgrade\fP 10
721: Set the minimum grade of this \fIuucico\fP run to \fIgrade\fP.
722: Only files of this grade or better will be transferred.
723: .IP \-r1
724: Start the program in
725: .I MASTER
726: mode.
727: This is used when
728: .I uucico
729: is started by a program or \fIcron\fP shell.
730: .IP \-s\fIsys\fR
731: Do work only for system
732: .I sys.
733: If
734: .B \-s
735: is specified,
736: a call to the specified system
737: will be made even if there is no work for system
738: .I sys
739: in the spool directory.
740: This is useful for polling systems which do not have
741: the hardware to initiate a connection.
742: .LP
743: The following options are used primarily for debugging:
744: .IP \-d\fIdir\fR
745: Use directory
746: .I dir
747: for the top level spool directory.
748: .IP \-x\fInum\fR
749: .I Num
750: is the level of debugging output desired.
751: .RE
752: .LP
753: The next part of this section will describe the major steps within
754: the
755: .I uucico
756: program.
757: .SH
758: Scan For Work
759: .LP
760: The names of the work related files in a spool subdirectory have format
761: .IP
762: type \fB.\fP system-name grade number
763: .LP
764: where:
765: .IP
766: .I Type
767: is an upper case letter,
768: (
769: .B C
770: -\ work (copy command) file,
771: .B D
772: -\ data file,
773: .B X
774: -\ execute file);
775: .IP
776: .I System-name
777: is the remote system;
778: .IP
779: .I Grade
780: is a character in the range \fB[0-9][A-Z][a-z]\fP;
781: .IP
782: .I Number
783: is a four digit, padded sequence number.
784: .LP
785: The file
786: .IP "" 12
787: C.res45n0031
788: .LP
789: would be a
790: .I "work file"
791: for a file transfer between the local
792: machine and the ``res45'' machine.
793: .LP
794: The scan for work is done by looking through the
795: appropriate spool directory for
796: \fIwork files\fP
797: (files with prefix \fBC.\fP).
798: A list is made of all systems to be called.
799: .I Uucico
800: will then call each system and process all
801: .I "work files" .
802: .SH
803: Call Remote System
804: .LP
805: The call is made using information from the \fIcontrol\fP files
806: that reside in the \fB/usr/lib/uucp\fP directory.
807: At the start of the call process, a lock is
808: set to forbid multiple conversations
809: between the same two systems.
810: .LP
811: The system name is found in the
812: .I L.sys
813: control file.
814: The information contained for each system is;
815: .RS
816: .IP [1]
817: system name,
818: .IP [2]
819: times to call the system
820: (days-of-week and times-of-day),
821: .IP [3]
822: the \fIcaller\fP, that is, the type of device to be used for the call,
823: .IP [4]
824: the line speed or network number (as appropriate),
825: .IP [5]
826: telephone number or device name (as appropriate),
827: .IP [6]
828: login information (multiple fields).
829: .RE
830: .LP
831: The time field is checked against the present time to see
832: if the call should be made.
833: .LP
834: The
835: .I
836: phone number
837: .R
838: may contain abbreviations (e.g. mh, py, boston) which get translated into dial
839: sequences using the
840: .I L-dialcodes
841: file.
842: .LP
843: The
844: .I L-devices
845: file is scanned using fields [3] and [4] from the
846: .I L.sys
847: file to find an available device for the call.
848: The program will try all devices which satisfy
849: [3] and [4] until the call is made or no more
850: devices can be tried.
851: If a device is successfully opened, a lock file
852: is created so that another copy of
853: .I uucico
854: will not try to use it.
855: If the call is complete, the
856: .I
857: login information
858: .R
859: (field [6] of
860: \fIL.sys\fP)
861: is used to login.
862: .LP
863: The conversation between the two
864: .I uucico
865: programs begins with a handshake started by the called,
866: .I SLAVE ,
867: system.
868: The
869: .I SLAVE
870: sends a message to let the
871: .I MASTER
872: know it is ready to receive the system
873: identification and conversation sequence number.
874: The response from the
875: .I MASTER
876: is
877: verified by the
878: .I SLAVE
879: and if acceptable, protocol selection begins.
880: The
881: .I SLAVE
882: can also reply with a ``call-back required''
883: message in which case, the current conversation
884: is terminated.
885: .SH
886: Line Protocol Selection
887: .LP
888: The remote system sends a message
889: .IP "" 12
890: P\fIproto-list\fR
891: .LP
892: where proto-list is a string of characters, each
893: representing a line protocol.
894: .LP
895: The calling program checks the proto-list
896: for a letter corresponding to an available line
897: protocol and returns a
898: .I use-protocol
899: message.
900: The
901: .I use-protocol
902: message is
903: .IP "" 12
904: U\fIcode\fR
905: .LP
906: where
907: .I code
908: is either a one character
909: protocol letter or
910: .B N
911: which means there is no common protocol.
912: .LP
913: The following protocols are implemented in 4.3BSD \*(Uu:
914: .RS
915: .IP \fBg\fP
916: General.
917: Default for dialup or hardwired lines, supported by all versions of \*(Uu.
918: This protocol employs small (64 byte) data packets with
919: checksums and packet-by-packet retransmission.
920: This ensures reliable and efficient transfers over slow and noisy links
921: like 1200-baud dial-up lines.
922: These same characteristics make the \fBg\fP protocol bulky and slow over
923: error free links, and very expensive on public data-switched networks.
924: .IP \fBf\fP
925: Optimized for use on X.25 PAD public data-switched networks.
926: The protocol employs larger (256 byte) data packets,
927: passes no control characters except CR,
928: and uses only a 7-bit data path.
929: (Note that the files transferred may still contain full 8-bit data.)
930: It assumes that the link is ``mostly'' error-free, calculating a checksum
931: for the entire file only.
932: When an error is detected, the entire file is retransmitted.
933: .IP \fBt\fP
934: Optimized for use on TCP/IP networks and other completely error free links.
935: It employs large (1024 byte) packets, and uses the full 8-bit data path.
936: .RE
937: .LP
938: Note: AT&T System VR2 \*(UU supports the \fBx\fP (\fIX.25\fP) and \fBe\fP
939: (\fIError Free\fP) protocols, which provide functionality similar to the
940: 4.3BSD \fBf\fP and \fBt\fP protocols, respectively.
941: They are incompatible, however.
942: Thus when attempting to connect two systems via X.25 or an local area network,
943: it is not adequate for both systems to simply ``support X.25'' or ``support
944: error free transfers.''
945: Both must support the same \*(Uu protocols.
946: .SH
947: Work Processing
948: .LP
949: The initial roles (
950: .I MASTER
951: or
952: .I SLAVE
953: ) for the work processing are
954: the mode in which each program starts.
955: (The
956: .I MASTER
957: has been specified by the \fB\-r1\fP \fIuucico\fP option.)
958: The
959: .I MASTER
960: program does a work search similar to the
961: one used in the ``Scan For Work'' section.
962: .LP
963: There are five messages used during the
964: work processing, each specified by the first
965: character of the message.
966: They are;
967: .IP "" 12
968: .RS
969: .IP S 3
970: send a file,
971: .IP R
972: receive a file,
973: .IP C
974: copy complete,
975: .IP X
976: execute a
977: .I uucp
978: command, and
979: .IP H
980: hangup.
981: .RE
982: .LP
983: The
984: .I MASTER
985: will send
986: .I R ,
987: .I S
988: or
989: .I X
990: messages until all work from the spool directory is
991: complete, at which point an
992: .I H
993: message will be sent.
994: The
995: .I SLAVE
996: will reply with
997: \fISY\fR, \fISN\fR, \fIRY\fR, \fIRN\fR, \fIHY\fR, \fIHN\fR,
998: \fIXY\fR, \fIXN\fR,
999: corresponding to
1000: .I yes
1001: or
1002: .I no
1003: for each request.
1004: .LP
1005: The send and receive replies are
1006: based on permission to access the
1007: requested file/directory using
1008: .I USERFILE
1009: and read/write permissions of the file/directory.
1010: After each file is copied into the spool directory
1011: of the receiving system,
1012: a copy-complete message is sent by the receiver of the file.
1013: The message
1014: .I CY
1015: will be sent if the
1016: file has successfully been moved from the
1017: temporary spool file to the actual destination.
1018: Otherwise, a
1019: .I CN
1020: message is sent.
1021: (In the case of
1022: .I CN ,
1023: the transferred file will be in the \fBTM.\fP spool subdirectory.)
1024: The requests and results are logged on both systems.
1025: .LP
1026: The hangup response is determined by the
1027: .I SLAVE
1028: program by a work scan of its spool directory.
1029: If work for the \fIMASTER\fP\|'s system exists in the
1030: \fISLAVE\fP\|'s
1031: spool directory, an
1032: .I HN
1033: message is sent and the programs switch roles.
1034: If no work exists, an
1035: .I HY
1036: response is sent.
1037: .SH
1038: Conversation Termination
1039: .LP
1040: When a
1041: .I HY
1042: message is received by the
1043: .I MASTER
1044: it is echoed back to the
1045: .I SLAVE
1046: and the protocols are turned off.
1047: Each program sends a final ``OO'' message to the
1048: other.
1049: The original
1050: .I SLAVE
1051: program will clean up and terminate.
1052: The
1053: .I MASTER
1054: will proceed to call other systems
1055: and process work as long as possible
1056: or terminate if a
1057: .B \-s
1058: option was specified.
1059: .LP
1060: .\"===========================================================================
1061: .NH 2
1062: Uuxqt - Uucp Command Execution
1063: .LP
1064: The
1065: .I uuxqt
1066: program is used to execute
1067: .I
1068: execute files
1069: .R
1070: generated by
1071: .I uux.
1072: The
1073: .I uuxqt
1074: program may be started by either the
1075: .I uucico
1076: or
1077: .I uux
1078: programs.
1079: The program scans the \fBX.\fP spool directory for
1080: \fIexecute files\fP.
1081: Each one is checked to see if all the required files are available and
1082: if so, the command line or send line is executed.
1083: .LP
1084: The
1085: .I
1086: execute file
1087: .R
1088: is described in the
1089: .I uux
1090: section above.
1091: .SH
1092: Command Execution
1093: .LP
1094: The execution is accomplished by executing a
1095: .I
1096: sh \-c
1097: .R
1098: of the command line after appropriate
1099: standard input and standard output have been opened.
1100: If a standard output is specified, the program
1101: will create a send command or copy the output
1102: file as appropriate.
1103: .\"===========================================================================
1104: .NH 2
1105: Uuclean - Uucp Spool Directory Cleanup
1106: .LP
1107: This program is typically started by the
1108: \fIcron\fP(8)
1109: daemon, once a day.
1110: Its function is to remove files from the spool directories which
1111: are more than 3 days old.
1112: These are usually files for work which can not be completed.
1113: .LP
1114: .LP
1115: The options available are:
1116: .RS
1117: .IP \-d\fIdir\fR 10
1118: The directory to be scanned is
1119: .I dir .
1120: .IP \-m
1121: Send mail to the owner of each file being removed.
1122: (Note that most files put into the spool directory
1123: will be owned by the owner of the
1124: uucp programs since the setuid bit will be set on these
1125: programs.
1126: The mail will therefore most often go to the owner
1127: of the uucp programs.)
1128: .IP \-n\fIhours\fR
1129: Change the aging time from 72 hours to
1130: .I hours
1131: hours.
1132: .IP \-p\fIpre\fR
1133: Examine files with prefix
1134: .I pre
1135: for deletion.
1136: (Up to 10 file prefixes may be specified.)
1137: .IP \-x\fInum\fR
1138: This is the level of debugging output desired.
1139: .RE
1140: .\"===========================================================================
1141: .\" SECTION 4: CONTROL FILES
1142: .\"===========================================================================
1143: .ne 5
1144: .NH
1145: SYSTEM CONTROL FILES
1146: .PP
1147: Seven \fIControl Files\fP are referenced by the \*(Uu utilities.
1148: All live in the \*(Uu administrative directory, \fB/usr/lib/uucp\fP.
1149: These are ASCII files, and can be modified using standard text editors such
1150: as \fIvi\fP and \fIex\fP.
1151: Lines beginning with a `#' character are comments;
1152: lines ending with a `\e' are continued on the next input line.
1153: .RS
1154: .IP L-devices(5) 15
1155: Declares all devices that are available to \fIuucico\fP for calling out.
1156: .IP L-dialcodes(5)
1157: Phone number prefixes.
1158: Used to map alphabetic prefixes on phone numbers from \fIL.sys\fP to
1159: real phone numbers.
1160: Also useful to keep a phone number database outside of \fIL.sys\fP.
1161: .IP L.sys(5)
1162: Systems.
1163: Declares all ``adjacent'' \*(Uu hosts, with directions on how to reach them.
1164: .IP L.aliases(5)
1165: Contains aliases used to map obsolete or truncated host names to the
1166: correct names.
1167: .IP L.cmds(5)
1168: Commands Permissions.
1169: Declares those commands for which remote \fIuux\fP execution is permitted.
1170: .IP SQFILE
1171: Sequence-number check file. (Optional)
1172: .IP USERFILE(5)
1173: Directory Tree Permissions.
1174: Specifies the set of directory trees that a particular user or host may
1175: reference.
1176: .RE
1177: .LP
1178: A general description of each file follows; see the \fIman\fP pages for
1179: complete information.
1180: Examples of the six standard files are included in the distribution in the
1181: \fB/usr/lib/uucp/UUAIDS\fP directory.
1182: .NH 2
1183: L-devices \- \*(UU Devices File
1184: .LP
1185: This file declares all devices that are available to
1186: \fIuucico\fP
1187: for calling out.
1188: The special device files are assumed to be in the
1189: .I /dev
1190: directory.
1191: The format for each entry is
1192: .IP "" 12
1193: caller line call-unit class dialer [chat....]
1194: .LP
1195: where;
1196: .RS
1197: .IP caller 12
1198: is the caller mechanism, that is, the type of device to be used.
1199: This can be one of \fBACU\fP (for Automatic
1200: Call Units (modem)), \fBDIR\fP (direct hardwired), \fBPAD\fP
1201: (X.25/PAD), and others.
1202: .IP line
1203: is the device for the link.
1204: For example, \fBcul0\fP for a modem, \fBtty10\fP for a hardwired line.
1205: .IP call-unit
1206: is the automatic call unit associated with
1207: \fIdevice\fP.
1208: This is used on autodialers such as the Racal-Vadic MACS and the
1209: DEC DN-11 that use one device for data, and a second device for dialing.
1210: If unused, this field must contain a placeholder such as ``unused'' or ``0''.
1211: Some modems use this field to specify tone or pulse dialing.
1212: .IP class
1213: is the line speed, plus an optional alphabetic prefix.
1214: The prefix can be used to distinguish among different devices that
1215: have identical \fIcaller\fP and line speed.
1216: .IP dialer
1217: applies to \fBACU\fP devices only;
1218: this is the type or brand name of the modem.
1219: Supported modems include \fBDN11\fP (DEC DN-11),
1220: \fBhayes\fP (Hayes Smartmodem),
1221: \fBvadic\fP (Racal-Vadic 3451),
1222: \fBventel\fP (VenTel 212A), and others.
1223: .IP chat
1224: refers to an \fIexpect/send\fP script, similar to that provided in
1225: \fIL.sys\fP.
1226: The difference is that the script in
1227: .I L-devices
1228: is executed before the connection is established, while the script in
1229: .I L.sys
1230: is executed afterwards.
1231: .RE
1232: .LP
1233: The line
1234: .IP "" 12
1235: ACU\ \ tty47\ \ unused\ \ 1200\ \ hayes
1236: .LP
1237: would be set up for a system which
1238: had device tty47 wired to a
1239: Hayes ``Smartmodem 1200''
1240: for use at 1200 baud.
1241: .NH 2
1242: L-dialcodes \- Phone Number Prefix File
1243: .LP
1244: This file contains entries with location abbreviations used
1245: in the
1246: .I L.sys
1247: file (e.g. py, mh, boston).
1248: The entry format is
1249: .IP "" 12
1250: abb\ \ dial-seq
1251: .LP
1252: where;
1253: .RS
1254: .IP abb 12
1255: is the abbreviation,
1256: .IP dial-seq
1257: is the dial sequence to call that location.
1258: .RE
1259: .LP
1260: The line
1261: .IP "" 12
1262: py\ \ 165\-
1263: .LP
1264: would be set up so that entry py7777 would
1265: send 165\-7777 to the dial-unit.
1266: .NH 2
1267: L.aliases \- Hostname Aliases File
1268: .LP
1269: This file defines mapping (aliasing) of remote host names.
1270: This is intended for compensating for systems that have
1271: changed names, or do not provide their entire machine name
1272: (like most USG systems).
1273: It is also useful when a machine's name is not obvious or commonly misspelled.
1274: .LP
1275: Each line is of the form
1276: .IP
1277: real-name\ \ alias-name
1278: .LP
1279: where
1280: .I real-name
1281: is the full, correct name for the host, and
1282: .I alias-name
1283: is the old or truncated name.
1284: .NH 2
1285: L.sys \- \*(Uu Systems File
1286: .LP
1287: Each entry in this file represents one system
1288: which can be called by the local uucp programs.
1289: The format for each entry is
1290: .IP
1291: system times caller class device/phone-number [login]
1292: .LP
1293: where;
1294: .RS
1295: .IP "system" 12
1296: is the hostname of the remote system.
1297: .IP times
1298: is a keyword-encoded string that indicates the days-of-the-week
1299: and times-of-day when the system may
1300: be called.
1301: For example \fBMoTuTh0800\-1730\fP would denote Monday, Tuesday,
1302: and Thursday, between 8 a.m. and 5:30p.m.
1303: .IP
1304: The day portion may be a list containing
1305: any of
1306: \fBSu\fP, \fBMo\fP, \fBTu\fP, \fBWe\fP, \fBTh\fP, \fBFr\fP, \fBSa\fP,
1307: or
1308: .B Wk
1309: for any week-day or
1310: .B Any
1311: for any day.
1312: .IP
1313: The time should be a range of times (as in \fB0800\-1230\fP).
1314: If no time portion is specified, any time
1315: of day is assumed to be acceptable for the call.
1316: .IP caller
1317: is one of the caller device-types listed in \fIL-devices\fP.
1318: .IP class
1319: is the line speed for the call (e.g., 300, 1200, 9600),
1320: plus an optional alphabetic prefix.
1321: Network devices use this field for the network port number.
1322: .IP phone
1323: is the the phone number to call (for \fBACU\fP devices) or the
1324: device filename.
1325: A phone number is made up of an optional
1326: alphabetic abbreviation and a numeric part.
1327: The abbreviation is one which appears in the
1328: .I L-dialcodes
1329: file (e.g. mh5900, boston995\-9980).
1330: .IP login
1331: is a script describing how to log in to the remote host.
1332: It is expressed as a series of
1333: fields and subfields in the format
1334: .IP "" 17
1335: expect\ \ send\
1336: [
1337: expect\ \ send
1338: ]
1339: \ ...
1340: .IP "" 12
1341: where;
1342: .I expect
1343: is the string expected to be read and
1344: .I send
1345: is the string to be sent when the
1346: .I expect
1347: string is received.
1348: The
1349: .I send
1350: string is normally terminated with carriage-return;
1351: an empty
1352: .I send
1353: string will send only a carriage-return.
1354: .IP
1355: The expect field may be made up of subfields
1356: of the form
1357: .IP "" 17
1358: expect\fB[\fR\-send\-expect\fB]\fR...
1359: .IP "" 12
1360: where the
1361: .I send
1362: is sent if the prior
1363: .I expect
1364: is not successfully read
1365: and the
1366: .I expect
1367: following the
1368: .I send
1369: is the next expected string.
1370: .RE
1371: .LP
1372: A typical entry in the L.sys file would be
1373: .IP "" 6
1374: sys\ Any\ ACU\ 1200\ \ mh7654\ login:--login:\ uucp\ ssword:\ word
1375: .LP
1376: The expect algorithm looks at the last part of the
1377: string as illustrated in the password field.
1378: .NH 2
1379: L.cmds \- Commands Permissions File
1380: .LP
1381: This file contains a list of commands, one per line, that are permitted
1382: for remote execution via \fIuux\fP.
1383: This list should be chosen with great care, since commands that take filenames
1384: as arguments will allow users to easily circumvent \*(Uu's security.
1385: For most sites,
1386: .I L.cmds
1387: should only include the lines:
1388: .DS
1389: rmail
1390: ruusend
1391: .DE
1392: .NH 2
1393: SQFILE \- Sequence Check File (Optional)
1394: .LP
1395: This file contains an entry for each remote
1396: system with which this site agrees to perform conversation
1397: sequence checks.
1398: The initial entry is just the system name of
1399: the remote system.
1400: The first conversation will add two items to the line,
1401: the conversation count, and the date/time of the most
1402: resent conversation.
1403: These items will be updated with each conversation.
1404: If a sequence check fails, which could indicate that an unauthorized
1405: connection has been attempted, the entry will have to
1406: be adjusted.
1407: .LP
1408: This facility is technically no longer supported in 4.3BSD \*(Uu,
1409: since it was hardly ever used and consumed precious memory space on PDP-11
1410: systems.
1411: The compile-time #define GNXSEQ can be set to enable sequence checking
1412: should it be needed.
1413: .NH 2
1414: USERFILE \- Pathnames Permissions File
1415: .LP
1416: This file contains user accessibility information.
1417: It specifies four types of constraint;
1418: .RS
1419: .IP [1]
1420: which files can be accessed by a normal user of the local machine,
1421: .IP [2]
1422: which files can be accessed from a remote computer,
1423: .IP [3]
1424: which login name is used by a particular remote computer,
1425: .IP [4]
1426: whether a remote computer should be called back in order to confirm
1427: its identity.
1428: .RE
1429: .LP
1430: Each line in the file has the following format
1431: .IP "" 6
1432: login,sys\ \
1433: .B [
1434: c
1435: .B ]
1436: \ \ path-name\ \
1437: .B [
1438: path-name
1439: .B ]
1440: \ ...
1441: .LP
1442: where;
1443: .RS
1444: .IP login 12
1445: is the login name for a user or the remote computer,
1446: .IP sys
1447: is the system name for a remote computer,
1448: .IP c
1449: is the optional
1450: .I
1451: call-back required
1452: .R
1453: flag,
1454: .IP path-name
1455: is a path-name prefix that is acceptable for
1456: .I user.
1457: .LP
1458: .RE
1459: .LP
1460: The constraints are implemented as follows.
1461: .RS
1462: .IP [1]
1463: When the program is obeying a command stored on the local machine,
1464: .I MASTER
1465: mode,
1466: the path-names allowed are those given for the first line in the
1467: .I USERFILE
1468: that has a login name that matches the login name of the user
1469: who entered the command.
1470: If no such line is found, the first line with a
1471: .I null
1472: login name is used.
1473: .IP [2]
1474: When the program is responding to a command from a remote machine,
1475: .I SLAVE
1476: mode, the path-names allowed are those given for the first line
1477: in the file that has the system name that matches the system name
1478: of the remote machine.
1479: If no such line is found, the first one with a
1480: .I null
1481: system name is used.
1482: .IP [3]
1483: When a remote computer logs in, the login name that
1484: it uses must appear in the
1485: .I USERFILE .
1486: There may be several lines with the same login name but one of them must
1487: either have the name of the remote system or must contain a
1488: .I null
1489: system name.
1490: .B Note:
1491: This constraint, although stated in the original Nowitz \*(Uu document,
1492: was not implemented in Version 7 \*(Uu.
1493: For all practical purposes,
1494: a remote computer's login was not validated by \*(Uu.
1495: This is still the case in 4.3BSD.
1496: Remote login checking \fIis\fP implemented in AT&T's System VR2.2 release,
1497: and in the \*(Uu provided with Digital Equipment Corporation's ULTRIX.
1498: HoneyDanBer analogously requires all remote logins to be listed in
1499: its \fIPermissions\fP file.
1500: .IP [4]
1501: If the line matched in ([3]) contains a ``c'',
1502: the remote machine is called back before any transactions take place.
1503: .RE
1504: .LP
1505: The line
1506: .IP "" 12
1507: u,m /usr/xyz
1508: .LP
1509: allows machine
1510: .I m
1511: to login with name
1512: .I u
1513: and request the transfer of files whose names start with
1514: ``/usr/xyz''.
1515: .LP
1516: The line
1517: .IP "" 12
1518: dan, /usr/dan
1519: .LP
1520: allows the ordinary user
1521: .I dan
1522: to issue commands for files whose name starts with
1523: ``/usr/dan''.
1524: .LP
1525: The lines
1526: .IP "" 12
1527: u,m /usr/xyz /usr/spool
1528: .br
1529: u, /usr/spool
1530: .LP
1531: allows any remote machine to login with name
1532: .I u ,
1533: but if its system name is not
1534: .I m ,
1535: it can only ask to transfer files whose names start with
1536: ``/usr/spool''.
1537: .LP
1538: The lines
1539: .IP "" 12
1540: root, /
1541: .br
1542: , /usr
1543: .LP
1544: allows any user to transfer files beginning with ``/usr''
1545: but the user with login
1546: .I root
1547: can transfer any file.
1548: .PP
1549: .RE
1550: .\"===========================================================================
1551: .\" SECTION 5: SPOOL FILES
1552: .\"===========================================================================
1553: .ne 5
1554: .NH
1555: SPOOL FILES
1556: .PP
1557: Spool Files contain \*(Uu transfer requests and data.
1558: Most have been described in detail earlier in this document.
1559: .LP
1560: All spool files live in the
1561: .B /usr/spool/uucp
1562: directory tree.
1563: To keep the spool directory from becoming hopelessly cluttered,
1564: each type of spool file is kept in its own subdirectory.
1565: The name of the directory is the same as the common prefix of the
1566: filename.
1567: For example, \fIwork files\fP (files beginning with \fBC.\fP) are kept
1568: in the \fBC.\fP directory; \fIexecute files\fP (which begin with \fBX.\fP)
1569: are kept in the \fBX.\fP directory, and so on.
1570: .LP
1571: A total of ten spool subdirectories are used, one of which is optional:
1572: .RS
1573: .IP C. 15
1574: \fIWork\fP files.
1575: .IP CORRUPT
1576: Corrupted \fIwork\fP and \fIexecute\fP files.
1577: \fIUucico\fP and \fIuuxqt\fP will deposit \fBC.\fP and \fBX.\fP files here
1578: when they are unable to parse them.
1579: A notice will also be placed in the \*(Uu log.
1580: .IP D.
1581: \fIData files\fP received from remote hosts.
1582: .IP D.\fIhostname\fP
1583: \fIData files\fP to be sent to remote hosts.
1584: .IP D.\fIhostname\fPX
1585: \fIExecution files\fP to be sent to remote hosts.
1586: .IP LCK
1587: Per-device and per-site lock (\fBLCK.\fP) files. (Optional)
1588: .IP STST
1589: Per-site system status files.
1590: .IP TM.
1591: Temporary files used in data transfer.
1592: When the transfer is complete, the file is typically
1593: \fImv\fP'ed to the \fBD.\fP or \fBX.\fP directory.
1594: .IP X.
1595: \fIExecution files\fP received from remote sites.
1596: .IP XTMP
1597: Temporary files and home directory for \fIuuxqt\fP.
1598: .RE
1599: .LP
1600: The following sections describe only those spool files that were not
1601: discussed earlier.
1602: .NH 2
1603: LCK \- lock files
1604: .LP
1605: Lock files are created for each device in use (except for TCP/IP sockets)
1606: and each system conversing.
1607: This prevents duplicate conversations and multiple attempts to use the
1608: same devices.
1609: The form of the lock file name is
1610: .IP "" 12
1611: \fBLCK..\fRstr
1612: .LP
1613: where
1614: .I str
1615: is either a device or system name.
1616: The files may be left in the spool directory if
1617: .I uucico
1618: aborts.
1619: They will be ignored (reused) after 90 minutes.
1620: When runs abort and calls are desired before the time limit expires,
1621: the lock files should be removed.
1622: If the \fBLCK.\fP subdirectory is used, it's access mode can be set to 777,
1623: thus allowing normal users to remove dead lock files when necessary.
1624: .NH 2
1625: STST \- system status files
1626: .LP
1627: These files are created in the \fBSTST\fP subdirectory by
1628: \fIuucico\fP.
1629: They contain information of failures such as login, dialup, or
1630: sequence check, and will contain a
1631: \fITALKING\fP, \fIRECEIVING\fP, or \fPSENDING\fP
1632: status when two machines are conversing.
1633: The file name is
1634: \fBSTST/\fP\fIsystem\fP,
1635: where \fIsystem\fP is the host name of the remote machine.
1636: .LP
1637: For ordinary failures (dialup, login), the file indicates the time
1638: of the last failure;
1639: this allows \fIuucico\fP to avoid retrying the failed call too soon.
1640: For sequence check failures, the file must be removed before
1641: any future attempts to converse with that remote system.
1642: .LP
1643: If the file is left due to an aborted run, it may contain a
1644: .I TALKING
1645: status.
1646: In this case, the file must be removed before a conversation
1647: is attempted.
1648: The easiest way to do this is to use the \fIuupoll\fP command to
1649: force \fIuucico\fP to start up.
1650: .NH 2
1651: TM \- temporary data files
1652: .LP
1653: These files are created in the
1654: .B /usr/spool/uucp/TM.
1655: directory while files are being copied
1656: from a remote machine.
1657: Their names have the form
1658: .IP "" 12
1659: \fBTM\fR.pid.ddd
1660: .LP
1661: where
1662: .I pid
1663: is a process-id and
1664: .I ddd
1665: is a sequential three digit number starting at zero
1666: for each invocation of
1667: .I uucico
1668: and incremented for each file received.
1669: After the entire remote file is received, the
1670: .B TM
1671: file is moved to the requested destination,
1672: often the \fBX.\fP or \fBD.\fP directory.
1673: If processing is abnormally terminated or the
1674: move fails, the file will remain in the
1675: \fBTM.\fP directory.
1676: .LP
1677: The stranded files should be periodically removed;
1678: the
1679: .I uuclean
1680: program is useful in this regard.
1681: The command
1682: .IP "" 12
1683: uuclean\ \ -d/usr/spool/uucp/TM.\ \ \-pTM.
1684: .LP
1685: will remove all
1686: .B TM
1687: files older than three days.
1688: .\"===========================================================================
1689: .\" SECTION 6: LOG FILES
1690: .\"===========================================================================
1691: .ne 5
1692: .NH
1693: LOG FILES
1694: .LP
1695: The following files provide a history of \*(Uu activities.
1696: All live in the spool directory, \fB/usr/spool/uucp\fP.
1697: They grow forever, and must be periodically trimmed or deleted;
1698: this is usually done weekly (or daily) via \fIcron\fP.
1699: .RS
1700: .IP AUDIT 12
1701: This is a directory of audit trail files, one file per site.
1702: .I Uucico
1703: uses an audit file for debugging output
1704: whenever it is run with debug enabled (via the \fB-x\fP option or a
1705: \fBSIGFPE\fP signal), but the standard message output file \fBstderr\fP is
1706: not available.
1707: .IP ERRLOG
1708: This is an oft-forgotten log of \*(Uu ``Assert'' errors.
1709: An Assert error is a catastrophic and unrecoverable failure of the \*(Uu
1710: system.
1711: These include spool directories or control files that cannot be opened,
1712: an unexpected error return from a system call, or an ``impossible case''
1713: in a utility's control flow.
1714: .IP
1715: Utilities that abort with an Assert error return a status code of -1.
1716: If a user reports \fIuucp\fP or \fIuux\fP dying with a message like
1717: ``uux failed, status -1,'' then the ERRLOG file should be checked.
1718: .IP LOGFILE
1719: This is the primary \*(Uu log. All \*(Uu activity is recorded here,
1720: including queue requests from \fIuucp\fP and \fIuux\fP, attempted
1721: connections, file transfers, and communications failures.
1722: .IP SYSLOG
1723: This is a log of file transfer statistics: number of bytes, time required,
1724: and number of packet retries.
1725: The effective data rate can be calculated simply by dividing the number of
1726: bytes by the time;
1727: low data rates or a large number of retries implies that the communication
1728: link may marginal.
1729: .RE
1730: .LP
1731: Optionally, one \fILOGFILE\fP per site may be maintained in the \fBLOG\fP
1732: subdirectory.
1733: This option can be selected at \*(Uu compile time via the LOGBYSITE #define
1734: in \fBuucp.h\fP.
1735: .\"===========================================================================
1736: .\" SECTION 7: ADMINSTRATION AND SYSTEM SECURITY
1737: .\"===========================================================================
1738: .ne 5
1739: .NH
1740: ADMINISTRATION AND SYSTEM SECURITY
1741: .NH 2
1742: .UX
1743: System Files
1744: .SH
1745: /etc/passwd
1746: .LP
1747: \*(Uu requires a login in \fB/etc/passwd\fP;
1748: at its simplest the entry would be
1749: .DS
1750: uucp::66:1:UNIX-to-UNIX Copy:/usr/spool/uucppublic:/usr/lib/uucp/uucico
1751: .DE
1752: .LP
1753: This user should own all the \*(Uu files and utilities.
1754: Remote sites wishing to call in for \*(Uu transfers would login to
1755: \fBuucp\fP (with the correct password, if any), and get
1756: .I uucico
1757: as their ``shell.''
1758: Since \fIuucico\fP would be called without any options, it would run in
1759: .I SLAVE
1760: mode, thus responding correctly to the remote system, which
1761: would be in
1762: .I MASTER
1763: mode.
1764: .LP
1765: The directory
1766: .B /usr/spool/uucppublic
1767: should be created with 777 access modes, owned by \fBuucp\fP.
1768: In addition to serving as the home directory for \*(Uu remote logins,
1769: .B uucppublic
1770: provides a ``public-access'' directory where any user can read, write,
1771: or transfer files.
1772: .LP
1773: There are a number of security problems with using a single login, not
1774: the least of which is that superuser permission would be necessary to
1775: edit the \fIcontrol\fP files.
1776: A better arrangement would be:
1777: .DS
1778: uucp::66:1:UUCP Administrator:/usr/lib/uucp:
1779: nuucp::67:1:UNIX-to-UNIX Copy:/usr/spool/uucppublic:/usr/lib/uucp/uucico
1780: .DE
1781: This provides one login for the \*(Uu administrator (which must be kept
1782: secure!) and a second for remote machines to use for login.
1783: A still more elaborate setup would use a separate login for each remote
1784: site, and possibly provide the administrator with a choice of shells:
1785: .DS
1786: uucp::66:1:UUCP Administrator:/usr/lib/uucp:
1787: UUCP::66:1:UUCP Administrator:/usr/lib/uucp:/bin/csh
1788: Uhosta::6001:1:UNIX-to-UNIX Copy:/usr/spool/uucppublic:/usr/lib/uucp/uucico
1789: Uhostb::6002:1:UNIX-to-UNIX Copy:/usr/spool/uucppublic:/usr/lib/uucp/uucico
1790: Uhostc::6003:1:UNIX-to-UNIX Copy:/usr/spool/uucppublic:/usr/lib/uucp/uucico
1791: .DE
1792: .LP
1793: It is assumed that the login name
1794: used by a remote computer to dial in
1795: is not the same as the login name of a normal user
1796: of the machine.
1797: However, several remote computers may employ the same
1798: login name.
1799: .LP
1800: Note that
1801: .B uucppublic
1802: is
1803: .I not
1804: used as the home directory for
1805: .B uucp
1806: when it logs into a regular shell.
1807: This would be an extreme security hazard, since anyone could slip a
1808: ``Trojan horse'' into a
1809: .B .profile
1810: or
1811: .B .cshrc
1812: file, which would be automatically executed when the \*(Uu administrator
1813: logged in.
1814: .SH
1815: /etc/rc
1816: .LP
1817: The system startup file, \fB/etc/rc\fP, should clean up any stray lock
1818: files with the line
1819: .IP
1820: rm -f /usr/spool/uucp/LCK.*
1821: .LP
1822: or, if the LCK subdirectory is being used,
1823: .IP
1824: rm -f /usr/spool/uucp/LCK/LCK.*
1825: .SH
1826: /etc/services
1827: .LP
1828: If \*(Uu is to be used over TCP/IP links, then an entry for \*(Uu's port
1829: number should be added to \fB/etc/services\fP:
1830: .IP
1831: uucp\ \ 540/tcp\ \ uucpd\ \ # UUCP TCP/IP
1832: .\"===========================================================================
1833: .NH 2
1834: Shell Scripts For Periodic Cleanup
1835: .LP
1836: The \*(Uu system has a fairly large number of activities that must
1837: occur periodically.
1838: These include starting \fIuucico\fP to process queued requests,
1839: running \fIuuclean\fP to remove old spool files, and
1840: shuffling the boundlessly-growing log files.
1841: Some sites will also want to poll other sites periodically.
1842: .LP
1843: While it's possible to put all the necessary commands into \fIcron\fP's
1844: control file \fB/usr/lib/crontab\fP, this would be extremely awkward.
1845: The usual technique is to use three separate shells scripts, one each
1846: for hourly, daily, and weekly operations.
1847: Examples are provided in the
1848: .B UUAIDS
1849: directory; the following sections provide some specific recommendations.
1850: .SH
1851: Hourly
1852: .LP
1853: Activities that should occur hourly include:
1854: .RS
1855: .IP - 2
1856: Polling of selected sites.
1857: Sites that have no dial-out capability will need to be periodically polled.
1858: The \fIuupoll\fP command works well for this.
1859: .IP -
1860: Start \fIuucico\fP to complete all unfinished work.
1861: This can be as simple as:
1862: .IP "" 7
1863: uucico -r1 &
1864: .RE
1865: .SH
1866: Daily
1867: .LP
1868: The daily script should be started by \fIcron\fP in the wee hours, around
1869: 4 a.m.
1870: Activities that should occur daily include:
1871: .RS
1872: .IP - 2
1873: Call
1874: .I uuclean
1875: to remove old spool files.
1876: The preferred technique is something like the following:
1877: .DS
1878: cd /usr/lib/uucp
1879: deadtime=`expr 24 \* 7`
1880: uuclean -d/usr/spool/uucp/AUDIT -n72
1881: uuclean -d/usr/spool/uucp/LCK -pLCK. -pLTMP. -n24
1882: uuclean -d/usr/spool/uucp/STST -n72
1883: uuclean -d/usr/spool/uucp/TM. -pTM. -n72
1884: uuclean -d/usr/spool/uucp/XTMP -n72
1885: uuclean -d/usr/spool/uucp/X. -pX. -n$deadtime
1886: uuclean -d/usr/spool/uucp/C. -pC. -n$deadtime
1887: uuclean -d/usr/spool/uucp/D. -pD. -n$deadtime
1888: uuclean -d/usr/spool/uucp/D.`uuname -l` -pD. -n$deadtime
1889: uuclean -d/usr/spool/uucp/D.`uuname -l`X -pD. -n$deadtime
1890: .DE
1891: .IP
1892: In this example,
1893: Audit files, Lock files, System Status files, temp files, and \fIuuxqt\fP
1894: output files are cleaned up every 72 hours (3 days).
1895: (\fBLTMP.\fP files are temporary files created by the lock mechanism;
1896: they are rarely around for more than a few seconds.
1897: Note, the above assumes that the
1898: .B LCK
1899: subdirectory is being used.)
1900: All normal data files are cleaned up every 24 * 7 hours, or every 7 days.
1901: .IP -
1902: Shuffle the log files.
1903: At the very least, LOGFILE should be moved to LOGFILE.old, and SYSLOG moved
1904: to SYSLOG.old.
1905: Busy sites may want to use \fIcompress\fP(1) to squeeze down the old files.
1906: .IP -
1907: Use \fIfind\fP(1) to clean up the
1908: .B /usr/spool/uucppublic
1909: directory.
1910: If left unattended, garbage will gradually accumulate there until it fills
1911: the file system.
1912: .RE
1913: .SH
1914: Weekly
1915: .LP
1916: Small sites with very little traffic may chose to shuffle the log files once
1917: per week, instead of once per day.
1918: The weekly script should, like the daily script, be run early in the morning.
1919: .\"===========================================================================
1920: .NH 2
1921: Connecting new systems
1922: .LP
1923: When first connecting a new machine to a \*(Uu network,
1924: it is useful to try and establish a connection with
1925: \fItip\fR or \fIcu\fR first.
1926: The \*(Uu administrator will quickly become aware of any special facilities
1927: that are going to be required,
1928: for example:
1929: What lines and modems are to be used?
1930: Is the connection through different hardware and carriers?
1931: Does the remote system care about parity?
1932: What speed lines are being used and do they cycle through several speeds?
1933: Is there a line switch front end that will require special login dialogue in
1934: \fBL.sys\fP?
1935: .LP
1936: Once a successful login is achieved ``by hand,'' the administrator should
1937: have enough information to allow the correct setup of the \fIcontrol\fR files
1938: in
1939: .B/usr/lib/uucp.
1940: .LP
1941: The \*(Uu administrator should then
1942: negotiate with the remote site's \*(Uu administrator
1943: as to who (if anyone) will do polling and when.
1944: Both administrators must set up the relevant accounts and passwords.
1945: The local administrator should
1946: decide on what permissions and security precautions are to be observed.
1947: Testing time and facilities will need to be arranged
1948: to complete initial connection testing between the systems.
1949: .\"============================================================================
1950: .NH 2
1951: Miscellaneous Security Issues
1952: .LP
1953: The \*(Uu system, left unrestricted,
1954: will let any outside user execute any commands
1955: and copy any files that are accessible
1956: to the
1957: .B uucp
1958: login user.
1959: It is up to the individual sites to be aware of this and
1960: apply the protections that they feel are necessary.
1961: .PP
1962: There are several security features available aside from the
1963: normal file mode protections.
1964: These must be set up by the installer of the
1965: \*(Uu
1966: system.
1967: .IP - 3
1968: The login for uucp does not get a standard shell.
1969: Instead,
1970: .I uucico
1971: is started.
1972: Therefore, the only work that can be done is through
1973: .I uucico .
1974: .IP -
1975: A path check is done on file names that are to be sent
1976: or received.
1977: .I USERFILE
1978: supplies the information for these checks.
1979: .I USERFILE
1980: can also be set up to require call-back
1981: for certain login-ids.
1982: (See the description of
1983: .I USERFILE
1984: above.)
1985: .IP -
1986: A conversation sequence count can be set up so
1987: that the called system
1988: can be more confident that the caller
1989: is who he says he is.
1990: .IP -
1991: .I Uuxqt
1992: is restricted via the
1993: .I L.cmds
1994: file to a small list of commands that it
1995: will execute.
1996: A ``PATH'' shell statement is prepended to the command
1997: line as specified in the
1998: .I L.cmds
1999: file.
2000: The administrator may modify the list or remove the
2001: restrictions as desired.
2002: .IP -
2003: All the \*( utilities except \fIuudecode\fP, \fIuuencode\fP,
2004: and \fIuusend\fP should be owned by the
2005: .B uucp
2006: login with the ``setuid'' bit set and only execute
2007: permissions (e.g. mode 04111).
2008: This will prevent outsiders from modifying the programs
2009: to get at a standard shell with a
2010: .B uucp
2011: login.
2012: Optionally, the utilities may belong to group \fBdaemon\fP and be given
2013: ``setgid'' permissions (mode 06111).
2014: \fIUuxqt\fP should only permit other \*(Uu programs to execute it;
2015: its mode should be 04100 or 06110.
2016: .IP -
2017: The \fIcontrol\fP files \fIL.sys\fP, \fIUSERFILE\fP, and \fISQFILE\fP
2018: contain highly sensitive information.
2019: They should be owned by the
2020: .B uucp
2021: login, with read and write permission granted only to the owner (mode 0600).
2022: .\"===========================================================================
2023: .\" SECTION 7: UUCP SOURCE INSTALLATION
2024: .\"===========================================================================
2025: .ne 5
2026: .NH
2027: INSTALLING THE \*(UU SYSTEM
2028: .PP
2029: The source for the \*(UU system resides in the
2030: .B /usr/src/usr.bin/uucp
2031: directory.
2032: The README file includes complete instructions on how to rebuild the
2033: \*(Uu system from source.
2034: .LP
2035: For most environments, only two files will need to be modified:
2036: .B uucp.h
2037: includes a large number of tunable system-dependent parameters,
2038: including operating system type, devices to be supported,
2039: and a variety of optional features.
2040: The
2041: .B Makefile
2042: may also have to be modified,
2043: particularly if you chose to keep certain files in different
2044: directories from usual.
2045: .\"===========================================================================
2046: .\" SECTION 8: ACKNOWLEDGMENTS
2047: .\"===========================================================================
2048: .ne 5
2049: .NH
2050: ACKNOWLEDGEMENTS
2051: .PP
2052: 4.3BSD UUCP was a group development effort, involving the contributed work
2053: of over one hundred members of the USENET community.
2054: We're extremely grateful to them all.
2055: .LP
2056: Special thanks go to the following individuals, whose contributions were
2057: especially valuable:
2058: .RS
2059: .IP - 2
2060: Rick Adams (Center for Seismic Studies) coordinated the 4.3BSD UUCP release,
2061: incorporating (and often correcting) hundreds of bug fixes that
2062: were posted on the USENET and mailed to him directly.
2063: Rick also managed to find time to add many enhancements
2064: and corrections of his own.
2065: .IP -
2066: Tom Truscott (Research Triangle Institute) and Bob Gray (then with
2067: PAR Tech Corp, now at Univ of Colorado)
2068: coordinated the 4.2BSD UUCP release, which was also a group effort.
2069: Tom has continued to provide enhancements and fixes in 4.3BSD.
2070: .IP -
2071: Guy Harris (then with Computer Consoles, Inc., now with Sun Microsystems)
2072: contributed many general bug fixes;
2073: in particular, he was the first to isolate the infamous 4.2BSD ``TIMEOUT'' bug.
2074: .IP -
2075: Lou Salkind (New York University) wrote the \fIuuq\fP utility.
2076: .IP -
2077: James Bloom (U.C. Berkeley) isolated a major
2078: day-one bug in the \fBg\fP-protocol driver
2079: that had eluded many people's attempts to squash it.
2080: .IP -
2081: Piet Beertema (Centrum voor Wiskunde en Informatica, Amsterdam) wrote the
2082: \fBf\fP-protocol to support ``mostly error-free links'';
2083: Robert Elz (University of Melbourne) modified the protocol
2084: specifically for X.25/PAD.
2085: .IP -
2086: Peter Honeyman (Princeton) assisted Rick by providing information on the
2087: facilities provided in HoneyDanBer UUCP;
2088: Rick then added many HDB-compatibility features and HDB-like
2089: extensions to 4.3BSD UUCP.
2090: .IP -
2091: Ross Green (U.C. Berkeley) produced the first revision of this chapter,
2092: updating the aging Nowitz document to more closely reflect reality.
2093: .RE
2094: .LP
2095: Thanks again to everyone who contributed.
2096: Berkeley UUCP continues to be a product of its own users,
2097: and would not exist as it does today without them.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.