Commit | Line | Data |
---|---|---|
69cf06cd C |
1 | .TL |
2 | Setting up the Net | |
3 | .AU | |
4 | Tom Truscott | |
5 | .AI | |
6 | Duke University | |
7 | (now at the Research Triangle Institute, NC) | |
8 | January 1980 | |
9 | (revised 1983 to better reflect reality) | |
10 | .SH | |
11 | Installing files and Programs. | |
12 | .PP | |
13 | This paper describes how to get the system named "xyz" on the uucp net. | |
14 | If you are on the net, stop reading! | |
15 | In chosing your system name, keep it short (no more than 7 characters long) | |
16 | and make it specific. | |
17 | That is, 'physics' is a poor uucp name! | |
18 | The University of California at Berkeley names their machines | |
19 | ucbvax, ucbcad, ucbmone, etc. | |
20 | A standard Seventh Edition | |
21 | .UX | |
22 | system is assumed. | |
23 | [Yup, this is ancient! I have deleted useless paragraphs -- trt] | |
24 | The v7 C compiler MUST be used to recompile uucp; | |
25 | the Phototypesetter version fails. | |
26 | It is necessary to compile and install the mail, uucp, and news programs. | |
27 | In what follows, "/bin/..." can be replaced by "/usr/bin/...". | |
28 | .SH | |
29 | ||
30 | .PP | |
31 | Ignore this section if you machine already has a network | |
32 | mail program in place. | |
33 | First, you must tell your machine its name. | |
34 | Modern versions of UNIX use gethostname(II) or uname(II). | |
35 | Ancient versions use include files. | |
36 | If you are in the dark ages, edit /usr/include/whoami.h | |
37 | and change the system name to xyz. | |
38 | Do the same to /usr/include/ident.h | |
39 | (not currently used, by the way). | |
40 | Then recompile mail: | |
41 | .DS | |
42 | cd /usr/src/cmd | |
43 | cmake mail | |
44 | .DE | |
45 | and copy it to /bin. | |
46 | It should be setuid to root. | |
47 | The network uses a restricted version of mail, | |
48 | which is actually mail but invoked with a different name: | |
49 | .DS | |
50 | ln /bin/mail /bin/rmail | |
51 | .DE | |
52 | Mail should now be ready for the net. | |
53 | A newer version of mail, called Mail, should be used if you have it. | |
54 | It invokes a mail delivery program called delivermail | |
55 | or the newer one called sendmail. | |
56 | .SH | |
57 | UUCP | |
58 | .PP | |
59 | Read the documents on uucp and uucp implementation in the | |
60 | .I | |
61 | .UX | |
62 | Programmer's Manual. | |
63 | .R | |
64 | Also read the manual pages for uucp and uux. | |
65 | .NH 1 | |
66 | Getting ready to install uucp | |
67 | .PP | |
68 | Edit /etc/passwd to add the user "uucp" to your system. | |
69 | Uucp should have unique user and group ids (for security). | |
70 | Duke's uucp and daemon have the same group id, | |
71 | so they can both access /dev/dn? | |
72 | which is not accessible by "others." | |
73 | Uucp will own the directories and other files of the uucp system. | |
74 | Actually, it is nice to also add the user "UUCP" as a synonym for "uucp", | |
75 | and put "UUCP" earlier in /etc/passwd. | |
76 | That way uucp will identified as UUCP in mail messages, etc., | |
77 | which highlights the fact that the messages are machine generated. | |
78 | Here are typical lines: | |
79 | .DS L | |
80 | UUCP:iPkI/ZUX3YX2Y:4:19::/usr/spool/uucppublic:/usr/lib/uucp/uucico | |
81 | uucp:iPkI/ZUX3YX2Y:4:19::/usr/spool/uucppublic:/usr/lib/uucp/uucico | |
82 | .DE | |
83 | .NH 1 | |
84 | Installing uucp programs | |
85 | .PP | |
86 | To install uucp, read the INSTALL file in the uucp directory | |
87 | and follow the instructions. | |
88 | It references other documentation, which should also be read. | |
89 | .NH 1 | |
90 | Files in /usr/lib/uucp | |
91 | .PP | |
92 | All of these files should have the uid and gid of uucp, | |
93 | and should not be readable (or writable) by others. | |
94 | The files "L-devices" and "L-dialcodes" | |
95 | are needed only if xyz calls other systems. | |
96 | The file formats are described in the documentation | |
97 | and are straightforward. | |
98 | The USERFILE file should have one line for each system which calls xyz: | |
99 | .DS | |
100 | Uduke,duke /usr/spool/uucppublic | |
101 | ,xyz / | |
102 | .DE | |
103 | The first line of the sample USERFILE indicates | |
104 | that the duke system uses login name Uduke | |
105 | and can access the public directory. | |
106 | Here is a typical "Uduke" line in /etc/passwd: | |
107 | .DS L | |
108 | Uduke:PSB8EZ5w2tQ4I:4:19::/usr/spool/uucppublic:/usr/lib/uucp/uucico | |
109 | .DE | |
110 | This line differs from that for uucp | |
111 | only in having a different login name and password. | |
112 | The last line of USERFILE should be ",xyz /", | |
113 | which permits local users but not remote systems | |
114 | to access anything on xyz. | |
115 | [Actually, USERFILE is a real botch. If you want security, | |
116 | never given anyone permission from '/'.] | |
117 | .PP | |
118 | The file L.sys has a line for each system | |
119 | with which xyz communicates. | |
120 | If xyz DOES NOT place calls to Duke | |
121 | then the L.sys line for Duke might be: | |
122 | .DS | |
123 | duke None ACU 300 123-4567 ogin Uxyz ssword fooha | |
124 | .DE | |
125 | This line indicates that xyz should never ("None") call Duke. | |
126 | If xyz DOES place calls to Duke | |
127 | then the line must be altered to so indicate. | |
128 | The documentation explains that case fairly well. | |
129 | .NH 1 | |
130 | Getting it running | |
131 | .PP | |
132 | Uucp is now ready for execution. | |
133 | If Duke is to call xyz, | |
134 | the xyz system can request that Duke send mail | |
135 | to test its operation. | |
136 | /usr/spool/uucp/LOGFILE, SYSLOG, and ERRLOG | |
137 | are useful logs of uucp activity. | |
138 | If uucp does not work, and the problems cannot be resolved, | |
139 | xyz could give Duke another login on xyz | |
140 | so someone here can poke around | |
141 | and see what the problem might be. | |
142 | The login should have the same uid and gid as uucp | |
143 | but without a uucico "shell". | |
144 | .PP | |
145 | If xyz can place calls to another system, | |
146 | a good test is to try to place the call. | |
147 | Suppose xyz has both a call-out and a call-in line. | |
148 | Then an entry for the mythical system "foo" | |
149 | can be put in the L.sys and USERFILE files, | |
150 | and xyz can call itself as follows: | |
151 | .DS | |
152 | echo "test 1" | mail foo!root | |
153 | echo "test 2" | mail foo!xyz!root | |
154 | echo "test 3" | mail foo!foo!root | |
155 | .DE | |
156 | Mail sent from system xyz to itself | |
157 | causes a local invocation of mail. | |
158 | Mail sent to the mythical system "foo" will, | |
159 | however, place a call to send the mail. | |
160 | Uucp will complain about locking, | |
161 | and shell metacharacters may not work, | |
162 | but the communication should still succeed. | |
163 | Even if xyz has only a call-in or call-out unit | |
164 | it may be possible to fake the other one | |
165 | by putting a null modem between the two lines. | |
166 | [Unfortunately, the newest version of uucp | |
167 | botches loop testing fairly badly. | |
168 | But you can observe it successful connect.] | |
169 | .PP | |
170 | Also helpful is use of the "-x" debugging option. | |
171 | The debugging information produced by | |
172 | this blatant security hole | |
173 | is truly a wonder to behold. | |
174 | When it is in effect, the /usr/spool/uucp/AUDIT | |
175 | file at the remote end will also collect debugging information. | |
176 | .NH 1 | |
177 | Cleaning up after uucp | |
178 | .PP | |
179 | Uucp will run okay without any cleanup; | |
180 | however, the uucp files can become immense. | |
181 | Duke runs several shell files via cron(8). | |
182 | These are in uuaids/uu.*. | |
183 | Systems which call Duke should run the following script occasionally: | |
184 | .DS | |
185 | /usr/lib/uucp/uucico -r1 -sduke | |
186 | .DE | |
187 | Systems which call-out can | |
188 | request uucp to transmit waiting files: | |
189 | .DS | |
190 | /usr/lib/uucp/uucico -r1 | |
191 | .DE | |
192 | The standard version of cron runs with uid "daemon" | |
193 | which may not be able to run the cleanup or uucico scripts. | |
194 | The scripts could be run via at(1), | |
195 | or you could remove the "setuid(1);" at the start of cron. | |
196 | Then cron gives superuser privileges to its children. | |
197 | As a precaution, we run a program | |
198 | which does a setuid to uucp before invoking the scripts. | |
199 | .NH 1 | |
200 | Obscure problems that can happen | |
201 | .PP | |
202 | When uucp logs in, it is greeted (in standard V7 systems) | |
203 | with the message of the day, "you have mail.", and so forth. | |
204 | Sometimes these messages cause uucp to fail. | |
205 | One cure is for login to suppress the messages | |
206 | when the user has a non-standard shell (e.g. uucico). | |
207 | .PP | |
208 | If you have implemented your own tty handler, | |
209 | be sure it supports 8 bit RAW input and output. | |
210 | You should compare your own handler | |
211 | with that of the standard tty.c, | |
212 | and make sure the RAW mode execution is the same. | |
213 | [This version does not yet support 7 bit datapath.] | |
214 | .SH | |
215 | USING THE NET | |
216 | .PP | |
217 | The simplest and least error-prone use of the net | |
218 | is that of sending mail from one system to another. | |
219 | A user on xyz can send a letter to Duke as follows: | |
220 | .DS | |
221 | echo "xyz lives" | mail duke!root | |
222 | .DE | |
223 | A letter can be sent to unc as follows: | |
224 | .DS | |
225 | echo "xyz lives on" | mail duke!unc!root | |
226 | .DE | |
227 | Here are some local network enthusiasts: | |
228 | [I only kept this around for historical interest.] | |
229 | .TS | |
230 | l l l. | |
231 | duke!swd Steve Daniel C version of news | |
232 | duke!jte duke system administrator | |
233 | duke!trt Tom Truscott network enthusiast | |
234 | duke!unc!smb Steve Bellovin network news architecture | |
235 | duke!phs!dennis Dennis Rockwell V6/PWB UNIX enthusiast | |
236 | .TE | |
237 | .PP | |
238 | Uucp provides a convenient way | |
239 | to transfer files between systems. | |
240 | Files may be transferred by mailing them, | |
241 | but that can get annoying. | |
242 | Here are some hints for using uucp. | |
243 | .IP 1. | |
244 | By convention, the name "~uucp" may be used to access | |
245 | the public directory on any system. | |
246 | Thus, | |
247 | .ti +5 | |
248 | uucp -m -d x.c duke!~uucp/xyz/ | |
249 | .br | |
250 | copies the file x.c to the subdirectory xyz | |
251 | of Duke's public directory (/usr/spool/uucppublic). | |
252 | The "-m" option requests that mail be sent when x.c is transmitted. | |
253 | The "-d" option requests that the remote system | |
254 | create any directories that are needed | |
255 | (in this case, the subdirectory xyz). | |
256 | The final "/" in ".../xyz/" | |
257 | informs uucp that xyz is a directory and not an ordinary file. | |
258 | .IP 2. | |
259 | uucp -d -m x.c duke!unc!~uucp/xyz/ | |
260 | .br | |
261 | will not work since uucp cannot handle "duke!unc!". | |
262 | Uucp and uux work only between two systems; | |
263 | they do not handle a system-pathname sequence as does mail. | |
264 | [See uusend for a uucp-like multi-hop copy program.] | |
265 | .SH | |
266 | NEWS | |
267 | .PP | |
268 | You are not running the distributed bulletin board?! | |
269 | Poor innocent. Don't start. You can never go back. |