# This sample configuration file illustrates creating two # virtual servers, and associated anonymous logins. ServerName "ProFTPD" ServerType inetd # Port 21 is the standard FTP port. Port 21 # Global creates a "global" configuration that is shared by the # main server and all virtualhosts. <Global> # Umask 022 is a good standard umask to prevent new dirs and files # from being group and world writable. Umask 022 </Global> # Set the user and group that the server normally runs at. User nobody Group nogroup # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # (such as xinetd) MaxInstances 30 # Maximum seconds a data connection may "stall" TimeoutStalled 300 # First virtual server <VirtualHost ftp.virtual.com> ServerName "Virtual.com's FTP Server" MaxClients 10 MaxLoginAttempts 1 # DeferWelcome prevents proftpd from displaying the servername # until a client has authenticated. DeferWelcome on # Limit normal user logins, because we only want to allow # guest logins. <Limit LOGIN> DenyAll </Limit> # Next, create a "guest" account (which could be used # by a customer to allow private access to their web site, etc) <Anonymous ~cust1> User cust1 Group cust1 AnonRequirePassword on <Limit LOGIN> AllowAll </Limit> HideUser root HideGroup root # A private directory that we don't want the user getting in to. <Directory logs> <Limit READ WRITE DIRS> DenyAll </Limit> </Directory> </Anonymous> </VirtualHost> # Another virtual server, this one running on our primary address, # but on port 4000. The only access is to a single anonymous login. <VirtualHost our.ip.address> ServerName "Our private FTP server" Port 4000 Umask 027 <Limit LOGIN> DenyAll </Limit> <Anonymous /usr/local/ftp/virtual/a_customer> User ftp Group ftp UserAlias anonymous ftp <Limit LOGIN> AllowAll </Limit> <Limit WRITE> DenyAll </Limit> <Directory incoming> <Limit WRITE> AllowAll </Limit> </Directory> </Anonymous> </VirtualHost>