CGIwrap allows users to run their own CGI programs from their personal accounts. This has been incorporated into our web server to assist with the many security concerns with having a central location for all CGI programs. Normally all CGI programs must be located within the web server’s main cgi-bin directory and all run with the web server’s user ID. But with hundreds of users on the College of Engineering’s web server, this is very impractical and would open many security holes.
Instead, with CGIwrap, all of a user’s applications should be located within the user’s “U:\public_html\cgi-bin” directory and run under their own Engineering user ID. This means that any files the CGI program creates are also owned by the same user. This eliminates most of the security concerns with a centrally located cgi-bin directory. The CGIwrap method also automatically performs several security checks on the CGI application being run. The CGI application will not run if any of the security checks fail.
Follow these Instructions
- SSH into a Unix computer within the Engineering domain. You will be in your home directory once you log in
- Enter your web folder by typing
cd public_htmlIf you do not have a “public_html” directory, create one
mkdir cgi-binto create a “cgi-bin” directory within your “public_html” directory
chmod 755 cgi-binto change the folder’s permissions so that it will be accessible via the web
- Move your CGI application to the “cgi-bin” directory
- Enter into your “cgi-bin” directory by typing
chmod 755 scriptnamewhere “scriptname” is the actual name of your CGI application. This will change the permissions so that the script will run via the web
- Test your script from the command line if it is possible. Simply type
./scriptnameto see if there are any errors
Set up your form
You should now be able to use your CGI application. To access it, you will need to use the following URL in your form’s “action” attribute:
Of course you would replace “username ” with your Engineering user name and “scriptname” with the actual name of your CGI script.
If you need to debug your CGI application, replace “cgiwrap” in the URL above with “cgiwrapd” (e.g.: add a “d” to the end). This will cause the internal environmental variables associated with the script to be displayed on the browser’s window.
When you run a CGI script using CGIwrap, you are running the scrip with you as the process owner. This means that the script will have the same permissions that you do on the web server. This may lead to problems with some CGI applications that require access to certain restricted web server locations or files. Because of security concerns, we can obviously not allow this.
It is important to remember that since a CGI program is executable, it is basically the equivalent of letting the world run a program on your system. This isn’t the safest thing to do. As a result, there are some precautions that should be observed when you implement a CGI program on your site:
- Never trust anything! Never assume that you can trust the input from your form. A web form can easily be used to crack into a system. A securely written program will parse the input for these problems.
- Be careful of all files uploaded to your server via a web form. They may contain a virus or an executable “trojan horse” allowing a person to enter the system. Permissions on all uploaded files should be restrictive.
- Make sure your program invokes other Unix programs securely. A person can exploit such a program call to get access to the command line.
- Sending arbitrary input via a web form through mail can be dangerous. A knowledgeable person can include an executable program via a web mail form.
- The program should be able to recover from an error gracefully so that environmental variables are not displayed to the user within an error message.