## ProFTPD module `mod_facts`

File "Facts" Support

The `mod_facts` module is ProFTPD's module for handling the `MLSD` and `MLST` commands, in support of RFC 3659. In addition, the `mod_facts` module implements the `MFF` and `MFMT` commands defined in:

      http://www.ietf.org/internet-drafts/draft-somers-ftp-mfxx-04.txt

This module is contained in the `mod_facts.c` file for ProFTPD 1.3.x, and is compiled by default.

The most current version of `mod_facts` can be found in the ProFTPD source distribution:

      http://www.proftpd.org/

## Directives

- FactsAdvertise

## FactsAdvertise

Syntax: FactsAdvertise on|off
Default: FactsAdvertise on
Context: server config, `<VirtualHost>`, `<Global>`
Module: mod_facts
Compatibility: 1.3.2rc2 and later

The `FactsAdvertise` directive is used to control whether the `mod_facts` module advertises its `MLST` support via the `FEAT` command.

By default, the `mod_facts` module will list `MLST` in the `FEAT` response. FTP clients use this to determine whether to use the newer `MLSD`/`MLST` commands, or the older `LIST`/`NLST` commands. Some FTP clients, though, will attempt to use the newer commands just as if they were equivalent to the older commands, including supporting glob/wildcard characters. Section 2.2.2 of RFC3659 explicitly states that wildcard characters are not supported in the `MLSD` and `MLST` commands. Thus, to prevent problems when using such FTP clients with proftpd, you can disable the advertising of support for those commands using e.g. the following in your `proftpd.conf`:

      <IfModule mod_facts.c>
        FactsAdvertise off
      </IfModule>

Frequently Asked Questions

Question: Why does `MLSD` list all of the files in a directory, including the "hidden" files, where the `LIST` command does not?
Answer: The `MLSD` and `MLST` commands do not have any notions of "options" like the `LIST` and `NLST` commands do; there is no way for a client, in the request to list the files in a directory, to ask the server to filter the list of files somehow. Instead, `MLSD` contains a list of "facts" for each file in its list; the client then has to to decide how to filter the list of files based on those facts. This is why the `ListOptions` directive has no influence over the `MLSD` and `MLST` commands.

Question: Why does `MLST` show the UIDs/GIDs for listed files, where `LIST`/`NLST` show the user/group names?
Answer: The list of "facts" defined by RFC 3659 does not include a fact for the stringified version of user/group owner names, unfortunately. This means that the `MLSD`/`MLST` commands don't have a good way of obtaining the user/group names.

To work around this issue, you can add the following to your `proftpd.conf`:

      <IfModule mod_facts.c>
        FactsAdvertise off
      </IfModule>

This tells `proftpd` to not advertise to the client that it can support the `MLSD`MLST commands.

Author: $Author: castaglia $
Last Updated: $Date: 2011/07/06 17:14:35 $

© Copyright 2007-2011 TJ Saunders
All Rights Reserved