Apache give each user their own cgi-bin directory

by on January 19, 2006 · 2 comments· Last updated January 19, 2006

Apache has public_html directory support. With this you specify the name of the directory which is appended onto a user's home directory if a ~user request is received. For example http://domain.com/~rocky/file.html will be rocky's home directory /home/rocky/public_html/file.html. Recently I took small part time job to setup web server for university. I want to give every student access to cgi-bin so that they can use perl. I don't wanna give everyone access to /var/www/cgi-bin or /usr/lib/cgi-bin directory. ScriptAliases enables documents in the cgi-bin directory treated as applications and run by the server when requested rather than as documents sent to the client. So first I did setup ScriptAlias. However it was not working.
So all students was able to see each others perl source code :( so I was called again to fix this problem. After searching little bit, I found solution from offical Apache docs. So I modified httpd.conf and added following two directives to /home/*/public_html/cgi-bin section:

Options ExecCGI
SetHandler cgi-script

At the end final entry looked like as follows:

<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
SetHandler cgi-script
</Directory>

Then I restarted apache and it worked like a charm. See Apache document Dynamic Content with CGI. Update: As pointed out by Randal you just need to add above four lines.



You should follow me on twitter here or grab rss feed to keep track of new changes.

Featured Articles:

{ 2 comments… read them below or add one }

1 Randal L. Schwartz January 20, 2006 at 4:48 am

Doing it this way means that you can’t have ordinary files, because all executables are treated as CGI programs, and all non-executables are treated as 500 errors!

Perhaps what you should have done is created a subdirectory under each public_html called “cgi-bin”.
Then you could have added:

<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
SetHandler cgi-script
</Directory>

Reply

2 LinuxTitli January 20, 2006 at 1:10 pm

Randal,

Thanks for pointing out. Sometime this kind of small problem makes me crazy :(

Reply

Leave a Comment

You can use these HTML tags and attributes for your code and commands: <strong> <em> <ol> <li> <u> <ul> <blockquote> <pre> <a href="" title="">
What is 3 + 8 ?
Please leave these two fields as-is:
Solve the simple math so we know that you are a human and not a bot.



Previous post:

Next post: