|
|
1.1 root 1:
2:
3:
4: USERFILE(5) 1990 USERFILE(5)
5:
6:
7:
8: NNAAMMEE
9: USERFILE - UUCP pathname permissions file
10:
11: DDEESSCCRRIIPPTTIIOONN
12: The _U_S_E_R_F_I_L_E file specifies the file system directory trees
13: that are accessible to local users and to remote systems via
14: UUCP.
15:
16: Each line in _U_S_E_R_F_I_L_E is of the form:
17:
18: [_l_o_g_i_n_n_a_m_e],,[_s_y_s_t_e_m] [ cc ] _p_a_t_h_n_a_m_e [_p_a_t_h_n_a_m_e] [_p_a_t_h_n_a_m_e]
19:
20: The first two items are separated by a comma; any number of
21: spaces or tabs may separate the remaining items. Lines
22: beginning with a `#' character are comments. A trailing `\'
23: indicates that the next line is a continuation of the
24: current line.
25:
26: _L_o_g_i_n_n_a_m_e is a login (from /_e_t_c/_p_a_s_s_w_d) on the local
27: machine.
28:
29: _S_y_s_t_e_m is the name of a remote machine, the same name used
30: in _L._s_y_s(5).
31:
32: _c denotes the optional _c_a_l_l_b_a_c_k field. If a cc appears here,
33: a remote machine that calls in will be told that callback is
34: requested, and the conversation will be terminated. The
35: local system will then immediately call the remote host
36: back.
37:
38: _P_a_t_h_n_a_m_e is a pathname prefix that is permissible for this
39: _l_o_g_i_n and/or _s_y_s_t_e_m.
40:
41: When _u_u_c_i_c_o(8C) runs in master role or _u_u_c_p(1C) or _u_u_x(1C)
42: are run by local users, the permitted pathnames are those on
43: the first line with a _l_o_g_i_n_n_a_m_e that matches the name of the
44: user who executed the command. If no such line exists, then
45: the first line with a null (missing) _l_o_g_i_n_n_a_m_e field is
46: used. (Beware: _u_u_c_i_c_o is often run by the superuser or the
47: UUCP administrator through _c_r_o_n(8).)
48:
49: When _u_u_c_i_c_o runs in slave role, the permitted pathnames are
50: those on the first line with a _s_y_s_t_e_m field that matches the
51: hostname of the remote machine. If no such line exists,
52: then the first line with a null (missing) _s_y_s_t_e_m field is
53: used.
54:
55: _U_u_x_q_t(8) works differently; it knows neither a login name
56: nor a hostname. It accepts the pathnames on the first line
57: that has a null _s_y_s_t_e_m field. (This is the same line that
58: is used by _u_u_c_i_c_o when it cannot match the remote machine's
59: hostname.)
60:
61:
62:
63: Printed 7/4/90 June 1
64:
65:
66:
67:
68:
69:
70: USERFILE(5) 1990 USERFILE(5)
71:
72:
73:
74: A line with both _l_o_g_i_n_n_a_m_e and _s_y_s_t_e_m null, for example
75:
76: ,, //vvaarr//ssppooooll//uuuuccppppuubblliicc
77:
78: can be used to conveniently specify the paths for both "no
79: match" cases if lines earlier in _U_S_E_R_F_I_L_E did not define
80: them. (This differs from older Berkeley and all USG ver-
81: sions, where each case must be individually specified. If
82: neither case is defined earlier, a "null" line only defines
83: the "unknown login" case.)
84:
85: To correctly process _l_o_g_i_n_n_a_m_e on systems that assign
86: several logins per UID, the following strategy is used to
87: determine the current _l_o_g_i_n_n_a_m_e:
88:
89: 1) If the process is attached to a terminal, a login entry
90: exists in /_v_a_r/_r_u_n/_u_t_m_p, and the UID for the _u_t_m_p name
91: matches the current real UID, then _l_o_g_i_n_n_a_m_e is set to
92: the _u_t_m_p name.
93:
94: 2) If the UUSSEERR environment variable is defined and the UID
95: for this name matches the current real UID, then _l_o_g_i_n_-
96: _n_a_m_e is set to the name in UUSSEERR.
97:
98: 3) If both of the above fail, call _g_e_t_p_w_u_i_d(3) to fetch
99: the first name in /_e_t_c/_p_a_s_s_w_d that matches the real
100: UID.
101:
102: 4) If all of the above fail, the utility aborts.
103:
104: FFIILLEESS
105: /usr/lib/uucp/USERFILE
106: /usr/lib/uucp/UUAIDS/USERFILE USERFILE example
107:
108: SSEEEE AALLSSOO
109: uucp(1C), uux(1C), L.cmds(5), L.sys(5), uucico(8C),
110: uuxqt(8C)
111:
112: NNOOTTEESS
113: The UUCP utilities (_u_u_c_i_c_o, _u_u_c_p, _u_u_x, and _u_u_x_q_t) always
114: have access to the UUCP spool files in /_v_a_r/_s_p_o_o_l/_u_u_c_p,
115: regardless of pathnames in _U_S_E_R_F_I_L_E.
116:
117: If uuuuccpp is listed in _L._c_m_d_s(5), then a remote system will
118: execute _u_u_c_p on the local system with the _U_S_E_R_F_I_L_E
119: privileges for its _l_o_g_i_n, not its hostname.
120:
121: _U_u_c_i_c_o freely switches between master and slave roles during
122: the course of a conversation, regardless of the role it was
123: started with. This affects how _U_S_E_R_F_I_L_E is interpreted.
124:
125:
126:
127:
128:
129: Printed 7/4/90 June 2
130:
131:
132:
133:
134:
135:
136: USERFILE(5) 1990 USERFILE(5)
137:
138:
139:
140: WWAARRNNIINNGG
141: _U_S_E_R_F_I_L_E restricts access only on strings that the UUCP
142: utilities identify as being pathnames. If the wrong holes
143: are left in other UUCP control files (notably _L._c_m_d_s), it
144: can be easy for an intruder to open files anywhere in the
145: file system. Arguments to _u_u_c_p(1C) are safe, since it
146: assumes all of its non-option arguments are files. _U_u_x(1C)
147: cannot make such assumptions; hence, it is more dangerous.
148:
149: BBUUGGSS
150: The _U_U_C_P _I_m_p_l_e_m_e_n_t_a_t_i_o_n _D_e_s_c_r_i_p_t_i_o_n explicitly states that
151: all remote login names must be listed in _U_S_E_R_F_I_L_E. This
152: requirement is not enforced by Berkeley UUCP, although it is
153: by USG UUCP.
154:
155: Early versions of 4.2BSD _u_u_x_q_t(8) erroneously check UUCP
156: spool files against the _U_S_E_R_F_I_L_E pathname permissions.
157: Hence, on these systems it is necessary to specify
158: /_v_a_r/_s_p_o_o_l/_u_u_c_p as a valid path on the _U_S_E_R_F_I_L_E line used by
159: _u_u_x_q_t. Otherwise, all _u_u_x(1C) requests are rejected with a
160: "PERMISSION DENIED" message.
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195: Printed 7/4/90 June 3
196:
197:
198:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.