Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
FTPD(8)			    System Manager's Manual		       FTPD(8)

NAME
       ftpd -- Internet	File Transfer Protocol server

SYNOPSIS
       ftpd  [-468ABDdEhMmOoRrSUvW] [-l	[-l]] [-a address] [-P port] [-p file]
	    [-T	maxtimeout] [-t	timeout] [-u umask]

DESCRIPTION
       The ftpd	utility	is the Internet	File Transfer Protocol server process.
       The server uses the TCP protocol	and listens at the port	specified with
       the -P option or	in the "ftp" service specification; see	services(5).

       Available options:

       -4      When -D is specified, accept connections	via AF_INET socket.

       -6      When -D is specified, accept connections	via AF_INET6 socket.

       -8      Enable transparent UTF-8	mode.  RFC 2640	compliant clients will
	       be told that the	character  encoding  used  by  the  server  is
	       UTF-8, which is the only	effect of the option.

	       This  option does not enable any	encoding conversion for	server
	       file names; it implies instead that the names of	files  on  the
	       server are encoded in UTF-8.  As	for files uploaded via FTP, it
	       is  the	duty of	the RFC	2640 compliant client to convert their
	       names from the client's local encoding to UTF-8.	  FTP  command
	       names  and own ftpd messages are	always encoded in ASCII, which
	       is a subset of UTF-8.  Hence no need for	server-side conversion
	       at all.

       -A      Allow only anonymous ftp	access.

       -a      When -D is specified, accept connections	only on	the  specified
	       address.

       -B      With  this  option  set,	 ftpd sends authentication success and
	       failure messages	to the blacklistd(8) daemon.  If  this	option
	       is not specified, no communcation with the blacklistd(8)	daemon
	       is attempted.

       -D      With this option	set, ftpd will detach and become a daemon, ac-
	       cepting	connections  on	 the  FTP  port	 and  forking children
	       processes to handle them.  This is lower	overhead than starting
	       ftpd from inetd(8) and is thus useful on	busy servers to	reduce
	       load.

       -d      Debugging information is	written	to the syslog using LOG_FTP.

       -E      Disable the EPSV	command.  This is useful  for  servers	behind
	       older firewalls.

       -h      Disable	printing host-specific information, such as the	server
	       software	version	or hostname, in	server messages.

       -l      Each successful and failed ftp(1) session is logged using  sys-
	       log  with  a  facility of LOG_FTP.  If this option is specified
	       twice, the retrieve (get), store	(put),	append,	 delete,  make
	       directory,  remove  directory  and  rename operations and their
	       filename	arguments are also  logged.   By  default,  syslogd(8)
	       logs these to /var/log/xferlog.

       -M      Prevent anonymous users from creating directories.

       -m      Permit anonymous	users to overwrite or modify existing files if
	       allowed	by  file  system  permissions.	 By default, anonymous
	       users cannot modify existing files; in particular, files	to up-
	       load will be created under a unique name.

       -O      Put server in write-only	mode for anonymous users  only.	  RETR
	       is  disabled  for  anonymous  users, preventing anonymous down-
	       loads.  This has	no effect if -o	is also	specified.

       -o      Put server in write-only	mode.  RETR  is	 disabled,  preventing
	       downloads.

       -P      When  -D	is specified, accept connections at port, specified as
	       a numeric value or service name,	 instead  of  at  the  default
	       "ftp" port.

       -p      When -D is specified, write the daemon's	process	ID to file in-
	       stead of	the default pid	file, /var/run/ftpd.pid.

       -R      With  this  option set, ftpd will revert	to historical behavior
	       with regard to security checks on user operations and  restric-
	       tions  on  PORT requests.  Currently, ftpd will only honor PORT
	       commands	directed to unprivileged ports on  the	remote	user's
	       host  (which violates the FTP protocol specification but	closes
	       some security holes).

       -r      Put server in read-only mode.  All commands  which  may	modify
	       the local file system are disabled.

       -S      With this option	set, ftpd logs all anonymous file downloads to
	       the file	/var/log/ftpd when this	file exists.

       -T      A client	may also request a different timeout period; the maxi-
	       mum  period  allowed  may be set	to timeout seconds with	the -T
	       option.	The default limit is 2 hours.

       -t      The inactivity timeout period is	set to	timeout	 seconds  (the
	       default is 15 minutes).

       -U      This  option  instructs	ftpd to	use data ports in the range of
	       IP_PORTRANGE_DEFAULT   instead	of    in    the	   range    of
	       IP_PORTRANGE_HIGH.   Such  a change may be useful for some spe-
	       cific firewall configurations; see ip(4)	for more information.

	       Note that option	is a virtual no-op in FreeBSD 5.0  and	above;
	       both port ranges	are identical by default.

       -u      The  default  file creation mode	mask is	set to umask, which is
	       expected	to be an octal numeric value.  Refer to	 umask(2)  for
	       details.	 This option may be overridden by login.conf(5).

       -v      A synonym for -d.

       -W      Do not log FTP sessions to the user accounting database.

       The  file  /var/run/nologin  can	be used	to disable ftp access.	If the
       file exists, ftpd displays it and exits.	 If the	 file  /etc/ftpwelcome
       exists, ftpd prints it before issuing the "ready" message.  If the file
       /etc/ftpmotd exists, ftpd prints	it after a successful login.  Note the
       motd  file  used	 is  the  one relative to the login environment.  This
       means the one in	~ftp/etc in the	anonymous user's case.

       The ftp server currently	supports the following ftp requests.  The case
       of the requests is ignored.  Requests marked [RW] are disabled if -r is
       specified.

	     Request	Description
	     ABOR	abort previous command
	     ACCT	specify	account	(ignored)
	     ALLO	allocate storage (vacuously)
	     APPE	append to a file [RW]
	     CDUP	change to parent of current working directory
	     CWD	change working directory
	     DELE	delete a file [RW]
	     EPRT	specify	data connection	port, multiprotocol
	     EPSV	prepare	for server-to-server transfer, multiprotocol
	     FEAT	give information on extended features of server
	     HELP	give help information
	     LIST	give list files	in a directory ("ls -lA")
	     LPRT	specify	data connection	port, multiprotocol
	     LPSV	prepare	for server-to-server transfer, multiprotocol
	     MDTM	show last modification time of file
	     MKD	make a directory [RW]
	     MODE	specify	data transfer mode
	     NLST	give name list of files	in directory
	     NOOP	do nothing
	     PASS	specify	password
	     PASV	prepare	for server-to-server transfer
	     PORT	specify	data connection	port
	     PWD	print the current working directory
	     QUIT	terminate session
	     REST	restart	incomplete transfer
	     RETR	retrieve a file
	     RMD	remove a directory [RW]
	     RNFR	specify	rename-from file name [RW]
	     RNTO	specify	rename-to file name [RW]
	     SITE	non-standard commands (see next	section)
	     SIZE	return size of file
	     STAT	return status of server
	     STOR	store a	file [RW]
	     STOU	store a	file with a unique name	[RW]
	     STRU	specify	data transfer structure
	     SYST	show operating system type of server system
	     TYPE	specify	data transfer type
	     USER	specify	user name
	     XCUP	change	to  parent  of	 current   working   directory
			(deprecated)
	     XCWD	change working directory (deprecated)
	     XMKD	make a directory (deprecated) [RW]
	     XPWD	print the current working directory (deprecated)
	     XRMD	remove a directory (deprecated)	[RW]

       The  following  non-standard or Unix specific commands are supported by
       the SITE	request.

	     Request	Description
	     UMASK	change umask, e.g. ``SITE UMASK	002''
	     IDLE	set idle-timer,	e.g. ``SITE IDLE 60''
	     CHMOD	change mode of a file  [RW],  e.g.  ``SITE  CHMOD  755
			filename''
	     MD5	report	 the  files  MD5  checksum,  e.g.  ``SITE  MD5
			filename''
	     HELP	give help information

       Note: SITE requests are disabled	in case	of anonymous logins.

       The remaining ftp requests specified in Internet	 RFC  959  are	recog-
       nized,  but  not	 implemented.	MDTM and SIZE are not specified	in RFC
       959, but	will appear in the next	updated	FTP RFC.   To  avoid  possible
       denial-of-service  attacks,  SIZE  requests  against  files larger than
       10240 bytes will	be denied if the current transfer type is ASCII.

       The ftp server will abort an active file	transfer only  when  the  ABOR
       command	is  preceded by	a Telnet "Interrupt Process" (IP) signal and a
       Telnet "Synch" signal in	the command Telnet stream, as described	in In-
       ternet RFC 959.	If a STAT command is received during a data  transfer,
       preceded	by a Telnet IP and Synch, transfer status will be returned.

       The ftpd	utility	interprets file	names according	to the "globbing" con-
       ventions	 used by csh(1).  This allows users to utilize the metacharac-
       ters "*?[]{}~".

       The ftpd	utility	authenticates users according to six rules.

	     1.	  The login name must be in the	password  data	base  and  not
		  have	a null password.  In this case a password must be pro-
		  vided	by the client before any file operations may  be  per-
		  formed.

	     2.	  The login name must not appear in the	file /etc/ftpusers.

	     3.	  The  login name must not be a	member of a group specified in
		  the file /etc/ftpusers.  Entries in this file	interpreted as
		  group	names are prefixed by an "at" `@' sign.

	     4.	  The  user  must  have	  a   standard	 shell	 returned   by
		  getusershell(3).

	     5.	  If  the user name appears in the file	/etc/ftpchroot,	or the
		  user is a member of a	group with a group entry in this file,
		  i.e.,	one prefixed with `@',	the  session's	root  will  be
		  changed  to  the  directory specified	in this	file or	to the
		  user's login directory by chroot(2) as for an	"anonymous" or
		  "ftp"	account	(see next item).  See ftpchroot(5) for	a  de-
		  tailed  description of the format of this file.  This	facil-
		  ity may also be triggered by enabling	the  boolean  "ftp-ch-
		  root"	 capability  in	login.conf(5).	However, the user must
		  still	supply a password.  This feature is intended as	a com-
		  promise between a fully anonymous account and	a fully	privi-
		  leged	account.  The account should also be set up as for  an
		  anonymous account.

	     6.	  If  the  user	name is	"anonymous" or "ftp", an anonymous ftp
		  account must be present in the password file	(user  "ftp").
		  In this case the user	is allowed to log in by	specifying any
		  password (by convention an email address for the user	should
		  be  used  as	the password).	When the -S option is set, all
		  transfers are	logged as well.

       In the last case, ftpd takes special measures to	restrict the  client's
       access  privileges.  The	server performs	a chroot(2) to the home	direc-
       tory of the "ftp" user.	As a special case if the "ftp" user's home di-
       rectory pathname	contains the /./ separator, ftpd  uses	its  left-hand
       side  as	 the  name of the directory to do chroot(2) to,	and its	right-
       hand side to change the current directory to afterwards.	 A typical ex-
       ample for this case would be /var/spool/ftp/./pub.  In order that  sys-
       tem  security is	not breached, it is recommended	that the "ftp" subtree
       be constructed with care, following these rules:

	     ~ftp      Make the	home directory owned by	"root" and  unwritable
		       by anyone.

	     ~ftp/etc  Make  this  directory owned by "root" and unwritable by
		       anyone (mode 555).  The files  pwd.db  (see  passwd(5))
		       and  group(5)  must be present for the ls(1) command to
		       be able to produce owner	 names	rather	than  numbers.
		       The password field in passwd(5) is not used, and	should
		       not  contain  real  passwords.	The  file  ftpmotd, if
		       present,	will be	 printed  after	 a  successful	login.
		       These files should be mode 444.

	     ~ftp/pub  This directory and the subdirectories beneath it	should
		       be  owned by the	users and groups responsible for plac-
		       ing files in them, and be writable only by  them	 (mode
		       755  or	775).  They should not be owned	or writable by
		       "ftp" or	its group, otherwise guest users can fill  the
		       drive with unwanted files.

       If the system has multiple IP addresses,	ftpd supports the idea of vir-
       tual hosts, which provides the ability to define	multiple anonymous ftp
       areas,  each  one  allocated to a different internet address.  The file
       /etc/ftphosts contains information pertaining to	each  of  the  virtual
       hosts.  Each host is defined on its own line which contains a number of
       fields separated	by whitespace:

	     hostname  Contains	 the  hostname	or  IP	address	of the virtual
		       host.

	     user      Contains	a user record in the system password file.  As
		       with normal anonymous ftp, this user's access uid,  gid
		       and  group  memberships	determine  file	 access	to the
		       anonymous ftp area.  The	anonymous ftp area  (to	 which
		       any  user  is  chrooted	on login) is determined	by the
		       home directory defined for the account.	 User  id  and
		       group  for  any	ftp account may	be the same as for the
		       standard	ftp user.

	     statfile  File to which all file transfers	are logged, which  de-
		       faults to /var/log/ftpd.

	     welcome   This  file  is the welcome message displayed before the
		       server ready prompt.  It	defaults to /etc/ftpwelcome.

	     motd      This file is displayed after the	user logs in.  It  de-
		       faults to /etc/ftpmotd.

       Lines  beginning	with a '#' are ignored and can be used to include com-
       ments.

       Defining	a virtual host for the primary IP address or hostname  changes
       the  default  for  ftp logins to	that address.  The 'user', 'statfile',
       'welcome' and 'motd' fields may be left blank, or a single  hyphen  '-'
       used to indicate	that the default value is to be	used.

       As  with	 any  anonymous	login configuration, due care must be given to
       setup and maintenance to	guard against security related problems.

       The ftpd	utility	has internal support for handling remote  requests  to
       list  files,  and will not execute /bin/ls in either a chrooted or non-
       chrooted	environment.  The ~/bin/ls executable need not be placed  into
       the chrooted tree, nor need the ~/bin directory exist.

FILES
       /etc/ftpusers	  List of unwelcome/restricted users.
       /etc/ftpchroot	  List of normal users who should be chroot'd.
       /etc/ftphosts	  Virtual hosting configuration	file.
       /etc/ftpwelcome	  Welcome notice.
       /etc/ftpmotd	  Welcome notice after login.
       /var/run/ftpd.pid  Default pid file for daemon mode.
       /var/run/nologin	  Displayed and	access refused.
       /var/log/ftpd	  Log file for anonymous transfers.
       /var/log/xferlog	  Default place	for session logs.
       /var/spool/ftp	  Recommended  directory  for  the  FTP	root directory
			  (the home directory of the ftp user).

SEE ALSO
       ftp(1),	 umask(2),   getusershell(3),	ftpchroot(5),	login.conf(5),
       inetd(8), syslogd(8)

HISTORY
       The  ftpd  utility  appeared in 4.2BSD.	IPv6 support was added in WIDE
       Hydrangea IPv6 stack kit.

BUGS
       The server must run as the super-user to	create sockets with privileged
       port numbers.  It maintains an effective	user id	of the logged in user,
       reverting to the	super-user only	when  binding  addresses  to  sockets.
       The  possible security holes have been extensively scrutinized, but are
       possibly	incomplete.

FreeBSD	Ports 14.quarterly     September 9, 2023		       FTPD(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ftpd&sektion=8&manpath=FreeBSD+Ports+14.3.quarterly>

home | help