146 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.\" Copyright (c) 1985 Regents of the University of California.
 | 
						|
.\" All rights reserved.  The Berkeley software License Agreement
 | 
						|
.\" specifies the terms and conditions for redistribution.
 | 
						|
.\"
 | 
						|
.\"	@(#)ftpd.8c	6.4 (Berkeley) 5/28/86
 | 
						|
.\"
 | 
						|
.TH FTPD 8
 | 
						|
.SH NAME
 | 
						|
ftpd, in.ftpd, setup.anonftp \- DARPA Internet File Transfer Protocol server
 | 
						|
.SH SYNOPSIS
 | 
						|
.B "ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd"
 | 
						|
.br
 | 
						|
.B "tcpd ftp /usr/sbin/in.ftpd"
 | 
						|
.SH DESCRIPTION
 | 
						|
.B Ftpd
 | 
						|
is the DARPA Internet File Transfer Prototocol
 | 
						|
server process.  The server uses the TCP protocol
 | 
						|
and listens at the port specified in the ``ftp''
 | 
						|
service specification; see
 | 
						|
.BR services (5).
 | 
						|
.PP
 | 
						|
The ftp server currently supports the following ftp
 | 
						|
requests;  case is not distinguished.
 | 
						|
.PP
 | 
						|
.nf
 | 
						|
.ta \w'Request        'u
 | 
						|
\fBRequest	Description\fP
 | 
						|
ABOR	abort previous command
 | 
						|
ACCT	specify account (ignored)
 | 
						|
ALLO	allocate storage (vacuously)
 | 
						|
APPE	append to a file
 | 
						|
CDUP	change to parent of current working directory
 | 
						|
CWD	change working directory
 | 
						|
DELE	delete a file
 | 
						|
HELP	give help information
 | 
						|
LIST	give list files in a directory (``ls -lA'')
 | 
						|
MKD	make a directory
 | 
						|
MODE	specify data transfer \fImode\fP
 | 
						|
NLST	give name list of files in directory (``ls'')
 | 
						|
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
 | 
						|
RETR	retrieve a file
 | 
						|
RMD	remove a directory
 | 
						|
RNFR	specify rename-from file name
 | 
						|
RNTO	specify rename-to file name
 | 
						|
STOR	store a file
 | 
						|
STOU	store a file with a unique name
 | 
						|
STRU	specify data transfer \fIstructure\fP
 | 
						|
TYPE	specify data transfer \fItype\fP
 | 
						|
USER	specify user name
 | 
						|
XCUP	change to parent of current working directory
 | 
						|
XCWD	change working directory
 | 
						|
XMKD	make a directory
 | 
						|
XPWD	print the current working directory
 | 
						|
XRMD	remove a directory
 | 
						|
.fi
 | 
						|
.PP
 | 
						|
The remaining ftp requests specified in Internet RFC 959 are
 | 
						|
recognized, but not implemented.
 | 
						|
.PP
 | 
						|
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 Internet RFC 959.
 | 
						|
.PP
 | 
						|
.B Ftpd
 | 
						|
interprets file names according to the ``globbing''
 | 
						|
conventions used by
 | 
						|
.BR csh (1).
 | 
						|
This allows users to utilize the metacharacters ``*?[]{}~''.
 | 
						|
.PP
 | 
						|
.B Ftpd
 | 
						|
authenticates users according to three rules. 
 | 
						|
.IP 1)
 | 
						|
The user name must be in the password data base,
 | 
						|
.BR /etc/passwd ,
 | 
						|
and not have a null password.  In this case a password
 | 
						|
must be provided by the client before any file operations
 | 
						|
may be performed.
 | 
						|
.IP 2)
 | 
						|
The user name must not appear in the file
 | 
						|
.BR /etc/ftpusers .
 | 
						|
.IP 3)
 | 
						|
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 this
 | 
						|
is given as the client host's name).
 | 
						|
.PP
 | 
						|
In the last case, 
 | 
						|
.B ftpd
 | 
						|
takes special measures to restrict the client's access privileges.
 | 
						|
The server performs a 
 | 
						|
.BR chroot (2)
 | 
						|
command to the home directory of the ``ftp'' user.
 | 
						|
In order that system security is not breached, it is recommended
 | 
						|
that the ``ftp'' subtree be constructed with care;  the following
 | 
						|
rules are recommended.
 | 
						|
.IP ~ftp)
 | 
						|
Make the home directory owned by ``ftp'' and unwritable by anyone.
 | 
						|
.IP ~ftp/bin)
 | 
						|
Make this directory owned by the super-user and unwritable by
 | 
						|
anyone.  The program
 | 
						|
.BR ls (1)
 | 
						|
must be present to support the list commands.  This
 | 
						|
program should have mode 111.
 | 
						|
.IP ~ftp/etc)
 | 
						|
This directory could be created, and could have
 | 
						|
.BR passwd (5)
 | 
						|
and
 | 
						|
.BR group (5)
 | 
						|
databases in it so that
 | 
						|
.B ls
 | 
						|
can show file ownership, but outsiders will grab your password file and
 | 
						|
misuse it to spam you.  So don't bother.
 | 
						|
.IP ~ftp/pub)
 | 
						|
Make this directory mode 755 and owned by the super-user.  Create
 | 
						|
directories in it owned by users if those users want to manage an
 | 
						|
anonymous ftp directory.
 | 
						|
.IP ~ftp/pub/incoming)
 | 
						|
Optionally create this directory for anonymous uploads.  Make it mode
 | 
						|
777.  The FTP daemon will create files with mode 266, so remote users
 | 
						|
can write a file, but only local users can do something with it.
 | 
						|
.PP
 | 
						|
The script
 | 
						|
.B setup.anonftp
 | 
						|
can be used to create or check an anonymous FTP tree.
 | 
						|
.SH "SEE ALSO"
 | 
						|
.BR ftp (1).
 | 
						|
.SH BUGS
 | 
						|
The anonymous account is inherently dangerous and should
 | 
						|
avoided when possible.
 | 
						|
.ig \" MINIX 3 doesn't have privileged port numbers (yet?)
 | 
						|
.PP
 | 
						|
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.
 | 
						|
..
 |