FTP Commands and Extensions

Created

  • 2010-01-07

Last Updated

  • 2024-04-22

Available Formats


FTP Commands and Extensions

Expert(s)

  • John Klensin

Reference

  • RFC 5797: FTP Command and Extension Registry

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 RFC 959 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 RFC 1123 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 RFC 775 but later deprecated by RFC 1123, because Standard FTP RFC 959 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 RFC 1545 and, later, RFC 1639 and are now obsolete. They are listed in the registry with the immutable pseudo FEAT code "hist".

LPRT, LPSV

Legend for the registry:

  • cmd (Command Name)

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

  • 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 RFC 5797 for details.

  • description

    Brief description of command / extension

  • type (Command Type)

    Type or "kind" of command, based on Section 4.1 of RFC 959:

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

    Combinations like 'p/s' are possible.

  • conf (Conformance Requirements)

    Expectation for support in modern FTP implementations:

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

Available Formats

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 RFC 959
ACCT base Account a m RFC 959
ADAT secu Authentication/Security Data a o RFC 2228; RFC 2773; RFC 4217
ALGS FTP64 ALG status o RFC 6384, Section 11
ALLO base Allocate s m RFC 959
APPE base Append (with create) s m RFC 959
AUTH secu Authentication/Security Mechanism a o RFC 2228
AUTH+ AUTH Authentication/Security Mechanism a o [2]RFC 2773; RFC 4217
CCC secu Clear Command Channel a o RFC 2228
CDUP base Change to Parent Directory a o RFC 959
CONF secu Confidentiality Protected Command a o RFC 2228
CWD base Change Working Directory a m RFC 959
DELE base Delete File s m RFC 959
ENC secu Privacy Protected Command a o RFC 2228; RFC 2773; RFC 4217
EPRT nat6 Extended Port p o RFC 2428
EPSV nat6 Extended Passive Mode p o RFC 2428
FEAT feat Feature Negotiation a m [1] RFC 2389
HELP base Help s m RFC 959
HOST HOST Hostname a o RFC 7151
LANG UTF8 Language (for Server Messages) p o RFC 2640
LIST base List s m RFC 959; RFC 1123
LPRT hist Data Port {FOOBAR} p h RFC 1545; RFC 1639
LPSV hist Passive Mode {FOOBAR} p h RFC 1545; RFC 1639
MDTM MDTM File Modification Time s o RFC 3659
MIC secu Integrity Protected Command a o RFC 2228; RFC 2773; RFC 4217
MKD base Make Directory s o RFC 959
MLSD MLST List Directory (for machine) s o RFC 3659
MLST MLST List Single Object s o RFC 3659
MODE base Transfer Mode p m RFC 959
NLST base Name List s m RFC 959; RFC 1123
NOOP base No-Op s m RFC 959
OPTS feat Options p m [1] RFC 2389
PASS base Password a m RFC 959
PASV base Passive Mode p m RFC 959; RFC 1123
PBSZ secu Protection Buffer Size p o RFC 2228
PBSZ+ PBSZ Protection Buffer Size p o RFC 4217
PORT base Data Port p m RFC 959
PROT secu Data Channel Protection Level p o RFC 2228
PROT+ PROT Data Channel Protection Level p o RFC 4217
PWD base Print Directory s o RFC 959
QUIT base Logout a m RFC 959
REIN base Reinitialize a m RFC 959
REST base Restart s/p m RFC 959; RFC 1123
REST+ REST Restart (for STREAM mode) s/p m [3]RFC 3659
RETR base Retrieve s m RFC 959
RMD base Remove Directory s o RFC 959
RNFR base Rename From s/p m RFC 959
RNTO base Rename To s m RFC 959; RFC Errata 5748
SITE base Site Parameters s m RFC 959; RFC 1123
SIZE SIZE File Size s o RFC 3659
SMNT base Structure Mount a o RFC 959
STAT base Status s m RFC 959
STOR base Store s m RFC 959
STOU base Store Unique a o RFC 959; RFC 1123
STRU base File Structure p m RFC 959
SYST base System s o RFC 959
TYPE base Representation Type p m [4]RFC 959
USER base User Name a m RFC 959
XCUP hist {precursor for CDUP} s h RFC 775; RFC 1123
XCWD hist {precursor for CWD} s h RFC 775; RFC 1123
XMKD hist {precursor for MKD} s h RFC 775; RFC 1123
XPWD hist {precursor for PWD} s h RFC 775; RFC 1123
XRMD hist {precursor for RMD} s h RFC 775; RFC 1123
-N/A- TVFS Trivial Virtual File Store p o RFC 3659

Footnotes

[1]

While an IETF Standards Action would be required to make the FEAT mechanism RFC 2389 mandatory, implementation of that extension mechanism is clearly required in conjunction with any extension or feature that depends on it.

[2]

FEAT String for RFC 4217: AUTH TLS

FEAT String for RFC 2773: AUTH KEA-SKIPJACK

[3]

FEAT String: REST STREAM

[4]

FEAT String: TYPE {semicolon-separated list of supported types}