Info Node: (inetutils.info)ftpd invocation

CFHT HOME inetutils.info: ftpd invocation


up: Top next: tftpd invocation prev: syslogd invocation Back to Software Index

20 'ftpd': FTP daemon
*********************

'ftpd' is the Internet File Transfer Protocol server process.  The
server uses the TCP protocol and listens at the port specified in the
'ftp' service specification.

     ftpd [OPTION]...

'-4'
'--ipv4'
     Daemon uses only IPv4 addressing.  Ignored in inetd mode.

'-6'
'--ipv6'
     Daemon uses only IPv6 addressing.  Ignored in inetd mode.

'-A'
'--anonymous-only'
     Only anonymous login is allowed.

'-a AUTH'
'--auth=AUTH'
     Specify what authentication mechanism to use for incoming
     connections.  Possible values are: 'kerberos', 'kerberos5', 'opie',
     'pam', and 'default'.

     Anonymous logins will continue to work when this option is used,
     unless the user 'ftp' is removed from the system.

'-D'
'--daemon'
     'ftpd' enters daemon-mode.  That allows 'ftpd' to be run without
     'inetd'.

'-d'
'--debug'
     Debugging information is written to the 'syslog' using facility
     'LOG_FTP'.

'-l'
'--logging'
     Each successful and failed ftp session is logged using 'syslog'
     with a facility of 'LOG_FTP'.  If this option is specified twice,
     the retrieve ('get'), store ('put'), append, delete, make
     directory, remove directory and rename operations and their
     filename arguments are also logged.

'--non-rfc2577'
     Do not follow the suggestion of RFC 2577 to suppress messages that
     could help an attacker to conduct user name enumeration.  This
     option allows the server to return with an error message
     immediately upon receipt of a user name.  Such information includes
     non-existence claims and expiration claims.  The ideal mode would
     otherwise be to fake the relevance of asking for a password, and
     only thereafter report an invalid login.

'-p PIDFILE'
'--pidfile=PIDFILE'
     Change default location of PIDFILE.

'-q'
'--no-version'
     Quiet mode.  No information about the version of the 'ftpd' is
     given to the client.

'-T'
'--max-timeout'
     A client may also request a different timeout period; the maximum
     period allowed may be set to timeout seconds with the '-T' option.
     The default limit is 2 hours.

'-t TIMEOUT'
'--timeout=TIMEOUT'
     The inactivity timeout period is set to timeout seconds (the
     default is 15 minutes).

'-u UMASK'
'--umask=UMASK'
     Set default umask, expressed in base 8.

   The file '/etc/nologin' can be used to disable FTP access.  If the
file exists, 'ftpd' displays it and exits.  If the file
'/etc/ftpwelcome' exists, 'ftpd' prints it before issuing the 'ready'
message.  If the file '/etc/motd' exists, 'ftpd' prints it after a
successful login.

   If this server was compiled with PAM support, then any non-anonymous
connection request will also be checked for settings pertaining to the
PAM service 'ftp', before finally being accepted.

   Linux-PAM is particular in that it also provides a module
'pam_ftp.so' influencing even anonymous access.  By convention the
present server relies on the functionality in that module when built on
relevant systems.  However, the module is known to be partially broken
since ten years back, when one compares the claims in its manual page,
so not all claimed trickery is available!

20.1 Standards
==============

The FTP server currently supports the following FTP requests.  The
letter case of any request is ignored.

Request                Description
--------------------------------------------------------------------------
ABOR                   abort previous command
ACCT                   specify account (ignored)
ALLO                   allocate storage (vacuously)
APPE                   append to a file
CDUP                   change to parent of current working directory
CWD                    change working directory
DELE                   delete a file
EPSV                   extended passive transfer request
EPRT                   specify data connection port
HELP                   give help information
LIST                   give list files in a directory ("ls -lgA")
LPRT                   specify data connection port
LPSV                   long passive transfer request
MKD                    make a directory
MDTM                   show last modification time of file
MODE                   specify data transfer mode
NLST                   give name list of files in directory
NOOP                   do nothing
PASS                   specify password
PASV                   prepare for server-to-server transfer
PORT                   specify data connection port
PWD                    print the current working directory
QUIT                   terminate session
REST                   restart incomplete transfer
RETR                   retrieve a file
RMD                    remove a directory
RNFR                   specify rename-from file name
RNTO                   specify rename-to file name
SITE                   non-standard commands
SIZE                   return size of file
STAT                   return status of server
STOR                   store a file
STOU                   store a file with a unique name
STRU                   specify data transfer structure
SYST                   show operating system type of server system
TYPE                   specify data transfer type
USER                   specify user name
XCUP                   change to parent of current working directory
                       (deprecated)
XCWD                   change working directory (deprecated)
XMKD                   make a directory (deprecated)
XPWD                   print the current working directory (deprecated)
XRMD                   remove a directory (deprecated)

   The following non-standard, or UNIX specific, commands are supported
by the 'SITE' request.

Request                Description
UMASK                  change umask, e.g.  'SITE UMASK 002'
IDLE                   set idle-timer, e.g.  'SITE IDLE 60'
CHMOD                  change mode of a file, e.g.  'SITE CHMOD0
                       0CHMOD1 1CHMOD2'
HELP                   give help information.

   The remaining FTP requests specified in RFC 959 are recognized, but
not implemented.  The extensions 'MDTM', 'REST', and 'SIZE' are
specified in RFC 3659, while 'EPRT' and 'EPSV' appear in RFC 2428,
'LPRT' and 'LPSV' in RFC 1639.

   The ftp server will abort an active file transfer only when the
'ABOR' command is preceded by a Telnet 'Interrupt Process' (IP) signal
and a Telnet 'Synch' signal in the command Telnet stream, as described
in Internet RFC 959.  If a 'STAT' command is received during a data
transfer, preceded by a Telnet IP and Synch, transfer status will be
returned.

   'ftpd' interprets file names according to the globbing conventions
used by 'csh'.  This allows users to utilize the metacharacters
'*?[]{}~'.

   The server applies the suggestions in RFC 2577, but the legacy
behaviour with informational content in denials can be restored using
the option '--non-rfc2577'.

20.2 Authentication
===================

'ftpd' authenticates users according to four rules.

  1. The login name must be in the password data base, '/etc/passwd',
     and must not have a null password.  In this case a password must be
     provided by the client before any file operations can be performed.

  2. The login name must not appear in the file '/etc/ftpusers'.

  3. The user must have a standard shell.

  4. If the user name is 'anonymous' or 'ftp', an anonymous ftp account
     must be present in the password file (user 'ftp').  In this case
     the user is allowed to log in by specifying any password (by
     convention an email address for the user should be used as the
     password).

   A further access mechanism is provided by the file '/etc/ftpchroot'.
A user mentioned therein will have all access confined to the subtree
rooted at the home directory specified in '/etc/passwd'.

   In the case of anonymous access, 'ftpd' takes special measures to
restrict the client's access privileges.  The server always performs a
chroot to the home directory of the 'ftp' user.

   In order that system security is not breached, it is recommended that
the 'ftp' subtree be constructed with care, following these rules:

'~ftp'
     Make the home directory owned by 'root' and not writable by anyone.

'~ftp/bin'
     Make this directory owned by 'root' and not writable by anyone
     (mode 555).  The program 'ls' must be present to support the list
     command, unless the server was compiled with libls support.  This
     program should be mode 111.

'~ftp/etc'
     Make this directory owned by 'root' and not writable by anyone
     (mode 555).  The files 'passwd' and 'group' must be present for the
     'ls' command to be able to produce owner names rather than numbers.
     The password field in 'passwd' is not used, and should not contain
     real passwords.  The file 'motd', if present, will be printed after
     a successful login.  These files should be mode 444.

'~ftp/pub'
     Make this directory mode 777 and owned by 'ftp'.  Guests can then
     place files which are to be accessible via the anonymous account in
     this directory.

20.3 Configuration files
========================

''/etc/ftpchroot''
     List of users to enclose in a chrooted directory.  The anonymous
     user 'ftp' is always considered to be a member of this list,
     explicit or not.

''/etc/ftpusers''
     List of unwelcome/restricted users, always to be denied access.

''/etc/ftpwelcome''
     Welcome notice printed before server identification and any
     authentication exchange.

''/etc/motd''
     Welcome notice presented after completed login.

''/etc/nologin''
     If present, the contents are displayed and all further access is
     refused.

20.4 File format of ftpusers and ftpchroot.
===========================================

The files '/etc/ftpusers' and '/etc/ftpchroot' share a common file
format.  For better conformity with other implementations, each line is
understood as consisting of fields separated by spaces, or by horizontal
tabulators.  Only the first non-empty field is examined at present.
Both files are used for matching against a user name, desiring to use
the FTP service.

   Whenever the first printable character is a hash '#', the input line
is taken as a comment, and is ignored.  Lines lacking non-empty fields
are likewise ignored.

   A field consisting of a single at-sign '@', is treated as a wildcard
and matches every input.

   A field commencing with an at-sign '@' and then continuing with an
identifier, is understood as giving the name of a group.  Should this
name exist in '/etc/groups', and the user name be a member of this same
group, then the user name matches.

   In all other cases, the field is taken as the identifier of a user,
with which the requesting user is compared for verbatim match.

   It is worthwhile to observe from the above cases, that a single '@'
on a line by itself in '/etc/ftpchroot', will enforce chrooting upon
every user allowed to access the FTP service.  This gives a Draconian,
protective configuration.


automatically generated by info2www version 1.2