No nonsense TFTP/FTP Server
is a very simple TFTP and anonymous FTP
server with inetd support. It listens on standard Internet ports for each
protocol, as defined in the system service specification,
, unless other ports are given
on the command line. For details, see
Without any command line arguments
serves both FTP and TFTP and automatically backgrounds itself. Usually
this means listen to port 21 (FTP)
and port 69 (TFTP), serve files from
, and log to syslog. Messages are
written to the syslog using the
Available command line options:
- Show built-in help text
- Set log level: none, err, notice, info,
debug. By default the log level is
notice, which is less verbose than
info, but still logs all relevant events:
users logging in, uploading, downloading, creating and removing
directories, etc. To reduce the log level, start
- Run in foreground, do not detach from controlling terminal
uftpd option, separate multiple
options with comma:
Override Internet ports otherwise derived from
Set the PORT to zero (0) to disable a
The writable option enables writable FTP
root, which is not recommended. Some people want this, but it is
recommended to instead rely on a writable sub-directory, like
upload/, or similar.
- Use syslog, even if running in foreground, default when running in the
- Show program version
- Root directory. The default is to serve files from the FTP user's $HOME.
When started as root
uftpd will chroot
to this directory as a security measure.
can also be used with an Internet
superserver, like the traditional inetd or modern init replacements like
finit. In inetd mode the server takes client connections from stdin. To enable
must be called as either
. In inetd mode
always runs in the foreground with
syslog for messages.
The file /etc/nologin
can be used to disable
FTP access. If the file exists,
displays it and exits. If the file
prints it before issuing the
“ready” message. If the file
prints it after a successful login.
If the file .message
exists in a directory,
prints it when that directory is
The FTP server currently supports the following requests. The case of the
requests is ignored.
||abort current transfer
||shorthand for CD .. command
||change working directory
||accepted and ignored by server
||delete a file
||RFC 2428, extended PORT command
||extended PASV command, used by VLC for Android
||list supported features
||show help text
||give list files in a directory (“
||RFC 3659, return the last-modified time of a file
||RFC 3659 extension to LIST
||RFC 3659 extension to LIST
||make a directory
||like LIST, but much less verbose
||do nothing, used for keep-alive
||prepare for server-to-server transfer
||specify data connection port
||print the current working directory
||restore RETR or STOR command at file offset
||retrieve a file
||remove a directory
||specify rename-from file name
||specify rename-to file name
||return size of file
||store a file
||show operating system type of server system
||specify data transfer type
||specify user name
Remaining FTP requests, as specified in Internet RFC959, are not recognized at
the moment. Patches are welcome!
also supports TFTP, the Trivial File
Transfer Protocol, which is often used for net booting diskless devices, e.g.,
BOOTP and PXEBOOT.
The TFTP server currently supports the following requests.
||Read Request for file, may have options
||Write Request for file, may have options
||File data, preceded by block n:o
||Error, end of session
||ACKnowledge DATA or WRQ without options
||Option acknowledged, sent as response to RRQ/WRQ
supports TFTP blocksize negotiation,
according to RFC2348, so full sized Ethernet frames can be used, which greatly
speeds up transfers.
- FTP Welcome notice.
- Message of the day, presented after successful FTP login.
- Displayed to user attempting to connect. Access is refused if this file
was written by Joachim Nilsson
⟨mailto:firstname.lastname@example.org⟩ and is maintained at
Here be dragons.