errorlogs.net /FTP Logs
vsftpd ProFTPD
vsftpd Log Format

vsftpd logs to /var/log/vsftpd.log (when xferlog_enable=YES), or to syslog via /var/log/auth.log for auth events. The transfer log follows the WU-FTP xferlog format.

Thu Apr 10 17:05:33 2025 1 203.0.113.42 1048576 /home/user/upload/backup.tar.gz b _ i r alice ftp 0 * c
Timestamp Transfer time (sec) Remote host File size (bytes) Filename Type / Action / Direction / Access Username Service / Auth / Status

xferlog Field Reference (all 14 positional fields)

PositionField NameValues & Meaning
1TimestampDay Mon DD HH:MM:SS YYYY — local time when transfer completed.
2Transfer timeSeconds taken for transfer. High values = network slowness or very large file.
3Remote hostClient IP or hostname. IP preferred (no DNS dependency).
4File sizeBytes transferred. For aborted transfers, this may be less than the full file size.
5FilenameFull path to transferred file on server filesystem.
6Transfer typea = ASCII (text, line endings converted), b = binary (exact copy). Always use binary for non-text.
7Special action_ = none, C = compressed, U = uncompressed, T = tar'd
8Directioni = incoming (upload to server), o = outgoing (download from server)
9Access modea = anonymous, g = guest, r = real (authenticated) user
10UsernameFTP username. Anonymous logins show anonymous or email used as password.
11Service nameUsually ftp. Identifies the service that generated the entry.
12Auth method0 = none/anonymous, 1 = RFC 931 ident
13Auth user ID* if not available
14Transfer statusc = complete (success), i = incomplete (aborted mid-transfer)
⚠ Security Warning
Plain FTP transmits credentials in cleartext. If you see FTP logs on a public interface, verify that FTPS (ssl_enable=YES in vsftpd.conf) or SFTP (SSH-based file transfer) is in use. Plain FTP should never be exposed to the internet.
ProFTPD Log Format

ProFTPD uses a more readable format and supports extensive custom logging via LogFormat directives. Default log: /var/log/proftpd/proftpd.log.

# Auth events in system log
Apr 10 17:10:05 webserver proftpd[4521]: 203.0.113.42 - USER alice: Login successful.
Apr 10 17:10:07 webserver proftpd[4521]: 203.0.113.42 - RETR /pub/file.zip completed.
Apr 10 17:10:09 webserver proftpd[4521]: 198.51.100.7 - USER baduser (Login failed): Incorrect password.

ProFTPD LogFormat Directive Reference

DirectiveMeaning
%aClient IP address
%AAnonymous password (email address provided)
%bBytes sent to client
%BBytes received from client (upload size)
%DFull directory path of last CWD command
%ESession end reason: LOGOUT, TIMEOUT, CLIENT_DISCONNECT, SERVER_SHUTDOWN
%fFilename from most recent transfer command
%FFilename as stored locally on server
%hResolved hostname of client (slow if DNS not cached)
%HName of virtual host serving this connection
%ITotal bytes received this session
%mFTP command issued (RETR, STOR, DELE, MKD, RMD, etc.)
%OTotal bytes sent this session
%pServer port number
%rFull FTP request line as received
%sFTP reply code sent back to client
%SFull response string from server
%TTransfer time in seconds
%uAuthenticated username
%UUsername as submitted (before auth, may differ from %u on failure)
%wRNFR path (rename-from, for RNTO operations)
%{TIME}Current timestamp in strftime format
FTP Reply Code Reference

FTP reply codes are 3-digit numbers. The first digit = category (1=positive preliminary, 2=positive completion, 3=positive intermediate, 4=transient negative, 5=permanent negative). The second groups the type; the third is specific.

CodeNameMeaning & Common Cause
125Data connection openTransfer starting. Normal for RETR/STOR in active mode.
150File status okayAbout to open data connection. Passive mode transfer starting.
200Command okayGeneric success for administrative commands.
220Service readyServer greeting after connection. Contains FTP daemon banner.
221Service closingClean logout (QUIT). Normal session end.
226Transfer completeFile transfer succeeded. Closing data connection.
227Entering Passive ModePASV response with IP:port for data connection (dotted quad format).
230User logged inAuthentication successful. Session established.
250File action okayCWD, DELE, RMD, RNTO completed successfully.
331Password requiredUsername accepted, waiting for password. Normal mid-auth.
425Can't open data connectionFirewall blocking data port. Check passive port range and NAT settings.
426Connection closed, transfer abortedNetwork interruption during transfer. Check connectivity or firewall timeout.
430Invalid username or passwordAuthentication failure. Repeated occurrences = brute force attempt.
450File unavailableFile busy (locked by another process) or temporary unavailability.
451Local error in processingServer-side error during transfer. Check disk space and filesystem health.
452Insufficient storage spaceDisk full on server. Critical — check df -h immediately.
500Syntax errorCommand not recognized. May indicate non-standard client or probe attempt.
530Not logged inCommand requires authentication. Login failed or session expired.
550File unavailableFile not found or permission denied. Check path and user permissions.
553File name not allowedFilename contains disallowed characters or path traversal attempt detected.