|
|
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.