|
|
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: .\" @(#)USERFILE.5 6.2 (Berkeley) 6/23/90
6: .\"
7: .TH USERFILE 5 "June 23, 1990"
8: .UC 6
9: .SH NAME
10: USERFILE \- \s-1UUCP\s0 pathname permissions file
11: .SH DESCRIPTION
12: The
13: .I USERFILE
14: file specifies the file system directory trees that are accessible to
15: local users and to remote systems via \s-1UUCP\s0.
16: .PP
17: Each line in
18: .I USERFILE
19: is of the form:
20: .PP
21: [\fIloginname\fP]\fB,\fP[\fIsystem\fP] [ \fBc\fP ] \fIpathname\fP \c
22: [\fIpathname\fP] [\fIpathname\fP]
23: .PP
24: The first two items are separated by a comma; any number of spaces or
25: tabs may separate the remaining items.
26: Lines beginning with a `#' character are comments.
27: A trailing `\e' indicates that the next line
28: is a continuation of the current line.
29: .PP
30: .I Loginname
31: is a login (from
32: .IR /etc/passwd )
33: on the local machine.
34: .PP
35: .I System
36: is the name of a remote machine, the same name used in
37: .IR L.sys (5).
38: .PP
39: .I c
40: denotes the optional
41: .I callback
42: field.
43: If a \fBc\fP appears here, a remote machine that calls in will be told
44: that callback is requested, and the conversation will be terminated.
45: The local system will then immediately call the remote host back.
46: .PP
47: .I Pathname
48: is a pathname prefix that is permissible for this
49: .I login
50: and/or
51: .IR system .
52: .PP
53: When
54: .IR uucico (8C)
55: runs in master role or
56: .IR uucp (1C)
57: or
58: .IR uux (1C)
59: are run by local users, the permitted pathnames are those on the
60: first line with a
61: .I loginname
62: that matches the name of the user who executed the command.
63: If no such line exists, then the first line with a null (missing)
64: .I loginname
65: field is used.
66: (Beware:
67: .I uucico
68: is often run by the superuser or the \s-1UUCP\s0 administrator through
69: .IR cron (8).)
70: .PP
71: When
72: .I uucico
73: runs in slave role, the permitted pathnames are those on the
74: first line with a
75: .I system
76: field that matches the hostname of the remote machine.
77: If no such line exists, then the first line with a null (missing)
78: .I system
79: field is used.
80: .PP
81: .IR Uuxqt (8)
82: works differently; it knows neither a login name nor a hostname.
83: It accepts the pathnames on the first line that has a null
84: .I system
85: field.
86: (This is the same line that is used by
87: .I uucico
88: when it cannot match the remote machine's hostname.)
89: .PP
90: A line with both
91: .I loginname
92: and
93: .I system
94: null, for example
95: .IP
96: .B , /var/spool/uucppublic
97: .PP
98: can be used to conveniently specify the paths for both "no match" cases
99: if lines earlier in
100: .I USERFILE
101: did not define them.
102: (This differs from older Berkeley and all USG versions, where each case
103: must be individually specified.
104: If neither case is defined earlier,
105: a "null" line only defines the "unknown login" case.)
106: .PP
107: To correctly process
108: .I loginname
109: on systems that assign several logins per UID,
110: the following strategy is used to determine the current
111: .IR loginname :
112: .TP
113: 1)
114: If the process is attached to a terminal, a login entry exists in
115: .IR /var/run/utmp ,
116: and the UID for the
117: .I utmp
118: name matches the current real UID, then
119: .IR loginname
120: is set to the
121: .I utmp
122: name.
123: .TP
124: 2)
125: If the
126: .B USER
127: environment variable is defined and the UID for this name matches
128: the current real UID, then
129: .IR loginname
130: is set to the name in
131: .BR USER .
132: .TP
133: 3)
134: If both of the above fail, call
135: .IR getpwuid (3)
136: to fetch the first name in
137: .I /etc/passwd
138: that matches the real UID.
139: .TP
140: 4)
141: If all of the above fail, the utility aborts.
142: .SH FILES
143: .ta \w'/usr/lib/uucp/UUAIDS/USERFILE 'u
144: .nf
145: /usr/lib/uucp/USERFILE
146: /usr/lib/uucp/UUAIDS/USERFILE USERFILE example
147: .fi
148: .SH SEE ALSO
149: uucp(1C), uux(1C), L.cmds(5), L.sys(5), uucico(8C), uuxqt(8C)
150: .SH NOTES
151: The \s-1UUCP\s0 utilities
152: .RI ( uucico ,
153: .IR uucp ,
154: .IR uux ,
155: and
156: .IR uuxqt )
157: always have access to the \s-1UUCP\s0 spool files in
158: .IR /var/spool/uucp ,
159: regardless of pathnames in
160: .IR USERFILE .
161: .PP
162: If
163: .B uucp
164: is listed in
165: .IR L.cmds (5),
166: then a remote system will execute
167: .I uucp
168: on the local system with the
169: .I USERFILE
170: privileges for its
171: .IR login ,
172: not its hostname.
173: .PP
174: .I Uucico
175: freely switches between master and slave roles during the course of a
176: conversation, regardless of the role it was started with.
177: This affects how
178: .I USERFILE
179: is interpreted.
180: .SH WARNING
181: .I USERFILE
182: restricts access only on strings that the \s-1UUCP\s0 utilities identify
183: as being pathnames.
184: If the wrong holes are left in other \s-1UUCP\s0 control files (notably
185: .IR L.cmds ),
186: it can be easy for an intruder to open files anywhere in the file system.
187: Arguments to
188: .IR uucp (1C)
189: are safe, since it assumes all of its non-option arguments are files.
190: .IR Uux (1C)
191: cannot make such assumptions; hence, it is more dangerous.
192: .SH BUGS
193: The
194: .I "\s-1UUCP\s0 Implementation Description"
195: explicitly states that all remote login names must be listed in
196: .IR USERFILE .
197: This requirement is not enforced by Berkeley \s-1UUCP\s0, although it is
198: by USG \s-1UUCP\s0.
199: .PP
200: Early versions of 4.2BSD
201: .IR uuxqt (8)
202: erroneously check \s-1UUCP\s0 spool files against the
203: .I USERFILE
204: pathname permissions.
205: Hence, on these systems it is necessary to specify
206: .I /var/spool/uucp
207: as a valid path on the
208: .I USERFILE
209: line used by
210: .IR uuxqt .
211: Otherwise, all
212: .IR uux (1C)
213: requests are rejected with a "PERMISSION DENIED" message.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.