1.開放式CGI程式的環境
一般言CGI程式區的權限是管制的,CGI 程式只能由系統管理者
來存取。若一般用戶想使用CGI程式,應如何?
2.若將 CGI 程式的設計權限開放給一般用戶,一般的作法有以下三種:
(1).將 CGI 程式區某個目錄的存取權限打開。 例如以指令
chmod 1777 /www/cgi-user
將 /www/cgi-user 的存取權限設為 rwxrwxrwt ,以便讓用戶們在
此目錄內自行存放 CGI 程式。
(2).為每一位 WWW 站上的用戶開放一塊 CGI 程式區。例如在CERN httpd
程式的設定檔中加入
Exec /user1/cgi-bin/* /home/user1/WWW/cgi-bin/*
使得用戶 user1 在 /home/user1/WWW/cgi-bin 下所存放自己的CGI
程式均可被 httpd 執行。
(3).為 CGI 程式定義一個新的 MIME type,使得所有 CGI 程式不論存
放在何處均可被執行。 例如在 NCSA httpd 程式的設定檔中加入:
AddType application/x-httpd-cgi .cgi
那所有以 cgi 為副檔名的檔案不論存放在何處均可被 httpd 執行。
以上三種方式都會產生一個相同的安全問題:由於 CGI 程式一直是被
httpd所執行, 因此即使是一般用戶的CGI程式在被執行時,執行者的角
色 是 httpd的擁有者,而非 CGI程式或FORM的擁有者。
3.解決之道:
想辦法執行自己CGI程式時的身分轉為 CGI程式或FORM的擁有者.
(1) [UN]CGIWRAP :執行者的角色是 CGI程式的擁有者。
將你的 CGI 程式 放置於此 $HOME/WWW/cgi-bin 目錄下
用法:
http://www-server/cgi-bin/cgiwrap/user_id/cgi_pgm
http://www-server/cgi-bin/cgiwrap/~user_id/cgi_pgm
http://www-server/cgi-bin/cgiwrap?user=user_id&script=cgi_pgm
其中
cgiwrap : 將cgi程式執行權限轉為使用者編號user_id.
user_id : 你的使用者編號.
cgi_pgm : 你的cgi程式.
你的cgi程式cgi_pgm可用下列形式使用:
/user_id/cgi_pgm?name1=value1
/cgi-bin/cgiwrap?user=user_id&script=cgi_pgm&name1=valu1
(2) SCGI :執行者的角色是 FORM的擁有者。
用法: