diff options
| author | lukem <lukem@NetBSD.org> | 1999-12-16 01:16:04 +0000 |
|---|---|---|
| committer | lukem <lukem@NetBSD.org> | 1999-12-16 01:16:04 +0000 |
| commit | 6be4a7c9bdfd33a843dcab44473c488d6be59a42 (patch) | |
| tree | 98e09739c46d539381012e99433d88634e810f17 /libexec | |
| parent | 2b9d9a94990779d7c1c7502e0d715585b3e73ce6 (diff) | |
separate ftpd.conf(5) and ftpusers(5) out from ftpd(8).
xxx: still needs a bit of work
Diffstat (limited to 'libexec')
| -rw-r--r-- | libexec/ftpd/Makefile | 5 | ||||
| -rw-r--r-- | libexec/ftpd/ftpd.8 | 385 | ||||
| -rw-r--r-- | libexec/ftpd/ftpd.conf.5 | 325 | ||||
| -rw-r--r-- | libexec/ftpd/ftpusers.5 | 154 |
4 files changed, 502 insertions, 367 deletions
diff --git a/libexec/ftpd/Makefile b/libexec/ftpd/Makefile index 6be37484251..6850c0ac9ce 100644 --- a/libexec/ftpd/Makefile +++ b/libexec/ftpd/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.36 1999/12/07 05:30:53 lukem Exp $ +# $NetBSD: Makefile,v 1.37 1999/12/16 01:16:04 lukem Exp $ # @(#)Makefile 8.2 (Berkeley) 4/4/94 SRCTOP= ../.. @@ -9,8 +9,7 @@ SRCS= conf.c ftpd.c ftpcmd.y logwtmp.c popen.c CPPFLAGS+=-DHASSETPROCTITLE DPADD+= ${LIBCRYPT} ${LIBUTIL} LDADD+= -lcrypt -lutil -MAN= ftpd.8 -MLINKS+=ftpd.8 ftpd.conf.5 +MAN= ftpd.conf.5 ftpusers.5 ftpd.8 # for `internal' ls SRCS+= ls.c cmp.c print.c stat_flags.c util.c diff --git a/libexec/ftpd/ftpd.8 b/libexec/ftpd/ftpd.8 index 82be5e41fff..0862fabf884 100644 --- a/libexec/ftpd/ftpd.8 +++ b/libexec/ftpd/ftpd.8 @@ -1,4 +1,4 @@ -.\" $NetBSD: ftpd.8,v 1.42 1999/12/12 14:05:54 lukem Exp $ +.\" $NetBSD: ftpd.8,v 1.43 1999/12/16 01:16:04 lukem Exp $ .\" .\" Copyright (c) 1997-1999 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -71,8 +71,7 @@ .Dt FTPD 8 .Os .Sh NAME -.Nm ftpd , -.Nm ftpd.conf +.Nm ftpd .Nd Internet File Transfer Protocol server .Sh SYNOPSIS @@ -106,7 +105,7 @@ to .It Fl C Check whether the specified user would be granted access under the restrictions given in -.Pa /etc/ftpusers +.Xr ftpusers 5 and exit without attempting a connection. .Nm exits with an exit code of 0 if access would be granted, or 1 otherwise. @@ -143,7 +142,7 @@ exists, .Nm prints it after a successful login. (This may be changed with the -.Sx /etc/ftpd.conf +.Xr ftpd.conf 5 directive .Sy upload . ) .Pp @@ -238,7 +237,8 @@ conventions used by .Xr csh 1 . This allows users to utilize the metacharacters .Dq Li \&*?[]{}~ . -.Ss User authentication +.Sh User authentication +.Pp .Nm authenticates users according to five rules. .Pp @@ -261,8 +261,7 @@ for more information on S/Key authentication. S/Key is a Trademark of Bellcore. .It The login name must be allowed based on the information in -.Pa /etc/ftpusers -(see below). +.Xr ftpusers 5 . .It The user must have a standard shell returned by .Xr getusershell 3 . @@ -304,360 +303,11 @@ user. If other restrictions are required (such as disabling of certain commands and the setting of a specific umask), then appropriate entries in -.Pa /etc/ftpd.conf +.Xr ftpd.conf 5 are required. .El -.Ss /etc/ftpusers -The file -.Pa /etc/ftpusers -is used to determine which users may use ftp. -If the file does not exist, all users are denied access. -.Pp -A -.Dq \e -is the escape character; it can be used to escape the meaning of the -comment character, or if it is the last character on a line, extends -a configuration directive across multiple lines. -A -.Dq # -is the comment character, and all characters from it to the end of -line are ignored (unless it is escaped with the escape character). -.Pp -The syntax of each line is: -.Dl userglob[@host] [directive [class]] -.Pp -.Sy userglob -is matched against the username, using -.Xr fnmatch 3 -glob matching. -.Pp -.Sy host -may be either a CIDR address (refer to -.Xr inet_net_pton 3 ) -to match against the remote address, -or a glob to match against the remote hostname. -.Pp -If -.Sy directive -is given, it may be one of -.Dq allow , -.Dq yes , -.Dq deny , -or -.Dq no . -If -.Sy directive -is not given, the user is denied access. -.Pp -.Sy class -defines the class to use in -.Sx /etc/ftpd.conf . -If -.Sy class -is not given, it defaults to one of the following: -.Bl -tag -width "chroot" -offset indent -.It Sy chroot -If there is a match in -.Sx /etc/ftpchroot -for the user. -.It Sy guest -If the username is -.Dq anonymous -or -.Sq ftp . -.It Sy real -If neither of the above is true. -.El +.Sh Display file escape sequences .Pp -No further comparisons are attempted after the first successful match. -If no match is found, the user is granted access. -This syntax is backward-compatable with the old syntax. -.Pp -If a user requests a guest login, the ftp server checks to see that -both -.Dq anonymous -and -.Dq ftp -have access, so if you deny all users by default, you will need to add both -.Dq "anonymous allow" -and -.Dq "ftp allow" -to -.Pa /etc/ftpusers -in order to allow guest logins. -.Ss /etc/ftpchroot -The file -.Pa /etc/ftpchroot -is used to determine which users will have their session's root changed -to the user's home directory (using -.Xr chroot 2 ) . -If the file does not exist, the root change is not performed. -.Pp -The syntax is similar to -.Sx /etc/ftpusers , -except that the -.Sy class -argument is ignored. -If there's a positive match, the root is changed. -No further comparisons are attempted after the first successful match. -This syntax is backward-compatable with the old syntax. -.Ss /etc/ftpd.conf -The file -.Pa /etc/ftpd.conf -is used to configure various options. -.Pp -A -.Dq \e -is the escape character; it can be used to escape the meaning of the -comment character, or if it is the last character on a line, extends -a configuration directive across multiple lines. -A -.Dq # -is the comment character, and all characters from it to the end of -line are ignored (unless it is escaped with the escape character). -.Pp -Each configuration line may be one of: -.Bl -tag -width 4n -.It Sy checkportcmd Ar class Op Sy off -Check the -PORT -command for validity. -The -PORT -command will fail if the IP address specified does not match the ftp -command connection, or if the remote TCP port number is less than -.Dv IPPORT_RESERVED . -It is -.Em strongly -encouraged that this option be used, espcially for sites concerned -with potential security problems with ftp bounce attacks. -If class is -.Dq none -or -.Sy off -is given, disable this feature, otherwise enable it. -.It Sy classtype Ar class Ar type -Set the class type of -.Ar class -to -.Ar type . -.Ar type -may be one of: -.Bl -tag -width "chroot" -offset indent -.It Sy GUEST -Guests (as per the -.Dq anonymous -and -.Dq ftp -logins). -A -.Xr chroot 2 -is performed after login. -.It Sy CHROOT -Chroot-ed users (as per -.Pa /etc/ftpchroot ) . -A -.Xr chroot 2 -is performed after login. -.It Sy REAL -Normal users. -.El -.It Xo Sy conversion Ar class -.Ar suffix Op Ar "type disable command" -.Xc -Define an automatic in-line file conversion. -If a file to retrieve ends in -.Ar suffix , -and a real file (sans -.Ar suffix ) -exists, then the output of -.Ar command -is returned instead of the contents of the file. -.Pp -.Bl -tag -width "disable" -offset indent -.It Ar suffix -The suffix to initiate the conversion. -.It Ar type -A list of valid filetypes for the conversion. -Valid types are: -.Sq f -(file), and -.Sq d -(directory). -.It Ar disable -The name of file that will prevent conversion if it exists. -A filename of -.Pa \&. -will prevent this disabling action. -.It Ar command -The command to run for the conversion. -The first word should be the full path name -of the command, as -.Xr execv 3 -is used to execute the command. -The first instance of -.Sq %s -in -.Ar command -is replaced with the requested file (sans -.Ar suffix ) . -.El -.Pp -Conversion directives specified later in the file override earlier -conversions with the same suffix. -The order in which conversions is matched is the reverse of their -order in the file (i.e. a LIFO). -.It Sy display Ar class Op Ar file -If -.Ar file -is not given or -.Ar class -is -.Dq none , -disable this. -Otherwise, each time the user enters a new directory, check if -.Ar file -exists, and if so, display its contents to the user. -.It Sy maxtimeout Ar class Ar time -Set the maximum timeout period that a client may request, -defaulting to two hours. -This cannot be less than 30 seconds, or the value for -.Sy timeout . -Ignored if class is -.Dq none -or -.Ar time -is not specified. -.It Sy modify Ar class Op Sy off -If class is -.Dq none -or -.Sy off -is given, disable the following commands: -CHMOD, DELE, MKD, RMD, RNFR, and UMASK. -Otherwise, enable them. -.It Sy motd Ar class Op Ar file -If -.Ar file -is not given or -.Ar class -is -.Dq none , -disable this. -Otherwise, use -.Ar file -as the message of the day file to display after login. -.It Sy notify Ar class Op Ar fileglob -If -.Ar fileglob -is not given or -.Ar class -is -.Dq none , -disable this. -Otherwise, each time the user enters a new directory, -notify the user of any files matching -.Ar fileglob . -.It Sy passive Ar class Op Sy off -If class is -.Dq none -or -.Sy off -is given, disallow passive (PASV/LPSV/EPSV) connections. -Otherwise, enable them. -.It Sy rateget Ar rate -Set the maximum get (RETR) transfer rate throttle to -.Ar rate . -If -.Ar rate -is 0, the throttle is disabled. -.Pp -An optional suffix may be provided, which changes the intrepretation of -.Ar rate -as follows: -.Bl -tag -width 3n -offset indent -compact -.It b -Causes no modification. (Optional) -.It k -Kilo; multiply the argument by 1024 -.It m -Mega; multiply the argument by 1048576 -.It g -Giga; multiply the argument by 1073741824 -.El -.It Sy rateput Ar class -Set the maximum put (STOR) transfer rate throttle to -.Ar rate , -which is parsed as per -.Sy rateget Ar rate . -.It Sy timeout Ar class Ar time -Set the inactivity timeout period. -(the default is fifteen minutes). -This cannot be less than 30 seconds, or greater than the value for -.Sy maxtimeout . -Ignored if class is -.Dq none -or -.Ar time -is not specified. -.It Sy umask Ar class Ar umaskval -Set the umask to -.Ar umaskval . -Ignored if class is -.Dq none -or -.Ar umaskval -is not specified. -.It Sy upload Ar class Op Sy off -If class is -.Dq none -or -.Sy off -is given, disable the following commands: -APPE, STOR, and STOU, -as well as the modify commands: -CHMOD, DELE, MKD, RMD, RNFR, and UMASK. -Otherwise, enable them. -.El -.Pp -In any configuration line, -.Ar class -may be a user specified word, or one of: -.Bl -tag -width "chroot" -compact -offset indent -.It Sy all -Matches any class. -.It Sy none -Matches no class. -.El -.Pp -The following defaults are used: -.Bd -literal -offset indent -compact -checkportcmd none -display none -maxtimeout all 7200 # 2 hours -modify all -motd all motd -notify none -passive all -timeout all 900 # 15 minutes -umask all 027 -upload all -classtype guest GUEST -modify guest off -umask guest 0707 -.Ed -.Pp -Directives that appear later in the file override settings by previous -directives. -This allows -.Sq wildcard -entries to define defaults, and then have class-specific overrides. -.Pp -The -STAT -command will return the class settings for the current user as defined by -.Pa /etc/ftpd.conf . -.Ss Display file escape sequences When .Nm displays various files back to the client (such as @@ -686,7 +336,8 @@ A .Dq \&% character. .El -.Ss Setting up a restricted ftp subtree +.Sh Setting up a restricted ftp subtree +.Pp In order that system security is not breached, it is recommended that the subtrees for the @@ -774,7 +425,7 @@ However, error messages from conversion or commands won't be returned to the user. (This is the traditional behaviour.) Note that the -.Sx /etc/ftpd.conf +.Xr ftpd.conf 5 directive .Sy upload can be used to prevent users uploading here. @@ -810,8 +461,9 @@ If it exists, displayed and access is refused. .Sh SEE ALSO .Xr ftp 1 , .Xr skey 1 , -.Xr fnmatch 3 , .Xr getusershell 3 , +.Xr ftpd.conf 5 , +.Xr ftpusers 5 , .Xr syslogd 8 .Sh STANDARDS .Nm @@ -831,7 +483,7 @@ command appeared in .Bx 4.2 . .Pp The -.Pa /etc/ftpd.conf +.Xr ftpd.conf 5 functionality was implemented in .Nx 1.3 and later releases by Luke Mewburn, based on work by Simon Burge. @@ -849,7 +501,7 @@ can be fooled into connecting to any service on any host. With the .Dq checkportcmd feature of the -.Pa /etc/ftpd.conf , +.Xr ftpd.conf 5 , PORT commands with different host addresses, or TCP ports lower than .Dv IPPORT_RESERVED will be rejected. @@ -867,3 +519,8 @@ Don't create if you don't want anonymous users to upload files there. That directory is only necessary if you want to display the error messages of conversion commands to the user. +Note that if uploads are disabled with the +.Xr ftpd.conf 5 +directive +.Sy upload , +then this directory cannot be abused by the user in this way. diff --git a/libexec/ftpd/ftpd.conf.5 b/libexec/ftpd/ftpd.conf.5 new file mode 100644 index 00000000000..576243f05e4 --- /dev/null +++ b/libexec/ftpd/ftpd.conf.5 @@ -0,0 +1,325 @@ +.\" $NetBSD: ftpd.conf.5,v 1.1 1999/12/16 01:16:04 lukem Exp $ +.\" +.\" Copyright (c) 1997-1999 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by Luke Mewburn. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the NetBSD +.\" Foundation, Inc. and its contributors. +.\" 4. Neither the name of The NetBSD Foundation nor the names of its +.\" contributors may be used to endorse or promote products derived +.\" from this software without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\" POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd December 13, 1999 +.Dt FTPD.CONF 5 +.Os +.Sh NAME +.Nm ftpd.conf +.Nd +.Xr ftpd 8 +configuration file +.Sh DESCRIPTION +The +.Nm +file specifies various configuration options for +.Xr ftpd 8 +that applies once a user has authenticated their connection. +.Pp +Each authenticated user is a member of a +.Sy class , +which is determined by +.Xr ftpusers 5 . +.Sy class +is used to determine which +.Nm +entries apply to the user. +The following special classes exist: +.Bl -tag -width "chroot" -compact -offset indent +.It Sy all +Matches any class. +.It Sy none +Matches no class. +.El +.Pp +.Nm +consists of a series of lines, each of which may contain a +configuration directive, a comment, or be a blank line. +Directives that appear later in the file override settings by previous +directives. +This allows +.Sq wildcard +entries to define defaults, and then have class-specific overrides. +.Pp +A +.Dq \e +is the escape character; it can be used to escape the meaning of the +comment character, or if it is the last character on a line, extends +a configuration directive across multiple lines. +A +.Dq # +is the comment character, and all characters from it to the end of +line are ignored (unless it is escaped with the escape character). +.Pp +The +.Xr ftpd 8 +.Sy STAT +command will return the class settings for the current user as defined by +.Nm "" . +.Pp +Each configuration line may be one of: +.Bl -tag -width 4n +.It Sy checkportcmd Ar class Op Sy off +Check the +PORT +command for validity. +The +PORT +command will fail if the IP address specified does not match the ftp +command connection, or if the remote TCP port number is less than +.Dv IPPORT_RESERVED . +It is +.Em strongly +encouraged that this option be used, espcially for sites concerned +with potential security problems with ftp bounce attacks. +If class is +.Dq none +or +.Sy off +is given, disable this feature, otherwise enable it. +.It Sy classtype Ar class Ar type +Set the class type of +.Ar class +to +.Ar type . +.Ar type +may be one of: +.Bl -tag -width "chroot" -offset indent +.It Sy GUEST +Guests (as per the +.Dq anonymous +and +.Dq ftp +logins). +A +.Xr chroot 2 +is performed after login. +.It Sy CHROOT +Chroot-ed users (as per +.Pa /etc/ftpchroot ) . +A +.Xr chroot 2 +is performed after login. +.It Sy REAL +Normal users. +.El +.It Xo Sy conversion Ar class +.Ar suffix Op Ar "type disable command" +.Xc +Define an automatic in-line file conversion. +If a file to retrieve ends in +.Ar suffix , +and a real file (sans +.Ar suffix ) +exists, then the output of +.Ar command +is returned instead of the contents of the file. +.Pp +.Bl -tag -width "disable" -offset indent +.It Ar suffix +The suffix to initiate the conversion. +.It Ar type +A list of valid filetypes for the conversion. +Valid types are: +.Sq f +(file), and +.Sq d +(directory). +.It Ar disable +The name of file that will prevent conversion if it exists. +A filename of +.Pa \&. +will prevent this disabling action. +.It Ar command +The command to run for the conversion. +The first word should be the full path name +of the command, as +.Xr execv 3 +is used to execute the command. +The first instance of +.Sq %s +in +.Ar command +is replaced with the requested file (sans +.Ar suffix ) . +.El +.Pp +Conversion directives specified later in the file override earlier +conversions with the same suffix. +.It Sy display Ar class Op Ar file +If +.Ar file +is not given or +.Ar class +is +.Dq none , +disable this. +Otherwise, each time the user enters a new directory, check if +.Ar file +exists, and if so, display its contents to the user. +.It Sy maxtimeout Ar class Ar time +Set the maximum timeout period that a client may request, +defaulting to two hours. +This cannot be less than 30 seconds, or the value for +.Sy timeout . +Ignored if class is +.Dq none +or +.Ar time +is not specified. +.It Sy modify Ar class Op Sy off +If class is +.Dq none +or +.Sy off +is given, disable the following commands: +CHMOD, DELE, MKD, RMD, RNFR, and UMASK. +Otherwise, enable them. +.It Sy motd Ar class Op Ar file +If +.Ar file +is not given or +.Ar class +is +.Dq none , +disable this. +Otherwise, use +.Ar file +as the message of the day file to display after login. +.It Sy notify Ar class Op Ar fileglob +If +.Ar fileglob +is not given or +.Ar class +is +.Dq none , +disable this. +Otherwise, each time the user enters a new directory, +notify the user of any files matching +.Ar fileglob . +.It Sy passive Ar class Op Sy off +If class is +.Dq none +or +.Sy off +is given, disallow passive (PASV/LPSV/EPSV) connections. +Otherwise, enable them. +.It Sy rateget Ar rate +Set the maximum get (RETR) transfer rate throttle to +.Ar rate . +If +.Ar rate +is 0, the throttle is disabled. +.Pp +An optional suffix may be provided, which changes the intrepretation of +.Ar rate +as follows: +.Bl -tag -width 3n -offset indent -compact +.It b +Causes no modification. (Optional) +.It k +Kilo; multiply the argument by 1024 +.It m +Mega; multiply the argument by 1048576 +.It g +Giga; multiply the argument by 1073741824 +.El +.It Sy rateput Ar class +Set the maximum put (STOR) transfer rate throttle to +.Ar rate , +which is parsed as per +.Sy rateget Ar rate . +.It Sy timeout Ar class Ar time +Set the inactivity timeout period. +(the default is fifteen minutes). +This cannot be less than 30 seconds, or greater than the value for +.Sy maxtimeout . +Ignored if class is +.Dq none +or +.Ar time +is not specified. +.It Sy umask Ar class Ar umaskval +Set the umask to +.Ar umaskval . +Ignored if class is +.Dq none +or +.Ar umaskval +is not specified. +.It Sy upload Ar class Op Sy off +If class is +.Dq none +or +.Sy off +is given, disable the following commands: +APPE, STOR, and STOU, +as well as the modify commands: +CHMOD, DELE, MKD, RMD, RNFR, and UMASK. +Otherwise, enable them. +.El +.Sh DEFAULTS +The following defaults are used: +.Pp +.Bd -literal -offset indent -compact +checkportcmd none +display none +maxtimeout all 7200 # 2 hours +modify all +motd all motd +notify none +passive all +timeout all 900 # 15 minutes +umask all 027 +upload all +classtype guest GUEST +modify guest off +umask guest 0707 +.Ed +.Sh FILES +.Bl -tag -width /etc/ftpd.conf -compact +.It Pa /etc/ftpd.conf +This file. +.El +.Sh SEE ALSO +.Xr ftpusers 5 , +.Xr ftpd 8 +.Sh HISTORY +The +.Nm +functionality was implemented in +.Nx 1.3 +and later releases by Luke Mewburn, based on work by Simon Burge. diff --git a/libexec/ftpd/ftpusers.5 b/libexec/ftpd/ftpusers.5 new file mode 100644 index 00000000000..3e92525b55f --- /dev/null +++ b/libexec/ftpd/ftpusers.5 @@ -0,0 +1,154 @@ +.\" $NetBSD: ftpusers.5,v 1.1 1999/12/16 01:16:04 lukem Exp $ +.\" +.\" Copyright (c) 1997-1999 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by Luke Mewburn. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. All advertising materials mentioning features or use of this software +.\" must display the following acknowledgement: +.\" This product includes software developed by the NetBSD +.\" Foundation, Inc. and its contributors. +.\" 4. Neither the name of The NetBSD Foundation nor the names of its +.\" contributors may be used to endorse or promote products derived +.\" from this software without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\" POSSIBILITY OF SUCH DAMAGE. +.\" +.\" +.Dd December 13, 1999 +.Dt FTPUSERS 5 +.Os +.Sh NAME +.Nm ftpusers +.Nd +.Xr ftpd 8 +access control file. +.Sh DESCRIPTION +The +.Nm +file provides user access control for +.Xr ftpd 8 +by defining which users may authenticate. +.Pp +If the file does not exist, all users are denied access. +.Pp +A +.Dq \e +is the escape character; it can be used to escape the meaning of the +comment character, or if it is the last character on a line, extends +a configuration directive across multiple lines. +A +.Dq # +is the comment character, and all characters from it to the end of +line are ignored (unless it is escaped with the escape character). +.Pp +The syntax of each line is: +.Dl userglob[@host] [directive [class]] +.Pp +.Sy userglob +is matched against the username, using +.Xr fnmatch 3 +glob matching. +.Pp +.Sy host +may be either a CIDR address (refer to +.Xr inet_net_pton 3 ) +to match against the remote address, +or a glob to match against the remote hostname. +.Pp +If +.Sy directive +is given, it may be one of +.Dq allow , +.Dq yes , +.Dq deny , +or +.Dq no . +If +.Sy directive +is not given, the user is denied access. +.Pp +.Sy class +defines the class to use in +.Xr ftpd.conf 8 . +If +.Sy class +is not given, it defaults to one of the following: +.Bl -tag -width "chroot" -offset indent +.It Sy chroot +If there is a match in +.Sx /etc/ftpchroot +for the user. +.It Sy guest +If the username is +.Dq anonymous +or +.Sq ftp . +.It Sy real +If neither of the above is true. +.El +.Pp +No further comparisons are attempted after the first successful match. +If no match is found, the user is granted access. +This syntax is backward-compatable with the old syntax. +.Pp +If a user requests a guest login, the ftp server checks to see that +both +.Dq anonymous +and +.Dq ftp +have access, so if you deny all users by default, you will need to add both +.Dq "anonymous allow" +and +.Dq "ftp allow" +to +.Pa /etc/ftpusers +in order to allow guest logins. +.Ss /etc/ftpchroot +The file +.Pa /etc/ftpchroot +is used to determine which users will have their session's root changed +to the user's home directory (using +.Xr chroot 2 ) . +If the file does not exist, the root change is not performed. +.Pp +The syntax is similar to +.Nm "" , +except that the +.Sy class +argument is ignored. +If there's a positive match, the root is changed. +No further comparisons are attempted after the first successful match. +This syntax is backward-compatable with the old syntax. +.Sh FILES +.Bl -tag -width /etc/ftpchroot -compact +.It Pa /etc/ftpchroot +List of normal users who should be +.Xr chroot 2 ed. +.It Pa /etc/ftpusers +This file. +.El +.Sh SEE ALSO +.Xr fnmatch 3 , +.Xr ftpd.conf 5 , +.Xr ftpd 8 |
