5.6. Creating a CGI Directory for Each User
Problem
You want each user to have their own cgi-bin directory rather than giving them all access to the main server CGI directory.
Solution
Put this in your httpd.conf:
<Directory "/home/*/public_html/cgi-bin/">
Options ExecCGI
SetHandler cgi-script
</Directory>
ScriptAliasMatch "/~([^/]+)/cgi-bin/(.*)" "/home/$1/public_html/cgi-bin/$2"Discussion
You can’t use ScriptAlias in this case, because for each user, the first argument to ScriptAlias would be different. The <Directory> container and the ScriptAliasMatch directive are functionally equivalent.
This recipe lets each user put CGI scripts in her own personal Web space. Files accessed via URLs starting with:
http://www.example.com/~username/cgi-bin/are treated as CGI scripts.
If you have suexec enabled,
CGI programs run from this target directory will be run with the user
ID of the user specified in the URL. For example, a CGI program
accessed via the URL http://www.example.com/~rbowen/cgi-bin/example.cgi
would be run as the user rbowen.
Warning
Allowing users to set up their own scripts to be automatically executed without some sort of review is asking for trouble, either from malicious users (perish the thought!) or exploitable insecure scripts.
See Also
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access