CGI stands for “Common Gateway Interface,” a fancy name meaning computer programs running on the web server that can be invoked from a www page at the browser. Simply uploading a cgi script will not make it work, you must set the correct permissions.
The “bin” part alludes to the binary executables that result from compiled or assembled programs. It is a bit misleading because cgi’s can also be Unix shell scripts or interpreted languages like Perl. CGI scripts need to be saved in ASCII format and uploaded to your server’s cgi-bin in ASCII or text format. This is very important.
All files on UNIX (including Linux and other UNIX variants) machines have access permissions. These tell the operating system how to deal with requests to access these files. There are three types of access:
Access types are set for three types of user group:
The web server needs to be able to read your web pages in order to be able to display them in a browser. The following permissions need to be set in order for your web site to function properly.
Warning: It is important that none of your files or folders are writable by anyone else. Any file or folder which is writable by others can be erased by them. Generally there is no problem, just be careful in how you set your permissions.
To change file or folder permissions:

Setting Permissions using Fetch for MAC:
If you have Fetch for the Mac, you have an easy way to change permissions. Goto the file you want to change the permissions on, and highlight it. Under the Remote menu, select Change Permissions. A window will pop up showing the current permissions for the file you had highlighted, as shown in the screenshot below. Click on the boxes to change permissions as needed. (Refer tothe Permission Definitions further down this page for an explanation ofsettings.
Setting Permissions Using WS_FTP for Windows:
WS_FTP accomplishes the same task as above. Just highlight the file you want to check, and right-click on it. A menu will pop up, then select CHMOD. You will see the window as shown below in the screenshot we’ve provided. Click on the appropriate settings as needed. (Refer to the Permission Definitions further down this page for an explanation of settings.