終結垃圾郵件(五) : 補充sa-stats.pl在瀏覽器執行

補充:

sa-stats.pl 的執行在FreeBSD上沒問題, 我們也都看得到執行結果; 但是我也提到為什麼把這個perl script放在/usr/local/www/apache22/cgi-bin目錄下的原因, 就是為了想從瀏覽器直接執行! 這個方式真得是很方便, 可惜的是直接在網址打http://server/cgi-bin/sa-stats.pl, 會看到下面的結果:

Time Spent Running SA: 0.00 hours
Time Spent Processing Spam: 0.00 hours
Time Spent Processing Ham: 0.00 hours

TOP SPAM RULES FIRED
----------------------------------------------------------------------
RANK RULE NAME COUNT %OFMAIL %OFSPAM %OFHAM
----------------------------------------------------------------------
----------------------------------------------------------------------

TOP HAM RULES FIRED
----------------------------------------------------------------------
RANK RULE NAME COUNT %OFMAIL %OFSPAM %OFHAM
----------------------------------------------------------------------
----------------------------------------------------------------------

奇怪! 之前在主機上執行, 不是很正常的嗎? 為什麼現在資料的部份都沒有出現呢? 原因應該是因為我們在主機上執行時都是使用root權限, 可是透過Apache瀏覽時是使用www這個使用者帳號, 所以權限不足!

解決方法可以使用setuid, 在執行這個perl script前先change root, 不過現在都建議使用sudo來做這個動作。(可以參考:http://www.real-blog.com/linux-bsd-notes/341)

先安裝sudo:

# cd /usr/ports/security/sudo
# make install clean

使用visudo指令來授予權限給www這個使用者可以執行perl script。

www ALL=NOPASSWD:/usr/local/bin/sa-stats.pl
www ALL=NOPASSWD:/usr/local/bin/spamstats.pl

另寫一個shell script, 內容如下:

#!/bin/sh

# disable filename globbing
set -f

echo "Content-type: text/plain; charset=iso-8859-1"
echo
echo

sudo /usr/local/bin/sa-stats.pl

結果是成功的! 記得, 要chmod a+x 這個script。(可以用同樣的方法來設定spamstats.pl)
如果有錯誤, 可以先看一下httpd的log。

# more /var/log/httpd-error.log

留言

這個網誌中的熱門文章

D-BUS學習筆記

Cisco Switch學習筆記: EtherChannel

Cisco Switch學習筆記: interface的封包錯誤統計