I am also somewhat of a linux newbie building a web hosting server. I am using RedHat 9. Like you, I am using ProFTPd as my FTP server. I also struggled at first with the FTP user thing. I finally figured out that you can use system users as FTP users (and POP3 mail users). I am not using any ftp.passwd file or any special FTP authentication. To create an FTP user, I simply add another UNIX system user. I use Webmin to add users as I do not know the full command line way to add users with all the options I want. So you might want to think about installing webmin if you don't have it and you want an easy way to add users and do many other things on your Linux system. Anyway, to add a user (in webmin) you just type in the username and password you want (click the "Normal Password" circle and then type the password in the box next to it). Then set their shell to /bin/false so that they cannot SSH into your machine if you have SSH daemon running. Then I set their group to "ftp" and type in or choose their home directory.
Then, to give them the right permissions, you chown their home directory and any other directory that is already under their home directroy (such as public_html) to the user that will be FTPing to that directory.
For example: Lets say you want to create a user named fredftp
with a password that you specify and the home directory of /wwwroot/fred.com and you are at the command line, you would first create the user.
useradd -s /bin/false -d /wwwroot/fred.com -g ftp fredftp -M
Then, create the password for the account:
Then, change the owner of the directory so that the user can change the permissions to anything he wants in his directory.
chown fredftp /wwwroot/fred.com
Then change permissions of the directory so that only that user will be able to change the permissions and files of that directory.
chmod 755 /wwwroot/fred.com
Now the user should be able to log in to your ftp server with the username fredftp and the password that you supply him. It should chroot him into /wwwroot/fred.com as long as you have the DefaultRoot ~ statement in your proftpd.conf file.
Here is the proftpd.conf file that I use to make this setup work:
<Limit ALL SITE_CHMOD>
Here is a small description of the above file: (courtesty of redhat.hostinghacks.net)
ServerName "yourdomain.com" - This will be visible during login.
Umask 022 - Makes new directories and files with 755 permissions which prevents them from being group and world writable. If you want group writable use: Umask 002.
<Limit ALL SITE_CHMOD> - allow chmod and overwrites.
DefaultRoot ~ - Jail users into their home directories.
RequireValidShell no - There are 2 choices for user login shells:
Set 'RequireValidShell no' in /etc/proftpd.conf
Add /bin/false to /etc/shells, in which case you don't need 'RequireValidShell no'
IdentLookups off - time/bandwidth reducing options
MaxInstances 25 - prevents dos attacks in standalone mode.
TimeoutIdle 600 - typical ftp settings
However, this setup will not allow anonymous connections.
I'm not sure what to add or take off to allow anonymous connections.
This should be all you need to run your ftp server with authenticated users.
Let me know if this helps at all.