> This is a general Unix webserver issue and not specific to
> mod_perl, so I've marked your message [OT] for off-topic.
Well, workarounds are available for specific webserver environments, so I
don't believe it's an inappropriate question.
With CGI, you use the suexec mechanism to start executable programs as a
particular user. AFAIK you can't impersonate a user on unixy environments
without forking a new process. And forking a new process under mod_perl
really defeats the purpose.
Plus, because it is easy to crash or stall a server running mod_perl, each
mod_perl user really needs administrative access to his or her own web
server, including the ability to stop and start it.
One method (as people have noted) is to create a number of complete virtual
chrooted unix environments, each with its own webserver.
Another is to have pools of httpds: each pool running as a different user
and listening to a unique port; then you run a proxying front-end to direct
traffic to each user's server based on hostname or whatever. Complicated,
and (I believe) quite memory-intensive.
More info is in the guide:
http://perl.apache.org/guide/multiuser.html#ISPs_providing_mod_perl_services
In mod_perl 2.0 (when it is released) you will have the opportunity
(depending on your platform) to use the hybrid process/threading model.
Then you will have a single httpd for each user, and that httpd will be able
to handle multiple requests via multiple threads. This solution could
probably be used in an ISP, to achieve the same level of user-partitioning
that is now availble under CGI via suexec.
Michael