Internet Assigned Numbers Authority

FTP Commands and Extensions

Created
2010-01-07
Last Updated
2024-04-22
Available Formats

XML

HTML

Plain text

Registry included below

FTP Commands and Extensions

Expert(s)
John Klensin
Reference
[RFC5797]
Note
Note: An IESG Standards Action is allowed to direct IANA to change the
Conformance Requirements listed for any entry. 

The following commands are part of the base FTP specification
[RFC959] and are listed in the registry with the immutable pseudo
FEAT code "base".

Mandatory commands:

ABOR, ACCT, ALLO, APPE, CWD, DELE, HELP, LIST, MODE, NLST, NOOP,
PASS, PASV, PORT, QUIT, REIN, REST, RETR, RNFR, RNTO, SITE, STAT,
STOR, STRU, TYPE, USER

Optional commands:

CDUP, MKD, PWD, RMD, SMNT, STOU, SYST

Note: STD 3 [RFC1123] clarified and updated the status and
implementation requirements of these standard FTP commands, and it
contains important complementary information for the following
commands:

LIST, NLST, PASV, REST, SITE, STOU

The following commands were specified as experimental in an extension
to an early version of the FTP specification [RFC775] but later
deprecated by [RFC1123], because Standard FTP [RFC959]
specifies their standard successors.  They are listed in the registry
with the immutable pseudo FEAT code "hist".

XCUP, XCWD, XMKD, XPWD, XRMD

Implementation note:  Deployed FTP clients still make use of the
deprecated commands and most FTP servers support them as aliases
for the standard commands.

The following commands were specified as part of the "FOOBAR" IPng
effort in [RFC1545] and, later, [RFC1639] and are
now obsolete.  They are listed in the registry with the immutable
pseudo FEAT code "hist".

LPRT, LPSV

Legend for the registry:

    o  cmd (Command Name)

        Amended versions of commands are tagged with a trailing "+"

    o  FEAT Code

        Keyword returned in FEAT response line for this command/extension:

          - actual FEAT codes are given in upper case
          - placeholders (pseudo FEAT codes) are shown in lower case
          - "-N/A-" indicates a feature not related to one particular command

        See the "Extension name" clause in Section 2.2 of
        [RFC5797] for details.

    o  description

        Brief description of command / extension

    o  type (Command Type)

        Type or "kind" of command, based on Section 4.1 of [RFC959]:

          'a'  ... access control
          'p'  ... parameter setting
          's'  ... service execution

        Combinations like 'p/s' are possible.

    o  conf (Conformance Requirements)

        Expectation for support in modern FTP implementations:

          'm'  ... mandatory to implement
          'o'  ... optional
          'h'  ... historic
  
Available Formats

CSV
Range Registration Procedures
registration marked "mandatory" ('m' in the "conf" column) Standards Action
all other registrations Specification Required
cmd FEAT code description type conf References and Notes
ABOR base Abort s m [RFC959]
ACCT base Account a m [RFC959]
ADAT secu Authentication/Security Data a o [RFC2228] [RFC2773] [RFC4217]
ALGS FTP64 ALG status o [RFC6384] Section 11
ALLO base Allocate s m [RFC959]
APPE base Append (with create) s m [RFC959]
AUTH secu Authentication/Security Mechanism a o [RFC2228]
AUTH+ AUTH Authentication/Security Mechanism a o [2][RFC2773][RFC4217]
CCC secu Clear Command Channel a o [RFC2228]
CDUP base Change to Parent Directory a o [RFC959]
CONF secu Confidentiality Protected Command a o [RFC2228]
CWD base Change Working Directory a m [RFC959]
DELE base Delete File s m [RFC959]
ENC secu Privacy Protected Command a o [RFC2228] [RFC2773] [RFC4217]
EPRT nat6 Extended Port p o [RFC2428]
EPSV nat6 Extended Passive Mode p o [RFC2428]
FEAT feat Feature Negotiation a m [1] [RFC2389]
HELP base Help s m [RFC959]
HOST HOST Hostname a o [RFC7151]
LANG UTF8 Language (for Server Messages) p o [RFC2640]
LIST base List s m [RFC959][RFC1123]
LPRT hist Data Port {FOOBAR} p h [RFC1545][RFC1639]
LPSV hist Passive Mode {FOOBAR} p h [RFC1545][RFC1639]
MDTM MDTM File Modification Time s o [RFC3659]
MIC secu Integrity Protected Command a o [RFC2228][RFC2773] [RFC4217]
MKD base Make Directory s o [RFC959]
MLSD MLST List Directory (for machine) s o [RFC3659]
MLST MLST List Single Object s o [RFC3659]
MODE base Transfer Mode p m [RFC959]
NLST base Name List s m [RFC959][RFC1123]
NOOP base No-Op s m [RFC959]
OPTS feat Options p m [1] [RFC2389]
PASS base Password a m [RFC959]
PASV base Passive Mode p m [RFC959][RFC1123]
PBSZ secu Protection Buffer Size p o [RFC2228]
PBSZ+ PBSZ Protection Buffer Size p o [RFC4217]
PORT base Data Port p m [RFC959]
PROT secu Data Channel Protection Level p o [RFC2228]
PROT+ PROT Data Channel Protection Level p o [RFC4217]
PWD base Print Directory s o [RFC959]
QUIT base Logout a m [RFC959]
REIN base Reinitialize a m [RFC959]
REST base Restart s/p m [RFC959][RFC1123]
REST+ REST Restart (for STREAM mode) s/p m [3][RFC3659]
RETR base Retrieve s m [RFC959]
RMD base Remove Directory s o [RFC959]
RNFR base Rename From s/p m [RFC959]
RNTO base Rename To s m [RFC959][RFC Errata 5748]
SITE base Site Parameters s m [RFC959][RFC1123]
SIZE SIZE File Size s o [RFC3659]
SMNT base Structure Mount a o [RFC959]
STAT base Status s m [RFC959]
STOR base Store s m [RFC959]
STOU base Store Unique a o [RFC959][RFC1123]
STRU base File Structure p m [RFC959]
SYST base System s o [RFC959]
TYPE base Representation Type p m [4][RFC959]
USER base User Name a m [RFC959]
XCUP hist {precursor for CDUP} s h [RFC775] [RFC1123]
XCWD hist {precursor for CWD} s h [RFC775] [RFC1123]
XMKD hist {precursor for MKD} s h [RFC775] [RFC1123]
XPWD hist {precursor for PWD} s h [RFC775] [RFC1123]
XRMD hist {precursor for RMD} s h [RFC775] [RFC1123]
-N/A- TVFS Trivial Virtual File Store p o [RFC3659]

Footnotes

[1]
While an IETF Standards Action would be required to make the FEAT
mechanism [RFC2389] mandatory, implementation of that extension
mechanism is clearly required in conjunction with any extension or
feature that depends on it.
[2]
FEAT String for [RFC4217]: AUTH TLS
FEAT String for [RFC2773]: AUTH KEA-SKIPJACK
[3]
FEAT String: REST STREAM
[4]
FEAT String: TYPE {semicolon-separated list of supported types}