---
name: "twoftpd-xfer"
section: "1"
platform: "linux"
package: "twoftpd"
version: "1.42-1.2"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/twoftpd-xfer"
---

# twoftpd-xfer(1)

TwoFTPD file transfer back-end.

## NAME

twoftpd-xfer - TwoFTPD file transfer back-end.

## SYNOPSIS

**twoftpd-xfer**

## DESCRIPTION

**twoftpd-xfer** reads FTP request from the network and executes file transfers based on those requests. Before doing anything, **twoftpd-xfer** changes directory to the authenticated user's home directory, changes the root directory to that directory, and drops all root priviledges.

## ENVIRONMENT

- **AUTHENTICATED**

  If set (typically by **twoftpd-auth** after successfully completing authentication), the startup banner will use code *230*, indicating that authentication was successful.  Otherwise, the startup banner will use code *220*, which is the normal initial connection banner.

- **BANNER**

  If set, the contents of this variable will be sent as extra responses when the server starts.

- **CHROOT**

  If set, change the root directory to the user's home directory through the OS chroot syscall.

- **CONNECT\_TIMEOUT**

  The maximum number of seconds to wait for a data channel connection to complete.  If not set, it defaults to the value of **$TIMEOUT**.

- **GID**

  Numerical group ID number to change to at program startup.

- **GIDS**

  Optional comma-seperated list of numerical group IDs to set up as the supplementary group IDs.

- **GROUP**

  Group name to use in long listings for files owned by **$GID**. If not set, defaults to *mygroup*.

- **HOME**

  Directory to switch to on program startup.

- **LOCKHOME**

  If set (and neither **CHROOT** nor **SOFTCHROOT** are set), all accesses to files and paths outside of **HOME** will be forbidden.

- **LOGREQUESTS**

  If set, all requests from the client will be logged.

- **LOGRESPONSES**

  If set, all responses to the client (after login) will be logged.

- **MESSAGEFILE**

  If set, the contents this file will be automatically sent as extra responses to the client whenever the server enters a directory (including at startup).

- **NODOTFILES**

  If set, all listings will exclude all files starting with a period, and it will not be possible to do any file access (including storing or retrieving) to any file starting with a period.  This may be useful for anonymous FTP servers.

- **SESSION\_TIMEOUT**

  The maximum number of seconds to allow a single session to last.

- **SOFTCHROOT**

  If set, and **CHROOT** is not set, the server emulates the effect of a chroot without actually effecting a chroot.  This eliminates the system-enforced barrier provided by the chroot, but allows for things like symlinks outside of the home directory.

- **TCPLOCALIP**

  The IP to use when creating PASV connections. Normally, this is set by **tcpserver**.

- **TCPREMOTEIP**

  The source IP to use when creating PORT connections. Normally, this is set by **tcpserver**.

- **TIMEOUT**

  The maximum number of seconds to wait for command input or connections.

- **UID**

  Numerical user ID number to change to at program startup.

- **USER**

  Owner name to use in long listings for files owned by **$UID**.

## NOTES

You will need to set the umask to an appropriate value before running this program.

The **twoftpd-anon** program functions identically to this program, with the exception of having no file modification capabilities. The **twoftpd-drop** program is a similarly restricted program, that can only create new files (no overwriting, modifying, or listing existing files).
