ftpaccess.5
上传用户:zibowangxu
上传日期:2007-01-04
资源大小:331k
文件大小:41k
源码类别:

Ftp客户端

开发平台:

Unix_Linux

  1. ."
  2. ." Copyright (c) 1999 WU-FTPD Development Group. 
  3. ." All rights reserved.
  4. ." 
  5. ." Portions Copyright (c) 1980, 1985, 1988, 1989, 1990, 1991, 1993, 1994 
  6. ." The Regents of the University of California.  Portions Copyright (c) 
  7. ." 1993, 1994 Washington University in Saint Louis.  Portions Copyright 
  8. ." (c) 1996, 1998 Berkeley Software Design, Inc.  Portions Copyright (c) 
  9. ." 1998 Sendmail, Inc.  Portions Copyright (c) 1983, 1995, 1996, 1997 Eric 
  10. ." P. Allman.  Portions Copyright (c) 1989 Massachusetts Institute of 
  11. ." Technology.  Portions Copyright (c) 1997 Stan Barber.  Portions 
  12. ." Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997 Free Software 
  13. ." Foundation, Inc.  Portions Copyright (c) 1997 Kent Landfield. 
  14. ."
  15. ." Use and distribution of this software and its source code are governed 
  16. ." by the terms and conditions of the WU-FTPD Software License ("LICENSE"). 
  17. ."
  18. ."     $Id: ftpaccess.5,v 1.22 1999/09/28 15:12:25 wuftpd Exp $
  19. ."
  20. .TH ftpaccess 5
  21. .SH Name
  22. ftpaccess - ftpd configuration file
  23. .SH Description
  24. The ftpaccess file is used to configure the operation of
  25. .BR ftpd(8) .
  26. .SH Access Capabilities
  27. .TP 0.5i
  28. .B autogroup <groupname> <class> [<class> ...]
  29. If an ANONYMOUS user is a member of any of <class>, the ftp server will
  30. perform a setegid() to <groupname>.  This allows access to
  31. group-and-owner-read-only files and directories to a particular class of
  32. anonymous users. <groupname> is a valid group from /etc/group (or wherever
  33. mechanism your
  34. .IR getgrent(2)
  35. library routine uses).
  36. .TP 0.5i
  37. .B class <class> <typelist> <addrglob> [<addrglob> ...]
  38. Define <class> of users, with source addresses of the form <addrglob>.
  39. Multiple members of <class> may be defined.  There may be multiple "class"
  40. commands listing additional members of the class.  If multiple "class"
  41. commands can apply to the current session, the first one listed in the
  42. access file is used.  Failing to define a valid class for a host will cause
  43. access to be denied.  <typelist> is a comma-separated list of any of the
  44. keywords "anonymous", "guest" and "real".  If the "real" keyword is
  45. included, the class can match users using FTP to access real accounts, and
  46. if the "anonymous" keyword is included the class can match users using
  47. anonymous FTP.  The "guest" keyword matches guest access accounts (see
  48. "guestgroup" for more information)
  49. <addrglob> may be a globbed domain name or a globbed numeric address.  It
  50. may also be the name of a file, starting with a slash ('/'), which contains
  51. additional address globs, as well as in the form address:netmask or
  52. address/cidr.
  53. Placing an exclamation (!) before an <addrglob> negates the test.  For
  54. example:
  55. .nf
  56.     class rmtuser real !*.example.com
  57. .fi
  58. will classify real users from outside the example.com domain as the class
  59. rmtuser.  Use care with this option.  Remember, the result of each test is
  60. OR'ed with other tests on the line.
  61. .TP 0.5i
  62. .B deny <addrglob> <message_file>
  63. Always deny access to host(s) matching <addrglob>.  <message_file> is
  64. displayed.  <addrglob> may be "!nameserved" to deny access to sites without
  65. a working nameserver.  It may also be the name of a file, starting with a
  66. slash ('/'), which contains additional address globs, as well as in the
  67. form address:netmask or address/cidr.
  68. .TP 0.5i
  69. .B guestgroup <groupname> [<groupname> ...]
  70. .TP 0.5i
  71. .B guestuser <username> [<username> ...]
  72. .TP 0.5i
  73. .B realgroup <groupname> [<groupname> ...]
  74. .TP 0.5i
  75. .B realuser <username> [<username> ...]
  76. For guestgroup, if a REAL user is a member of any of <groupname>, the
  77. session is set up exactly as with anonymous FTP.  In other words, a
  78. chroot() is done, and the user is no longer permitted to issue the USER and
  79. PASS commands.  <groupname> is a valid group from /etc/group (or whatever
  80. mechanism your
  81. .IR getgrent(3)
  82. library routine uses).
  83. The user's home directory must be properly set up, exactly as anonymous FTP
  84. would be.  The home directory field of the passwd entry is divided into two
  85. directories.  The first field is the root directory which will be the
  86. argument to the
  87. .IR chroot(2)
  88. call.  The second half is the user's home directory relative to the root
  89. directory.  The two halves are separated by a "/./".
  90. For example, in /etc/passwd, the real entry:
  91. .nf
  92.     guest1:<passwd>:100:92:Guest Account:/ftp/./incoming:/etc/ftponly
  93. .fi
  94. When guest1 successfully logs in, the ftp server will
  95. .BR chroot("/ftp")
  96. and then
  97. .BR chdir("/incoming") .
  98. The guest user will only be able to access the directory structure under
  99. .BR /ftp
  100. (which will look and act as / to guest1), just as an anonymous FTP user would.
  101. The group name may be specified by either name or numeric ID.  To use a
  102. numeric group ID, place a '%' before the number.  Ranges may be given.  Use
  103. an asterisk to mean all groups.
  104. guestuser works like guestgroup, except uses the user name (or numeric ID).
  105. realuser and realgroup have the same syntax, but reverse the effect of
  106. guestuser and guestgroup.  They allow real user access when the remote user
  107. would otherwise be determined a guest.
  108. For example:
  109. .nf
  110.     guestuser *
  111.     realgroup admin
  112. .fi
  113. causes all non-anonymous users to be treated as guest, with the sole
  114. exception of users in the admin group who are granted real user access.
  115. .TP 0.5i
  116. .B nice <nice-delta> [<class>]
  117. Adjust the process nice value of the ftpd server process by the indicated
  118. <nice-delta> value if the remote user is a member of the named <class>.  If
  119. <class> is not specified, then use <nice-delta> as the default adjustment
  120. to the ftpd server process nice value.  This default nice value adjustment
  121. is used to adjust the nice value of the server process only for those users
  122. who do not belong to any class for which a class-specific `nice' directive
  123. exists in the ftpaccess file.
  124. .TP 0.5i
  125. .B defumask <umask> [<class>]
  126. Set the umask applied to files created by daemon if the remote use is a
  127. member of the named class.  If <class> is not specified, then use the umask
  128. as the default for classes which do not have one specified.
  129. .TP 0.5i
  130. .B tcpwindow <size> [<class>]
  131. Set the TCP window size for the data connection.  This can be used to
  132. control network traffic.  For instance, slow PPP dialin links may need
  133. smaller TCP windows to speed up throughput.  If you don't know what this
  134. does, don't play with it.
  135. .TP 0.5i
  136. .B keepalive <yes|no>
  137. Set the TCP SO_KEEPALIVE option for data sockets.  This can be used to control
  138. network disconnect.  Yes: set it.  No: use system default (usually off).  You
  139. probably want to set this.
  140. .TP 0.5i
  141. .B timeout accept <seconds>
  142. .TP 0.5i
  143. .B timeout connect <seconds>
  144. .TP 0.5i
  145. .B timeout data <seconds>
  146. .TP 0.5i
  147. .B timeout idle <seconds>
  148. .TP 0.5i
  149. .B timeout maxidle <seconds>
  150. .TP 0.5i
  151. .B timeout RFC931 <seconds>
  152. Set various timeouts.
  153. Accept (default 120 seconds): how long the daemon will wait for an incoming
  154. (PASV) data connection.
  155. Connect (default 120 seconds): how long the daemon will wait attempting to
  156. establish an outgoing (PORT) data connection.  This effects the actual
  157. connetion attempt.  The daemon makes several attempts, sleeping a while
  158. between each, before completely giving up.
  159. Data (default 1200 seconds): how long the daemon will wait for some
  160. activity on the data connection.  You should keep this long because the
  161. remote client may have a slow link and there can be quite a bit of data
  162. queued for the client.
  163. Idle (default 900 seconds): how long the daemon will wait for the next
  164. command.  The default can also be overridden by the command line -a option.
  165. This access clause overrides both.
  166. MaxIdle (default 1200 seconds): the SITE IDLE command allows the remote
  167. client to establish a higher value for the idle timeout.  This sets the
  168. upper limit the client may request.  The default can also be overridden by
  169. the command line -A option.  This access clause overrides both.
  170. RFC931 (default 10 seconds): the maximum time the daemon allows for the
  171. entire RFC931 (AUTH/ident) conversation.  Setting this to zero (0)
  172. completely disables the daemon's use of this protocol.  The information
  173. obtained via RFC931 is recorded in the system logs and not actually used in
  174. any authentication.
  175. .TP 0.5i
  176. .B file-limit [<raw>] <in|out|total> <count> [<class>]
  177. Limit the number of data files a user in the given class may transfer.  The
  178. limit may be placed on files in, out or total.  If no class is specified,
  179. the limit is the default for classes which do not have a limit specified.
  180. The optional
  181. .B raw
  182. parameter applies the limit to the total traffic rather than just data
  183. files.
  184. .TP 0.5i
  185. .B byte-limit [<raw>] <in|out|total> <count> [<class>]
  186. Limit the number of data bytes a user in the given class may transfer.  The
  187. limit may be place on bytes in, out or total.  If no class is specified,
  188. the limit is the default for classes which do not have a limit specified.
  189. Note that this limit will preventtransfers once it has been exceeded, but
  190. will not terminate a transfer in progress.  The optional
  191. .B raw
  192. parameter applies the limit to total traffic rather than just data files.
  193. .TP 0.5i
  194. .B limit-time {*|anonymous|guest} <minutes>
  195. Limit the total time a session can take.  By default, there is no limit.
  196. Real users are never limited.
  197. .TP 0.5i
  198. .B guestserver [<hostname>]
  199. Controls which hosts may be used for anonymous or guest access.  If used
  200. without <hostname>, denies all guest or anonymous access to this site.
  201. More than one <hostname> may be specified.  Guest and anonymous access will
  202. only be allowed on the named machines.  If access is denied, the user will
  203. be asked to use the first <hostname> listed.
  204. .TP 0.5i
  205. .B limit <class> <n> <times> <message_file>
  206. Limit <class> to <n> users at times <times>, displaying <message_file> if
  207. the user is denied access.  Limit check is performed at login time only.
  208. If multiple "limit" commands can apply to the current session, the first
  209. applicable one is used.  Failing to define a valid limit, or a limit of -1,
  210. is equivalent to unlimited. <times> is in same format as the times in the
  211. UUCP L.sys file.
  212. .TP 0.5i
  213. .B noretrieve [absolute|relative] [class=<classname>] ... [-] <filename> <filename> ...
  214. Always deny retrieve-ability of these files.  If the files are a path
  215. specification (i.e. begins with '/' character) then only those files are marked
  216. un-gettable, otherwise all files with matching the filename are refused
  217. transfer.  For example:
  218. .nf
  219.     noretrieve /etc/passwd core
  220. .fi
  221. specifies no one will be able to get the file /etc/passwd whereas they will
  222. be allowed to transfer a file `passwd' if it is not in /etc. On the other
  223. hand no one will be able to get files named `core' wherever they are.
  224. Directory specifications mark all files and sub-directories in the named
  225. directory un-gettable.  The <filename> may be specified as a file glob.  For
  226. example:
  227. .nf
  228.     noretrieve /etc /home/*/.htaccess
  229. .fi
  230. specified no files in /etc or any of its sub-directories may be retrieved.
  231. Also, no files named '.htaccess' anywhere under the /home directory may be
  232. retrieved.
  233. The optional first parameter selects whether names are intepreted as
  234. absolute or relative to the current chroot'd environment.  The default is
  235. to intepret names beginning with a slash as absolute.
  236. The noretrieve restrictions may be placed upon members of particular
  237. classes.  If any class= is specified the named files are only
  238. non-retrievable if the current user is a member of any of the given
  239. classes.
  240. .TP 0.5i
  241. .B allow-retrieve [absolute|relative] [class=<classname>]... [-] <filename> ...
  242. Allows retrieval of files which would otherwise be denied by noretrieve.
  243. .TP 0.5i
  244. .B loginfails <number>
  245. After <number> login failures, log a "repeated login failures" message and
  246. terminate the FTP connection.  Default value is 5.
  247. .TP 0.5i
  248. .B private <yes|no>
  249. After user logs in, the SITE GROUP and SITE GPASS commands may be used to
  250. specify an enhanced access group and associated password.  If the group
  251. name and password are valid, the user becomes (via setegid()) a member of
  252. the group specified in the group access file /etc/ftpgroups.
  253. The format of the group access file is:
  254. .nf
  255.     access_group_name:encrypted_password:real_group_name
  256. .fi
  257. where access_group_name is an arbitrary (alphanumeric + punctuation)
  258. string.  encrypted_password is the password encrypted via
  259. .IR crypt(3) ,
  260. exactly like in
  261. .BR /etc/passwd .
  262. .B real_group_name
  263. is the name of a valid group listed in
  264. .BR /etc/group .
  265. NOTE: For this option to work for anonymous FTP users, the ftp server must
  266. keep
  267. .B /etc/group
  268. permanently open and the group access file is loaded into memory.  This
  269. means that (1) the ftp server now has an additional file descriptor open,
  270. and (2) the necessary passwords and access privileges granted to users via
  271. SITE GROUP will be static for the duration of an FTP session.  If you have
  272. an urgent need to change the access groups and/or passwords *NOW*, you just
  273. kill all of the running FTP servers.
  274. .SH Informational Capabilities
  275. .TP 0.5i
  276. .B greeting full|brief|terse
  277. .TP 0.5i
  278. .B greeting text <message>
  279. Allows you to control how much information is given out before the remote
  280. user logs in.  'greeting full' is the default and shows the hostname and
  281. daemon version.  'greeting brief' whose shows the hostname.  'greeting
  282. terse' simply says "FTP server ready."  Although full is the default, brief
  283. is recommended.
  284. The 'text' form allows you to specify any greeting message you desire.
  285. <message> can be any string; whitespace (spaces and tabs) is converted to a
  286. single space.
  287. .TP 0.5i
  288. .B banner <path>
  289. Works similarly to the message command, except that the banner is displayed
  290. before the user enters the username/password.  The <path> is relative to
  291. the real system root, not the base of the anonymous FTP directory.
  292. .B WARNING:
  293. use of this command can completely prevent non-compliant FTP clients from
  294. making use of the FTP server.  Not all clients can handle multi-line
  295. responses (which is how the banner is displayed).
  296. .TP 0.5i
  297. .B hostname <some.host.name>
  298. Defines the default host name of the ftp server.  This string will be
  299. printed on the greeting message and every time the %L magic cookie is used.
  300. The host name for virtual servers overrides this value.  If not specified,
  301. the default host name for the local machine is used.
  302. .TP 0.5i
  303. .B email <name>
  304. Defines the email address of the ftp archive maintainer.  This string will
  305. be printed every time the %E magic cookie is used.
  306. .TP 0.5i
  307. .B message <path> {<when> {<class> ...}}
  308. Define a file with <path> such that ftpd will display the contents of the
  309. file to the user login time or upon using the change working directory
  310. command.  The <when> parameter may be "LOGIN" or "CWD=<dir>".  If <when> is
  311. "CWD=<dir>", <dir> specifies the new default directory which will trigger
  312. the notification.
  313. The optional <class> specification allows the message to be displayed only
  314. to members of a particular class.  More than one class may be specified.
  315. There can be "magic cookies" in the readme file which cause the ftp server
  316. to replace the cookie with a specified text string:
  317. .nf
  318.     %T      local time (form Thu Nov 15 17:12:42 1990)
  319.     %F      free space in partition of CWD (kbytes)
  320.               [not supported on all systems]
  321.     %C      current working directory
  322.     %E      the maintainer's email address as defined in ftpaccess
  323.     %R      remote host name
  324.     %L      local host name
  325.     %u      username as determined via RFC931 authentication
  326.     %U      username given at login time
  327.     %M      maximum allowed number of users in this class
  328.     %N      current number of users in this class
  329.     %B      absolute limit on disk blocks allocated
  330.     %b      preferred limit on disk blocks
  331.     %Q      current block count
  332.     %I      maximum number of allocated inodes (+1)
  333.     %i      preferred inode limit
  334.     %q      current number of allocated inodes
  335.     %H      time limit for excessive disk use
  336.     %h      time limit for excessive files
  337. .fi
  338. The message will only be displayed once to avoid annoying the user.
  339. Remember that when MESSAGEs are triggered by an anonymous FTP user, the
  340. <path> must be relative to the base of the anonymous FTP directory tree.
  341. .TP 0.5i
  342. .B readme <path> {<when> {<class>}}
  343. Define a file with <path> such that ftpd will notify user at login time or
  344. upon using the change working directory command that the file exists and
  345. was modified on such-and-such date.  The <when> parameter may be "LOGIN" or
  346. "CWD=<dir>".  If <when> is "CWD=<dir>", <dir> specifies the new default
  347. directory which will trigger the notification.  The message will only be
  348. displayed once, to avoid bothering users.  Remember that when README
  349. messages are triggered by an anonymous FTP user, the <path> must be
  350. relative to the base of the anonymous FTP directory tree.
  351. The optional <class> specification allows the message to be displayed only
  352. to members of a particular class.  More than one class may be specified.
  353. .SH Logging Capabilities
  354. .TP 0.5i
  355. .B log commands <typelist>
  356. Enables logging of individual commands by users.  <typelist> is a
  357. comma-separated list of any of the keywords "anonymous", "guest" and
  358. "real".  If the "real" keyword is included, logging will be done for users
  359. using FTP to access real accounts, and if the "anonymous" keyword is
  360. included logging will done for users using anonymous FTP.  The "guest"
  361. keyword matches guest access accounts (see "guestgroup" for more
  362. information).
  363. .TP 0.5i
  364. .B log transfers <typelist> <directions>
  365. Enables logging of file transfers for either real or anonymous FTP users.
  366. Logging of transfers TO the server (incoming) can be enabled separately
  367. from transfers FROM the server (outbound).  <typelist> is a comma-separated
  368. list of any of the keywords "anonymous", "guest" and "real".  If the "real"
  369. keyword is included, logging will be done for users using FTP to access
  370. real accounts, and if the "anonymous" keyword is included logging will done
  371. for users using anonymous FTP. The "guest" keyword matches guest access
  372. accounts (see "guestgroup" for more information).  <directions> is a
  373. comma-separated list of any of the two keywords "inbound" and "outbound",
  374. and will respectively cause transfers to be logged for files sent to the
  375. server and sent from the server.
  376. .TP 0.5i
  377. .B log security <typelist>
  378. Enables logging of violations of security rules (noretrieve, .notar, ...)
  379. for real, guest and/or anonymous users.  <typelist> is a comma-separated
  380. list of any of the keywords "anonymous", "guest" and "real".  If the "real"
  381. keyword is included, logging will be done for users using FTP to access
  382. real accounts, and if the "anonymous" keyword is included logging will done
  383. for users using anonymous FTP. The "guest" keyword matches guest access
  384. accounts (see "guestgroup" for more information).
  385. .TP 0.5i
  386. .B log syslog
  387. .TP 0.5i
  388. .B log syslog+xferlog
  389. Redirects the logging messages for incoming and outgoing transfers to
  390. syslog.  Without this option the messages are written to xferlog.
  391. syslog+xferlog sends the transfer log messages to both the system log and
  392. the xferlog.
  393. .SH Miscellaneous Capabilities
  394. .TP 0.5i
  395. .B alias <string> <dir>
  396. Defines an alias, <string>, for a directory.  Can be used to add the
  397. concept of logical directories.
  398. For example:
  399. .nf
  400.     alias rfc: /pub/doc/rfc
  401. .fi
  402. would allow the user to access /pub/doc/rfc from any directory by the
  403. command "cd rfc:".  Aliases only apply to the cd command.
  404. .TP 0.5i
  405. .B cdpath <dir>
  406. Defines an entry in the cdpath. This defines a search path that is used
  407. when changing directories.
  408. For example:
  409. .nf
  410.     cdpath /pub/packages
  411.     cdpath /.aliases
  412. .fi
  413. would allow the user to cd into any directory directly under /pub/packages
  414. or /.aliases directories. The search path is defined by the order the lines
  415. appear in the ftpaccess file.
  416. If the user were to give the command:
  417. .nf
  418.     cd foo
  419. .fi
  420. the directory will be searched for in the following order:
  421. .nf
  422.     ./foo
  423.     an alias called "foo"
  424.     /pub/packages/foo
  425.     /.aliases/foo
  426. .fi
  427. The cd path is only available with the cd command. If you have a large
  428. number of aliases you might want to set up an aliases directory with links
  429. to all of the areas you wish to make available to users.
  430. .TP 0.5i
  431. .B compress <yes|no> <classglob> [<classglob> ...]
  432. .TP 0.5i
  433. .B tar <yes|no> <classglob> [<classglob> ...]
  434. Enables compress or tar capabilities for any class matching any of
  435. <classglob>.  The actual conversions are defined in the external file
  436. FTPLIB/ftpconversions.
  437. .TP 0.5i
  438. .B shutdown <path>
  439. If the file pointed to by <path> exists, the server will check the file
  440. regularly to see if the server is going to be shut down.  If a shutdown is
  441. planned, the user is notified, new connections are denied after a specified
  442. time before shutdown and current connections are dropped at a specified
  443. time before shutdown.  <path> points to a file structured as follows:
  444. .nf
  445.     <year> <month> <day> <hour> <minute> <deny_offset> <disc_offset>
  446.     <text>
  447. .fi
  448. where
  449. .nf
  450.     <year> is any year > 1970
  451.     <month> 0-11 <---- LOOK!
  452.     <hour> 0-23
  453.     <minute> 0-59
  454. .fi
  455. <deny_offset> and <disc_offset> are the offsets in HHMM format
  456. before the shutdown time that new connections will be denied and existing
  457. connections will be disconnected.
  458. <text> follows the normal rules for any message (see "message"), with the
  459. following additional magic cookies available:
  460. .nf
  461.     %s      time system is going to shut down
  462.     %r      time new connections will be denied
  463.     %d      time current connections will be dropped
  464. .fi
  465. all times are in the form: ddd MMM DD hh:mm:ss YYYY.  There can be only one
  466. "shutdown" command in the configuration file.
  467. The external program ftpshut(8) can be used to automate the process of
  468. generating this file.
  469. .TP 0.5i
  470. .B daemonaddress <address>
  471. If the value is not set, then the server will listen for connections on
  472. every IP addresses, otherwise it will only listen on the IP address
  473. specified.
  474. Use of this clause is discouraged.  It was added to support a single site's
  475. needs.  It will completely break virtual hosting and the syntax is likely
  476. to change in a future version of the daemon.
  477. .TP 0.5i
  478. .B virtual <address> <root|banner|logfile> <path>
  479. Enables the virtual ftp server capabilities. The <address> is the ip
  480. address of the virtual server. The second argument specifies that the
  481. <path> is either the path to the
  482. .B root
  483. of the filesystem for this virtual server, the
  484. .B banner
  485. presented to the user when connecting to this virtual server, or the
  486. .B logfile
  487. where transfers are recorded for this virtual server. If the
  488. .B logfile
  489. is not specified the default logfile will be used.  All other message
  490. files and permissions as well as any other settings in this file apply to
  491. all virtual servers.
  492. NOTE: Your operating system may not support this feature. It has been
  493. tested on BSD/OS, Solaris 2.X and Linux.
  494. The <address> may also be specified as the hostname rather than the IP
  495. number.  This is strongly discouraged since, if DNS is not available at the
  496. time the FTP session begins, the hostname will not be matched.
  497. .TP 0.5i
  498. .B virtual <address> <hostname|email> <string>
  499. Sets the hostname shown in the greeting message and STATus command, or the
  500. email address used in message files and on the HELP command, to the given
  501. <string>.
  502. .TP 0.5i
  503. .B virtual <address> allow <username> [<username> ...]
  504. .TP 0.5i
  505. .B virtual <address> deny <username> [<username> ...]
  506. Normally, real and guest users are not allowed to log in on the vitual
  507. server unless they are guests and chroot'd to the virtual root.  The users
  508. listed on the virtual allow line(s) will be granted access.  All users can
  509. be granted access by giving '*' as the username.  The virtual deny clauses
  510. are processed after the virtual allow clauses and are used to deny access
  511. to specific users when all users were allowed.
  512. .TP 0.5i
  513. .B virtual <address> private
  514. Normally, anonymous users are allowed to log in on the virtual server.
  515. This option denies them access.
  516. .TP 0.5i
  517. .B defaultserver deny <username> [<username> ...]
  518. .TP 0.5i
  519. .B defaultserver allow <username> [<username> ...]
  520. Normally, all users are allowed access to the default (non-virtual) FTP
  521. server.  Use defaultserver deny to revoke access for specific users;
  522. specify '*' to deny access to all users.  Specific users can then be
  523. allowed using defaultserver allow.
  524. .TP 0.5i
  525. .B defaultserver private
  526. Normally, anonymous users are allowed on the default (non-virtual) FTP
  527. server.  This statement disallows anonymous access.
  528. The virtual and defaultserver allow, deny and private clauses provide a
  529. means to control which users are allowed access on which FTP servers.
  530. .TP 0.5i
  531. .B passive address <externalip> <cidr>
  532. Allows control of the address reported in response to a PASV command.  When
  533. any control connection matching the
  534. .B <cidr>
  535. requests a passive data connection (PASV), the
  536. .B <externalip>
  537. address is reported.  NOTE: this does not change the address the daemone
  538. actually listens on, only the address reported to the client.  This feature
  539. allows the daemon to operate correctly behind IP-renumbering firewalls.
  540. For example:
  541. .nf
  542.     passive address 10.0.1.15   10.0.0.0/8
  543.     passive address 192.168.1.5 0.0.0.0/0
  544. .fi
  545. Clients connecting from the class-A network 10 will be told the passive
  546. connection is listening on IP-address 10.0.1.15 while all others will be
  547. told the connection is listening on 192.168.1.5
  548. Multiple passive addresses may be specified to handle complex, or
  549. multi-gatewayed, networks.
  550. .TP 0.5i
  551. .B passive ports <cidr> <min> <max>
  552. Allows control of the TCP port numbers which may be used for a passive data
  553. connection.  If the control connection matches the
  554. .B <cidr>
  555. a port in the range
  556. .B <min>
  557. to
  558. .B <max>
  559. will be randomly selected for the daemon to listen on.  This feature allows
  560. firewalls to limit the ports which remote clients may use to connect into
  561. the protected network.
  562. .B <cidr>
  563. is shorthand for an IP address in dotted-quad notation followed by a slash
  564. and the number of left-most bits which represent the network address (as
  565. opposed to the machine address).  For example, if you're using the reserved
  566. class-A network 10, instead of a netmask of 255.0.0.0 use a CIDR of /8 as
  567. in 10.0.0.0/8 to represent your network.
  568. .TP 0.5i
  569. .B pasv-allow <class> [<addrglob> ...]
  570. .TP 0.5i
  571. .B port-allow <class> [<addrglob> ...]
  572. Normally, the daemon does not allow a PORT command to specify an address
  573. different than that of the control connection.  And it does not allow a
  574. PASV connection from another address.
  575. The port-allow clause provides a list of addresses which the specified
  576. class of user may give on a PORT command.  These addresses will be allowed
  577. even if they do not match the IP-address of the client-side of the control
  578. connection.
  579. The pasv-allow clause provides a list of addresses which the specified
  580. class of user may make data connections from.  These addresses will be
  581. allowed even if they do not match the IP-address of the client-side of the
  582. control connection.
  583. .TP 0.5i
  584. .B lslong <command> [<options> ...]
  585. .TP 0.5i
  586. .B lsshort <command> [<options> ...]
  587. .TP 0.5i
  588. .B lsplain <command> [<options> ...]
  589. The lslong, lsshort and lsplain clauses allow specification of the command
  590. and options used to generate directory listings.  Note the options cannot
  591. contain spaces and the defaults for these clauses are generally correct;
  592. use lslong, lsshort or lsplain only if absolutely necessary.
  593. .TP 0.5i
  594. .B mailserver <hostname>
  595. Specify the name of a mail server which will accept upload notifications
  596. for the FTP daemon.  Multiple mail servers may be listed; the daemon will
  597. attempt to deliver the upload notification to each, in order, until one
  598. accepts the message.  If no mail servers are specified, localhost is used.
  599. This option is only meaningful if anyone is to be notified of anonymous
  600. uploads (see incmail).
  601. .TP 0.5i
  602. .B incmail <emailaddress>
  603. .TP 0.5i
  604. .B virtual <address> incmail <emailaddress>
  605. .TP 0.5i
  606. .B defaultserver incmail <emailaddress>
  607. Specify email addresses to be notified of anonymous uploads.  Mutltiple
  608. addresses can be specified; each will receive a notification.  If none are
  609. specified, no notifications are sent.
  610. If addresses are specified for a virtual host, only those addresses will
  611. receive notification up anonymous uploads on that host.  Otherwise,
  612. notifications will be sent to the global addresses.
  613. Defaultserver addresses only apply when the FTP session is not using one of
  614. the virtual hosts.  In this way, you can receive notifications for your
  615. default anonymous area, but not see notifications to virtual hosts which do
  616. not have their own notifications.
  617. .TP 0.5i
  618. .B mailfrom <emailaddress>
  619. .TP 0.5i
  620. .B virtual <address> mailfrom <emailaddress>
  621. .TP 0.5i
  622. .B defaultserver mailfrom <emailaddress>
  623. Specify the sender's email address for anonymous upload notifications.
  624. One one address may be specified.  If no mailfrom applies, email is sent
  625. from the default mailbox name 'wu-ftpd'.  To avoid problems if the
  626. recipient attempts to reply to a notification, or if downstream mail
  627. problems generate bounces, you should ensure the mailfrom address is
  628. deliverable.
  629. .SH Permission Capabilities
  630. .TP 0.5i
  631. .B chmod <yes|no> <typelist>
  632. .TP 0.5i
  633. .B delete <yes|no> <typelist>
  634. .TP 0.5i
  635. .B overwrite <yes|no> <typelist>
  636. .TP 0.5i
  637. .B rename <yes|no> <typelist>
  638. .TP 0.5i
  639. .B umask <yes|no> <typelist>
  640. Allows or disallows the ability to perform the specified function.  By
  641. default, all users are allowed.
  642. <typelist> is a comma-separated list of any of the keywords "anonymous",
  643. "guest", "real" and "class=".  When "class=" appears, it must be followed
  644. by a classname.  If any class= appears, the <typelist> restriction applies
  645. only to users in that class.
  646. .TP 0.5i
  647. .B passwd-check <none|trivial|rfc822> (<enforce|warn>)
  648. Define the level and enforcement of password checking done by the server
  649. for anonymous ftp.
  650. .nf
  651.     none      no password checking performed.
  652.     trivial   password must contain an '@'.
  653.     rfc822    password must be an rfc822 compliant address.
  654.     warn      warn the user, but allow them to log in.
  655.     enforce   warn the user, and then log them out.
  656. .fi
  657. .TP 0.5i
  658. .B deny-email <case-insensitive-email-address>
  659. Consider the e-mail address given as an argument as invalid. If
  660. passwd-check is set to enforce, anonymous users giving this address as
  661. password cannot log in.  That way, you can stop users from having stupid
  662. WWW browsers use fake addresses like IE?0User@ or mozilla@. (by using this,
  663. you are not shutting out users using a WWW browser for ftp - you just make
  664. them configure their browser correctly.) Only one address per line, but you
  665. can have as many deny-email addresses as you like.
  666. .TP 0.5i
  667. .B path-filter <typelist> <mesg> <allowed_charset> {<disallowed regexp> ...}
  668. For users in <typelist>, path-filter defines regular expressions that
  669. control what a filename can or can not be.  There may be multiple
  670. disallowed regexps.  If a filename is invalid due to failure to match the
  671. regexp criteria, <mesg> will be displayed to the user.  For example:
  672. .nf
  673.     path-filter anonymous /etc/pathmsg ^[-A-Za-z0-9._]*$ ^\. ^-
  674. .fi
  675. specifies that all upload filenames for anonymous users must be made of
  676. only the characters A-Z, a-z, 0-9, and "._-" and may not begin with a "."
  677. or a "-".  If the filename is invalid, /etc/pathmsg will be displayed to
  678. the user.
  679. .TP 0.5i
  680. .B upload [absolute|relative] [class=<classname>]... [-] <root-dir> <dirglob> <yes|no> <owner> <group> <mode> ["dirs"|"nodirs"] [<d_mode>]
  681. Define a directory with <dirglob> that permits or denies uploads.
  682. If it does permit uploads, all newly created files will be owned by <owner>
  683. and <group> and will have their permissions set according to <mode>,
  684. existing files which are overwritten will keep their original ownership and
  685. permissions.
  686. Directories are matched on a best-match basis.
  687. For example:
  688. .nf
  689.     upload /var/ftp *              no
  690.     upload /var/ftp /incoming      yes ftp daemon 0666
  691.     upload /var/ftp /incoming/gifs yes jlc guest  0600 nodirs
  692. .fi
  693. would only allow uploads into /incoming and /incoming/gifs.  Files that
  694. were uploaded to /incoming would be owned by ftp/daemon and would have
  695. permissions of 0666.  File uploaded to /incoming/gifs would be owned by
  696. jlc/guest and have permissions of 0600. Note that the <root-dir> here must
  697. match the home directory specified in the password database for the "ftp"
  698. user.
  699. The optional "dirs" and "nodirs" keywords can be specified to allow or
  700. disallow the creation of new subdirectories using the mkdir command.
  701. Note that if the upload command is used, directory creation is allowed by
  702. default. To turn it off by default, you must specify a user, group and mode
  703. followed by the "nodirs" keyword as the first line where the upload command
  704. is used in this file.
  705. If directories are permitted, the optional <d_mode> determines the
  706. permissions for a newly created directory.  If <d_mode> is omitted, the
  707. permissions are inferred from <mode> or are 0777 if <mode> is also omitted.
  708. The upload keyword only applies to users who have a home directory (the
  709. argument to the chroot() ) of <root-dir>.  <root-dir> may be specified as
  710. "*" to match any home directory.
  711. The <owner> and/or <group> may each be specified as "*", in which case any
  712. uploaded files or directories will be created with the ownership of the
  713. directory in which they are created.
  714. The optional first parameter selects whether <root-dir> names are
  715. intepreted as absolute or relative to the current chroot'd environment.
  716. The default is to intepret <root-dir> names as absolute.
  717. You can specify any number of 'class=<classname>' restrictions.  If any are
  718. specified, this upload clause only takes effect if the current user is a
  719. member of one of the classes.
  720. Please read the upload.configuration.HOWTO for a complete discussion of how
  721. to configure your server to allow uploading files.
  722. .TP 0.5i
  723. .B throughput <root-dir> <subdir-glob> <file-glob-list> <bytes-per-second> <bytes-per-second-multiply> <remote-glob-list>
  724. Define files via comma-seperated <file-glob-list> in subdir matched by
  725. <subdir-glob> under <root-dir> that have restricted transfer throughput of
  726. <bytes-per-second> on download when the remote hostname or remote IP
  727. address matches the comma-seperated <remote-glob-list>.
  728. Entries are matched on a best-match basis.
  729. For example:
  730. .nf
  731.     throughput /e/ftp *    *      oo   -   *
  732.     throughput /e/ftp /sw* *      1024 0.5 *
  733.     throughput /e/ftp /sw* README oo   -   *
  734.     throughput /e/ftp /sw* *      oo   -   *.foo.com
  735. .fi
  736. would set maximum throughput per default, but restrict download to 1024
  737. bytes/s for any files under /e/ftp/sw/ which are not named README.  The only
  738. exceptions are remote hosts from within the domain foo.com which always get
  739. maximum throughput.  Every time a remote client has retrieved a file under
  740. /e/ftp/sw/ the bytes per seconds of the matched entry line are internally
  741. multiplied by a factor, here 0.5.  So when the remote client retrieves its
  742. second file it is served with 512 bytes/s, the third time with only 254
  743. bytes/s, the fourth time with only 128 bytes/s and so on.
  744. The string "oo" for the bytes per second field means no throughput
  745. restriction.  A multiply factor of 1.0 or "-" means no change of the
  746. throughput after every successful transfer.
  747. Note that the <root-dir> here must match the home directory specified in
  748. the password database for the "ftp" user.  The throughput keyword only
  749. applies to users who have a home directory (the argument to the chroot() )
  750. of <root-dir>.
  751. .TP 0.5i
  752. .B anonymous-root <root-dir> [<class>]
  753. <root-dir> specifies the chroot() path for anonymous users.  If no
  754. anonymous-root is matched, the old method of parsing the home directory for
  755. the 'ftp' user is used.  If no <class> is specified, this is the root
  756. directory for anonymous users who do not any other anonymous-root
  757. specification.  Multiple classes may be given on the line.  If an
  758. anonymous-root is chosen for the user, the 'ftp' user's home directory in
  759. the <root-dir>/etc/passwd file is used to determine the initial directory
  760. and the 'ftp' user's home directory in the system-wide /etc/passwd is not
  761. used.
  762. For example:
  763. .nf
  764.     anonymous-root /home/ftp
  765.     anonymous-root /home/localftp localnet
  766. .fi
  767. causes all anonymous users to be chroot()'d to the directory /home/ftp
  768. then, if the 'ftp' user exists in /home/ftp/etc/passwd, their initial CWD
  769. is that home directory.  Anonymous users in the class localnet, however,
  770. are chroot()'d to the directory /home/localftp and their initial CWD is
  771. taken from the 'ftp' user's home directory in /home/localftp/etc/passwd.
  772. .TP 0.5i
  773. .B guest-root <root-dir> [<uid-range>]
  774. <root-dir> specified the chroot() path for guest users.  If no guest-root
  775. is is matched, the old method of parsing the user's home directory is used.
  776. If no <uid-range> is specified, this is the root directory for guest users
  777. who do not match any other guest-root specification.  Multiple uid ranges
  778. may be given on the line.  If a guest-root is chosen for the user, the
  779. user's home directory in the <root-dir>/etc/passwd file is used to
  780. determine the initial directory and their home directory in the system-wide
  781. /etc/passwd is not used.
  782. <uid-range> specifies numeric UID values.  Ranges are specified by giving
  783. the lower and upper bounds (inclusive), separated by a dash.  Omitting the
  784. lower bound means "all up to", and omitted the upper bound means "all
  785. starting from".
  786. For example:
  787. .nf
  788.     guest-root /home/users
  789.     guest-root /home/staff %100-999 sally
  790.     guest-root /home/users/frank/ftp frank
  791. .fi
  792. causes all guest users to chroot() to /home/users then starts each user in
  793. their home directory specified in /home/users/etc/passwd.  Users in the
  794. range 100 through 999, inclusive, and user sally, will be chroot()'d to
  795. /home/staff and the CWD will be taken from their entries in
  796. /home/staff/etc/passwd.  The single user frank will be chroot()'d to
  797. /home/users/owner/ftp and the CWD will be from his entry in
  798. /home/users/owner/ftp/etc/passwd.
  799. Note that order is important for both anonymous-root and guest-root.  If a
  800. user would match multiple clauses, only the first applies; with the
  801. exception of the clause which has no <class> or <uid-range>, which applies
  802. only if no other clause matches.
  803. .TP 0.5i
  804. .B deny-uid <uid-range> [...]
  805. .TP 0.5i
  806. .B deny-gid <gid-range> [...]
  807. .TP 0.5i
  808. .B allow-uid <uid-range> [...]
  809. .TP 0.5i
  810. .B allow-gid <gid-range> [...]
  811. These clauses allow specification of UID and GID values which will be
  812. denied access to the ftp server.  The allow-uid and allow-gid clauses may
  813. be used to allow access for uid/gid which would otherwise be denied.  These
  814. checks occur before all others.  Deny is checked before allow.  The default
  815. is to allow access.  Note that in most cases, this can remove the need for
  816. an /etc/ftpusers files.  For example:
  817. .nf
  818.     deny-gid %-99 %65535
  819.     deny-uid %-99 %65535
  820.     allow-gid ftp
  821.     allow-uid ftp
  822. .fi
  823. denies ftp access to all privileged or special users and groups on a Linux
  824. box except the anonymous 'ftp' user/group.  In many cases, this can
  825. eliminate the need for the /etc/ftpusers file.  Support for that file still
  826. exists so it may be used when changing /etc/ftpaccess is not desired.
  827. Throughout the ftpaccess file, any place a single UID or GID is allowed,
  828. either names or numbers may be used.  To use numbers, put a '%' before it.
  829. In places where a range is allowed, put the '%' before the range.
  830. .TP 0.5i
  831. .B restricted-uid <uid-range> [...]
  832. .TP 0.5i
  833. .B restricted-gid <gid-range> [...]
  834. .TP 0.5i
  835. .B unrestricted-uid <uid-range> [...]
  836. .TP 0.5i
  837. .B unrestricted-gid <gid-range> [...]
  838. These clauses control whether or not real or guest users will be allowed
  839. access to areas on the FTP site outside their home directories.  They are
  840. not meant to replace the use of guestgroup and guestuser.  Instead, use
  841. these to supplement the operation of guests.  The unrestricted-uid and
  842. unrestricted-gid clauses may be used to allow users outside their home
  843. directories who would otherwise be restricted.
  844. An example of the use of these clauses shows their intended use.  Assume
  845. user 'dick' has a home directory /home/dick and 'jane' /home/jane:
  846. .nf
  847.     guest-root /home dick jane
  848.     restricted-uid dick jane
  849. .fi
  850. While both dick and jane are chroot'd to /home, they cannot access each
  851. other's files because they are restricted to their home directories.
  852. Whereever possible, in situations such as this example, try not to rely
  853. solely upon the ftp restrictions.  As with all other ftp access rules, try
  854. to use directory and file permissions to backstop the operation of the
  855. ftpaccess configuration.
  856. .TP 0.5i
  857. .B site-exec-max-lines <number> [<class> ...]
  858. The SITE EXEC feature traditionally limits the number of lines of output
  859. which may be sent to the remote client.  This clause allows you to set this
  860. limit.  If omitted, the limit is 20 lines.  A limit of 0 (zero) implies no
  861. limit; be very careful if you choose to remove the limit.  If a clause is
  862. found matching the remote user's class, that limit is used.  Otherwise, the
  863. clause with class '*', or no class given, is used.  For example:
  864. .nf
  865.     site-exec-max-lines 200 remote
  866.     site-exec-max-lines 0 local
  867.     site-exec-max-lines 25
  868. .fi
  869. limits output from SITE EXEC (and therefore SITE INDEX) to 200 lines for
  870. 'remote' users, specifies there is no limit at all for 'local' users, and
  871. sets a limit of 25 lines for all other users.
  872. .TP 0.5i
  873. .B dns refuse_mismatch <filename> [override]
  874. Refuse FTP sessions when the forward and reverse lookups for the remote
  875. site do not match.  Display the named file (like a message file),
  876. admonishing the user.  If the optional override is specified, allow the
  877. connection after complaining.
  878. .TP 0.5I
  879. .B dns refuse_no_reverse <filename> [override]
  880. Refuse FTP sessions when there is no reverse DNS entry for the remote site.
  881. Display the named file (like a message file), admonishing the user.  If the
  882. optional override is specified, allow the connection after complaining.
  883. .TP 0.5i
  884. .B dns resolveroptions [options]
  885. The resolveroptions option allows you to tweak name server options.  The
  886. line takes a series of flags as documented in
  887. .IR resolver(3)
  888. (with the leading RES_ removed).  Each can be preceded by an optional + or
  889. -.  For example, 
  890. .nf
  891.     dns resolveroptions +aaonly -dnsrch
  892. .fi
  893. turns on the aaonly option (only accept authoritative answers) and turns
  894. off the dnsrch option (search the domain path).
  895. .SH Files
  896. FTPLIB/ftpaccess
  897. .SH See Also
  898. .BR ftpd(8) ,
  899. .BR umask(2) ,
  900. .BR ftplog(5) ,
  901. .BR ftpconversions(5) ,
  902. .BR ftpshut(8)