Some definitions:
htdocs: the directory where apache keeps its html files
public_html: the directory where apache keeps its html files
note both names do the same thing and are located on the computer apache is running on: the webserver.
Some distros use htdocs (bsd) others public_html (RH)
If you want to provide access from within there own homes, Im assuming there home isn't located in the same network of the server, so you got to set up an ftp (for file transfers) server. That way they can send there files over the internet.
You dont want to do samba over the internet (isnt safe), but the are some ner protocals out there safer than ftp. But wont go into details here.
Never give shell access to users. (isnt safe) unless you know what your doing.
If you want root to access everything set up an ssh server (secure shell sever, encrypted).
Root should never transfer files over the internet (isnt safe). Why not just set up a normal user which can transfer files with ftp, and then ssh (secure shell) to the server to move the files after they've been transfered. This is safer.
So the strategy would be:
Set up ftp for normal users,
Set up ssh deamon (server) for a select group of users you trust (+ root)
Set up apache to serve html pages for more than one domain (users) (http server=html server= webpage server).
Set up ftp for normal users to transfer files (+one non root user)
Difficulty:
ssh is simple to set up. download the latest ssh rpms from rpmfind.net (if your on RedHat)
rpm -ivh openssh-server-*.rpm openssh-3*.rpm openssh-clients-*.rpm
get an ssh client for windows at tucows.com (search for putty)
setup ftp:
A good ftp server seems to be proftpd. But its not
a default package for redhat. So it needs alot of configuring.
again from rpmfind.net
---------------
rpm -ivh proftpd-1.2.5*.i386.rpm
--------------
you can download mine from (uses anonymous login and normal users go directly to there home directory without seeing anything else):
-----------
wget
http://test.tinyelements.com/downloads/proftpd.conf
# Make it secure
cp proftpd.conf /etc/proftpd.conf
chmod 644 /etc/proftpd.conf
# The rpm doesn't have a start script!
wget
http://test.tinyelements.com/downloads/proftpd
chmod 755 /etc/init.d/proftpd
/sbin/chkconfig --add proftpd #add it to start at boot!
---------------
vi/ pico the things you downloaded so you can check out what its doing.
make an httpd.conf that allows for multiple domains (more than one website, an example you can download, its the NameVirtualHost part so search for that in the file to see what im doing setup for a user named eddie and one named robert, both with there own site):
wget
http://test.tinyelements.com/downloads/httpd.conf
Set up a dns server to point to the domains defined, very difficult if your not an advanced user (or for testing change the client hosts files located in /etc on linux or c:/winnt/system32/drivers/etc on windows on the client side, to map the domains eddie.mydomain.com to the ip number of the apache server) (where your internet explorer/ netscape/ konquerer is running on = client, where apache is running = server)
add web users defined in httpd.conf with the following commands:
------------------------
# set up a user with home directory and description: email
adduser robert -d /home/websites/robert.mydomain.com -c
robert@mydomain.com #one line
# make the correct directories
mkdir /home/websites/robert.mydomain.com/public_html
mkdir /home/websites/robert.mydomain.com/logs
chmod -R 750 /home/websites/robert.mydomain.com/logs #(make logfiles immutable for rest of world)
#dont allow user to shell into server
chsh robert /sbin/nologin
#finally make public_html owned by robert
chown -R robert.robert /home/websites/robert.mydomain.com/public_html
---------------------------------------
Anyways this is how ISP's do it.
hope it helps.