UFTPD(8)
π¦ UFTPD(8) β the system manager's manual, but make it make sense
okay bestie, so this is the uftpd(8) page from the System Manager's Manual π
and it's literally the manual for a TFTP/FTP server. no cap, it's shorter than you'd think. let's get into it β¨
πΈ NAME
uftpd β the No nonsense TFTP/FTP Server π
β¨ SYNOPSIS
uftpd [-hnsv] [-l LOG] [-o ftp=PORT,tftp=PORT,writable] [-p FILE] [PATH]
that's it. that's the whole vibe check π«Ά
π DESCRIPTION
uftpd is a very simple TFTP server and anonymous FTP server, and it's got inetd support too. it listens on the standard Internet ports for each protocol, as defined in the system service specification /etc/services β unless you give it other ports on the command line. for the deets, go see services(5) π
if you run it with zero command line arguments, uftpd serves both FTP and TFTP and automatically backgrounds itself. usually that means it listens on port 21 (FTP) and port 69 (TFTP), serves files from /srv/ftp, and logs to syslog. messages get written to syslog using the LOG_FTP facility. iconic behaviour, honestly π
here's the command line options, and yes we're going through all of them:
-hβ shows the built-in help text π-l LOGβ sets the log level:none,err,notice,info,debug. by default the log level isnotice, which is less verbose thaninfobut still logs all the relevant events: users logging in, uploading, downloading, creating and removing directories, etc. wanna reduce the log level? startuftpdwith-l error.-nβ runs in the foreground, does not detach from the controlling terminal π₯οΈ-oβ sets auftpdoption; separate multiple options with a comma. the options are:ftp=PORTtftp=PORTwritablepasv_addr=ADDR
these override the Internet ports otherwise derived from services(5). set the PORT to zero (0) to disable a service π«
the writable option enables a writable FTP root, which is not recommended. some people want this, but the recommendation is to instead rely on a writable sub-directory, like upload/, or similar. like... please just use a subdir bestie π
an address passed to the client in passive mode can be overridden with the pasv_addr option β the real data socket address stays unchanged. this may be useful for passing through some types of NAT π
-p FILEβ the file to store the process ID in, for signalinguftpd. the default depends on howuftpdwas configured at build time, and also on the UNIX system it runs on, but often it's found in/var/run/uftpd.pidπ-sβ uses syslog, even if running in the foreground. this is the default when running in the background π-vβ shows the program version π·οΈPATHβ the root directory. the default is to serve files from the FTP user's$HOME. when started as root,uftpdwill chroot to this directory as a security measure π
π§ Inetd
uftpd 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 inetd mode, uftpd must be called as either in.tftpd or in.ftpd π in inetd mode uftpd always runs in the foreground with syslog for messages.
π FTP
the file /etc/nologin can be used to disable FTP access. if the file exists, uftpd displays it and exits. if the file /etc/ftpwelcome exists, uftpd prints it before issuing the "ready" message. if the file /etc/motd exists, uftpd prints it after a successful login. and if the file .message exists in a directory, uftpd prints it when that directory is entered π
the FTP server currently supports the following requests. the case of the requests is ignored:
ABORβ abort current transferCDUPβ shorthand forCD ..commandCWDβ change working directoryCLNTβ accepted and ignored by serverDELEβ delete a fileEPRTβ RFC 2428, extended PORT commandEPSVβ extended PASV command, used by VLC for AndroidFEATβ list supported featuresHELPβ show help textLISTβ give list files in a directory (ls -lgA)MDTMβ RFC 3659, return the last-modified time of a fileMLSTβ RFC 3659 extension to LISTMLSDβ RFC 3659 extension to LISTMKDβ make a directoryNLSTβ like LIST, but much less verboseNOOPβ do nothing, used for keep-alivePASSβ specify passwordPASVβ prepare for server-to-server transferPORTβ specify data connection portPWDβ print the current working directoryQUITβ terminate sessionRESTβ restore RETR or STOR command at file offsetRETRβ retrieve a fileRMDβ remove a directoryRNFRβ specify rename-from file nameRNTOβ specify rename-to file nameSIZEβ return size of fileSTORβ store a fileSYSTβ show operating system type of server systemTYPEβ specify data transfer typeUSERβ specify user name
the remaining FTP requests, as specified in Internet RFC959, are not recognized at the moment. patches are welcome! ππ«Ά
π TFTP
uftpd 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:
RRQβ Read Request for file, may have optionsWRQβ Write Request for file, may have optionsDATAβ File data, preceded by block n:oERRORβ Error, end of sessionACKβ ACKnowledge DATA or WRQ without optionsOACKβ Option acknowledged, sent as response to RRQ/WRQ
uftpd supports TFTP blocksize negotiation, according to RFC2348, so full sized Ethernet frames can be used, which greatly speeds up transfers β‘ no cap, it's fast.
π FILES
/etc/ftpwelcomeβ FTP Welcome notice./etc/motdβ Message of the day, presented after successful FTP login./etc/nologinβ Displayed to user attempting to connect. Access is refused if this file exists./var/run/uftpd.pidβ Program default PID file, created only whenuftpdis ready with its internal setup and able to service signals. note,uftpdexits on most signals. so no special processing is done atm. π
π SEE ALSO
πΈ AUTHORS
uftpd was written by Joachim Wiberg β¨mailto:troglobit@gmail.comβ© and is maintained at β¨https://github.com/troglobit/uftpdβ© π«Ά
π BUGS
Here be dragons. π
fr fr that's the whole page. no notes.
and that's a wrap, bestie β this was uftpd (2.14) from December 6, 2021, page UFTPD(8), signing off πβ¨
π¦ where this page comes from
- nixpkgs unstable: uftpd 2.17
- Copyright (c) 2014-2026 Joachim Wiberg <troglobit@gmail.com>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms