顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


文章 - chienwen

頁: [1] 2
1
執行 postgrey 之後,我查一下它的 socket 檔案 (/var/spool/postfix/postgrey/socket),可以看到權限是 666
代碼: [選擇]
srw-rw-rw-  1 postgrey  postgrey  0 Jan 24 09:32 socket
很直覺的,看到 o=rw,就想把它改成 660。
但是我查一下 postgrey 的執行檔程式碼 (/usr/local/sbin/postgrey),發現它特別標記要 666
代碼: [選擇]
668    # unix socket permissions should be 666
669    if($self->{server}{port}[0] =~ /^(.*)\|unix$/) {
670        chmod 0666, $1;
671    }

想請問一下:
1. socket permissions 為何要 666
2. 這樣沒有資安疑慮嗎?要怎麼改善?

2
BSD 討論版 / FreeBSD 升級 Perl 5.20 分享
« 於: 2015-01-23 10:09 »
這兩天將 Perl 5.18 升級到 5.20 (ports 標準安裝),發現一件事,檔案位置改變了:
從 /usr/bin/perl 變成 /usr/local/bin/perl
原本的 CGI 檔案,變成無法使用,而且出現 error
代碼: [選擇]
[Sun Jan 18 22:25:12 2015] [error] [client 192.168.1.111] (2)No such file or directory: exec of '/usr/local/www/index.pl' failed
[Sun Jan 18 22:25:12 2015] [error] [client 192.168.1.111] Premature end of script headers: index.pl
請修正 CGI 第一行,將 #!/usr/bin/perl 改為 #!/usr/local/bin/perl (每個 CGI 都要改,不建議)
或建立 perl 連結:(不更動 CGI,建議這樣改)
代碼: [選擇]
ln -s /usr/local/bin/perl /usr/bin/perl

3
ftp://ftp.openbsd.org/pub/OpenBSD/doc/history/pf-faq35.pdf (FreeBSD 5.X)
ftp://ftp.openbsd.org/pub/OpenBSD/doc/history/pf-faq37.pdf (FreeBSD 6.X)
ftp://ftp.openbsd.org/pub/OpenBSD/doc/history/pf-faq41.pdf (FreeBSD 8.X)
ftp://ftp.openbsd.org/pub/OpenBSD/doc/history/pf-faq45.pdf (FreeBSD 9.X)

請看章節 PF: Issues with FTP
不同版本的 PF 有點小差異,請下載相符合的版本說明。

4
Postfix 在 2.3 版之後,Postfix 支援 Sendmail 8 Milter protocol,不須介面程式,即可直接和 milter 溝通。例如在 main.cf 加上:
代碼: [選擇]
smtpd_milters = unix:/var/run/clamav/clmilter.sock
即可使用 ClamAV milter (請參考 Postfix and ClamAV on FreeBSD)。

這樣還須安裝 MailScanner/amavisd-new 嗎?

5
引用
Omitting this option should not be considered a security restriction, since symlink testing is subject to race conditions that make it circumventable.
整句話的意思,我體會出來了,意即:
「不要為了安全性而刪除這個選項,應該用符號連結檢測去減低這個風險。」

也就是說:
1. FollowSymLinks 確實會造成風險。
2. 但省略 FollowSymLinks 可能造成網頁無法執行、或降低效能。
3. 若你擔心 symlink 造成風險,應該去檢查 symlink,而不是關掉 FollowSymLinks。

註: 這個指令就可以找出 symlink 來檢查:
find /usr/local/apache/htdocs -type l -print

6
http://www.maxi-pedia.com/FollowSymLinks
這邊提到,用 mod_rewrite 是一定要打開 FollowSymLinks。

引用
FollowSymLinks must be enabled when using mod_rewrite. If FollowSymLinks is disabled together with mod_rewrite, you will encounter the 500 internal server error.

我在使用 mediawiki 的 short URL 時,用到 mod_rewrite。
http://www.mediawiki.org/wiki/Manual:Short_URL

若是一定要用 FollowSymLinks,又擔心 security,這邊建議改用 SymlinksIfOwnerMatch,副作用是造成效能減慢:
http://onlamp.com/pub/a/apache/2004/02/19/apache_ckbk.html
引用
Problem
You wish to balance the security needs associated with symbolic links with the performance impact of a solution, such as using Options SymLinksIfOwnerMatch, which causes a server slowdown.
Solution
For tightest security, use Options SymlinksIfOwnerMatch, or Options -FollowSymLinks if you seldom or never use symlinks.
For best performance, use Options FollowSymlinks.

看來電腦和人一樣,想要穿的露骨一點 (short URL),就要小心著涼!

7
引用
FollowSymLinks
    The server will follow symbolic links in this directory.

    Even though the server follows the symlink it does not change the pathname used to match against <Directory> sections.

    Note also, that this option gets ignored if set inside a <Location> section.

    Omitting this option should not be considered a security restriction, since symlink testing is subject to race conditions that make it circumventable.
( http://httpd.apache.org/docs/2.2/mod/core.html#options )

請教紅字部分的意思,是不是說「不要為了安全性而刪除這個選項」?

8
不好意思,請問一下,ip分享器可以這樣接嗎?

           |                或者            |
       IP分享器                        IP分享器
           |                            |        |
       IP分享器                      主機     另一台分享器(想說拿來做DMZ(^^"?))
           |
         主機
可以,我曾經做過。
第一個方法:
把第一個 IP分享器設為 192.168.1.1,第二個 IP 分享器設為 192.168.1.2。
第二個方法:
買不同牌子的 IP分享器:有些牌子是用 192.168.0 有些是用 192.168.1,這樣你就有兩個 class C
(印像中,好像 D 牌的是用 192.168.0 ,Z 牌的是用 192.168.1 )

這兩種方法,我都用過,不過我後來不用這些方法;我覺得改用一台 IP分享器,然後主機改用兩張網卡,這樣可以做得更好。

10
perl 要升級,要這樣升級比較好:
portupgrade -fr perl

若是 5.8 升級到 5.10,因不屬於同一個 ports (分別是 lang/perl5.8 和 lang/perl5.10)
用 portupgrade 似乎升不上去。
我自己的做法是先 pkg_delete -a ,再重練。
5.10 若是需要 suidperl,改在 make config 設定,不用再 -m "ENABLE_SUIDPERL=yes"。

11
我是自己的電腦業餘架站,平常只有一台電腦 24 小時開機。所以沒有試著用 rsync。當時會想到用隨身碟,只是擔心萬一硬碟掛了,隨身碟可以不受影響。

我目前做法買兩顆硬碟,其中一顆專作 backup。(dump, tar 註1)

我也曾經想過使用 RAID:
* Hardware RAID: 太貴..我只是業餘架站。
* Software RAID: 這些方法 註2 註3 看起來比 註1 繁雜許多。
* BIOS RAID: 在 Linux 上,己經有支援 (dmraid 註4)。在 FreeBSD 我還找不到支援方案。

12
BSD 討論版 / save-entropy 是做什麼用途?
« 於: 2007-08-05 12:50 »
謝謝 subineru 告訴我這個指令,原來不用重開機,就可以用 netstart 重新啟動網路。

不過我重新啟動網路、或是重開機之後,還是大量收到這種系統郵件:
代碼: [選擇]
: not found
: not found

我一直想不出問題在哪兒!現在我找到答案了。這跟本和網路更換 IP 無關,原來是因為我用 Windows 的文字編輯器,編輯了 crontab 檔案。Windows 的純文字檔案,是以 [CR][LF] 做行尾,Unix 只用 [LF] 做行尾。結果造成 Crontab 定時執行了很多次的
代碼: [選擇]
root@server# [CR]
[CR]: not found

因為 [CR] 看不到這個字元,所以就只看到:
代碼: [選擇]
: not found
若是在編輯 .sh 檔時,也會有同樣的情形。

從 2006 年 10 月,發現這個問題,一直到 2007 年 8 月,才找到答案! :roll:

13
我用 FreeBSD 架了一個小小的 server,上面有 mail, phpbb, wiki 等等。雖然是小小的 server,這些資料對我來說,還蠻珍貴的。
因為擔心硬碟會掛點,本來想加裝 RAID,朋友建議我說,RAID 太貴了,業餘玩家不用裝到 RAID,寫個自動備份程式,每天存到 USB 隨身碟就好。
程式還不難寫,寫個 .sh 做一些 tar, mysqldump ... 等等,交給 crontab 就 OK 了。不過發現了一個很頭大的問題,就是 FreeBSD 對於 USB Storage 存在很多 bug,目前還無解!
網路上,如此說法: ([1],[2],[3],[4])

Yes, this is a known problem, for which there is no workaround at the moment.
The reason it hasn't been fixed is because "there isn't an easy fix".

我自己測試的心得是:插入或拔掉 USB Storage 時,有時侯系統會死當,有時侯不會,不知道問題出在哪兒。camcontrol 指令,似乎還不穩定,有些廠牌的 USB Storage 可以控制,有些不行。camcontrol eject/load 太多次之後,會無法 mount!

14
代碼: [選擇]
===>  php5-5.2.1_3 has known vulnerabilities:
=> php -- multiple vulnerabilities.
   Reference: <http://www.FreeBSD.org/ports/portaudit/f5e52bf5-fc77-11db-8163-000e0c2e438a.html>
=> Please update your ports tree and try again.
*** Error code 1

Stop in /usr/ports/lang/php5.
*** Error code 1

Stop in /usr/ports/lang/php5.

不知要等多久, port  才會更新,想裝舊版的都不行!!!

15
這個主意實在太好了!讓這個版成立吧。

引用
申請通過與否以投票方式來決定. 即日起計算一個月內投票超過 20 個淨剩贊成票(讚成-反對=淨剩)就視為通過.

原來這個要投票。而且規定要先「讚」美一下,才能「成」立。

16
BSD 討論版 / save-entropy 是做什麼用途?
« 於: 2006-11-06 23:24 »
找到部分解答了。
save-entropy 是一個 .sh 檔案,加入 -x 參數,即可顯示出每一個細節。
代碼: [選擇]
# sh -x /usr/libexec/save-entropy
因為我更動了 rc.conf 檔的設定:
代碼: [選擇]
ifconfig_vr0="inet 192.168.0.101  netmask 255.255.255.0"
原本是 192.168.1.101 因為換 IP 分享器,所以改為 192.168.0.101

雖然知道原因了,但不知如何修正。
我是這樣更換 IP 的:
代碼: [選擇]
# ifconfig vr0 down
# ifconfig vr0 192.168.0.101 netmask 255.255.255.0
# ifconfig vr0 up
# route add default 192.168.0.1

 
一定非得重新開機不可嗎?

17
BSD 討論版 / save-entropy 是做什麼用途?
« 於: 2006-10-31 23:05 »
我的主機 (FreeBSD 5.3),收到大量的這種郵件,請問是代表什麼意思?
最近並沒有改什麼設定,只是按時 portupgrade -a
代碼: [選擇]
日期: Tue, 31 Oct 2006 22:55:00 +0800 (CST)
寄件者: operator@mail.my_domain (Cron Daemon)
收件者: operator@mail.my_domain
主旨: Cron <operator@mail> /usr/libexec/save-entropy
 
: not found
: not found


crontab 檔案,可以看到這些內容:
代碼: [選擇]
# Save some entropy so that /dev/random can re-seed on boot.
*/11 * * * * operator /usr/libexec/save-entropy

謝謝您。

18
BSD 討論版 / 缺libc.so.6
« 於: 2006-06-24 09:19 »
試試看這一篇的方法:
http://ohaha.ks.edu.tw/faq-0004.htm

19
網路上有一些好用的字典資料庫, 例如:

http://www.freebsd.org/cgi/pds.cgi?ports/chinese/dictd-database
http://stardict.sourceforge.net/Dictionaries_zh_TW.php

其中, 有一些正體中文的文件, 是翻譯自簡體中文.
但我發現有一些文字轉換之後, 會有錯誤.
我想把這些字典資料庫重新轉換, 更正這些錯誤.
因此, 才有這次的問題.

我是用 perl 的套件做正簡中文轉換:
代碼: [選擇]
use Encode ;
use Encode::HanConvert ;


我發件這個套件, 遇到某些字, 會轉換錯誤, 一共有 880 個中文字.
錯誤的原因是: 有些簡體中文字, 會對應兩個以上的正體中文字.

我用這 880 個中文字, 查詢教育部的辭典, 一共查出約 7000 個辭彙,
這 7000 個辭彙, 就是這個問題的比對項目.

我依據學長姊的指導, 將程式碼稍加修改如下:
代碼: [選擇]
package input ;

sub check_chinese_spell {
my $s = join( ", " , @_ ) ;

if ($s =~ /\xB6\xD7/) { # 匯彙
$s =~ s/\xB6\xD7\xB3\xF8/\xB7\x4A\xB3\xF8/g ; # 匯報 - 彙報
$s =~ s/\xB6\xD7\xBD\x73/\xB7\x4A\xBD\x73/g ; # 匯編 - 彙編
$s =~ s/\xB6\xD7\xA5\x5A/\xB7\x4A\xA5\x5A/g ; # 匯刊 - 彙刊
$s =~ s/\xB6\xD7\xB6\xB0/\xB7\x4A\xB6\xB0/g ; # 匯集 - 彙集
# ...略...
} ;
# ...略...
return $s ;
} ;

1 ;

程式的速度大為提升, 重原先的 6~7 小時, 降到只剩 55 分鐘.
 (轉換同一個 70 萬筆的字典資料庫)

至於, 學長姊提到用資料庫排序, 再 load 到記憶體的方法,
目前我還沒有什麼概念, ... 繼續研究中 ...

這個 FreeBSD port 的 source 是用 perl 去轉換的.
我為了轉換的問題, 才用心去學 perl.
(也才體會出 perl 在文件處理上的功能這麼強)
一直以為自己語法沒學好, 猛往語法鑽,
"需要的不是語法,是演算法的概念吧"
原來演算法也是這麼重要!!

20
perl 的精神之一: 就是一件事,不是只能用一種方法去做。
以這個指令來說:
代碼: [選擇]
s///
平常比對個一萬次,一百萬次,一千萬次,都感覺不出它很慢。
可是當比對49億次時 (7,000 x 700,000) 卻要花六小時。
我想,perl 應該會有更有效率的方法,只是我不會而己。

至於,是否要為這個換一台電腦?
以我目前的環境而言,我這台電腦用於架個小型網站,應該是很足夠的,
我覺得最大的瓶頸,除了人腦以外,是在於頻寬的花費,
而不是 cpu 或 ram 上面。

至於那六個小時,當然是在我睡覺的時侯完成。

21
我最近在處理一些文字轉換的工作。
我用程式去檢查錯誤。程式碼如下
代碼: [選擇]
package input ;

sub check_chinese_spell {
my $s = join( ", " , @_ ) ;
$s =~ s/\xB6\xD7\xB3\xF8/\xB7\x4A\xB3\xF8/g ; # 匯報 - 彙報
$s =~ s/\xB6\xD7\xBD\x73/\xB7\x4A\xBD\x73/g ; # 匯編 - 彙編
$s =~ s/\xB6\xD7\xA5\x5A/\xB7\x4A\xA5\x5A/g ; # 匯刊 - 彙刊
$s =~ s/\xB6\xD7\xB6\xB0/\xB7\x4A\xB6\xB0/g ; # 匯集 - 彙集
# ..... (有7000筆的比對項目)....
$s =~ s/\xB4\xE5\xA6\xE6/\xB9\x43\xA6\xE6/g ; # 游行 - 遊行
$s =~ s/\xB4\xE5\xBF\xB3/\xB9\x43\xBF\xB3/g ; # 游興 - 遊興
$s =~ s/\xB4\xE5\xBE\xC7/\xB9\x43\xBE\xC7/g ; # 游學 - 遊學
$s =~ s/\xAA\xED\xB5\xFD/\xAA\xED\xC3\xD2/g ; # 表証 - 表證
$s =~ s/\xBF\xEB\xB5\xFD/\xBF\xEB\xC3\xD2/g ; # 辨証 - 辨證
$s =~ s/\xC5\x47\xB5\xFD/\xC5\x47\xC3\xD2/g ; # 辯証 - 辯證

return $s ;
} ;

1 ;


程式碼約7000行 (7000個比對項目)
比對的資料約有 70萬筆。(每筆大約100個中文字)

在 PIII 1.6G, Ram 1.3G 的電腦下,須 6 個小時,程式才能跑完。
不知有沒有其他方法改寫程式,以加快執行速度?
謝謝您

22
程式討論版 / 請教如何使用 Encode::HanConvert
« 於: 2006-04-13 02:00 »
我找到答案了!!

http://search.cpan.org/~dankogai/Encode-2.15/Encode.pm 有提到:
perl 的字串是以 character (0 到 2**32-1) 為單位, 不是以 byte, octet (0 到 256) 為單位.
所以轉換字串之前, 須先 decode.

正確的程式碼為:
代碼: [選擇]

#!/usr/bin/perl

&test() ;

sub test {

use Encode ;
use Encode::HanConvert ;

open TXT, ">ttt.txt" ;

$w_def = "体重" ;  # utf8 simple chinese

$w_def = trad_to_big5( simp_to_trad( decode( "utf8", $w_def ) ) ) ;

print TXT "$w_def\n" ;

close (TXT) ;
}



值得一提的, 以下這兩種方法, 看似相同, 其實不同.
代碼: [選擇]

$w_def = simp_to_big5( decode( "utf8", $w_def ) ) ;     # 會轉出 big5 編碼的簡體字 (如:体)

$w_def = trad_to_big5( simp_to_trad( decode( "utf8", $w_def ) ) ) ;     # 正確轉出 "體"

23
程式討論版 / 請教如何使用 Encode::HanConvert
« 於: 2006-04-12 13:24 »
請教如何使用 Encode::HanConvert

我的系統是 FreeBSD 5.3 ; 第一次學習使用 perl + CPAN
我想把 utf8 的簡體中文, 轉成 big5 的正體中文, 但是試不成功!
請教學長們, 我錯在哪兒? 謝謝您.

我的步驟如下:

1. 安裝: Encode-2.15
下載, 並解開 http://search.cpan.org/CPAN/authors/id/D/DA/DANKOGAI/Encode-2.15.tar.gz
su 之後, 執行

perl Makefile.PL
make
make test
make install

2. 安裝: Encode-HanConvert-0.31
下載, 並解開 http://search.cpan.org/CPAN/authors/id/A/AU/AUTRIJUS/Encode-HanConvert-0.31.tar.gz

perl Makefile.PL
make
make test
make install
enc2xs -C   # optional; updates Encode.pm's on-demand loading DB

exit 離開 su.

3. 執行 perl

>perl ttt.pl
>

無錯誤訊息, 但並無法正確產生 big5 編碼的文件.

ttt.pl code 如下:
代碼: [選擇]

#!/usr/bin/perl

&test() ;

sub test {

use Encode ;
use Encode::HanConvert ;

open TXT, ">ttt.txt" ;

$w_def = "分数" ;  # utf8 simple chinese

$w_def = simp_to_big5($w_def) ;

print TXT "$w_def\n" ;

close (TXT) ;
}


產生錯誤編碼的文件, 內容如下:
代碼: [選擇]

?�?佅X

24
翻了微軟的技術支援,找到答案了!
Win98 只支援 1G ram。
修改 system.ini ,限制 Win98 只能使用 1G 的 ram。

[386Enh]
MaxPhysPage=40000

[vcache]
MaxFileCache=524288

參考以下網頁:

http://support.microsoft.com/kb/304943/en-us
http://support.microsoft.com/kb/181966/EN-US
http://support.microsoft.com/kb/253912/zh-tw
http://support.microsoft.com/?id=181862

25
我本來的電腦是 256 MB ram, ( CPU 1.6 G) 用來跑 win98, win2000, FreeBSD 都很穩定.
(使用硬碟抽取盒, 一個硬碟只裝一種 OS, 分開硬碟使用, 不用 boot manager)
今天新買了 1 GB ram, 裝上去之後 (總共 1GB256MB ram),
原來的 win2000, FreeBSD 不用更改硬碟設定, 仍然跑得很穩定.
但 win98 就是開不了機, 跳出選擇 normal mode, safe mode, DOS prompt ...等等的選單.
選擇 DOS prompt 可以順利到 C:> 出現,
但選擇 normal mode, safe mode 等, 就一直進入重開機的循環, 無法進入 windows.

請問 win98 是不是無法支援太大的 ram ?? (不只無法利用多餘的 ram, 連開機都不行)
有什麼辦法可以解決嗎?? (除了再把 ram 拔掉之外!!)

謝謝您.

26
php4-extensions 是一種 "meta-port"
意思就是把一些您常用到的 port 收集起來,做成選單而己。
事實上,當您從 meta-port 勾選 imap 選項時,程式也是呼叫 /usr/ports/mail/php4-imap/
所以,我自己是不裝 php4-extensions 的。
我覺得,跳過選單,直接用 php4-imap 安裝,在做筆記紀錄時,方便不少。
而且,能儘量少裝一個 port,感覺就多一點安全 (有點兒潔癖:))

另外,若是您用 port 安裝,當您的系統發現您有相依性的 port 未安裝時,會自動幫您安裝。
但我沒試過直接裝 php4-imap 是否會幫你呼叫 php4 安裝。
有時侯 makefile 編寫的問題,不一定會幫您呼叫,可能是回報一個錯誤訊息給您。
我想,這樣做應該節省不了多少時間吧?

http://www.freebsd.org/ports/ 您可以查詢您要安裝的程式,需要哪些 port?
這樣就不用由 meta-port 胡亂的安裝一些用不到的。
不過 freebsd 的網站,這兩個月來改版,我有點兒不習慣。
以前找得到的連結,現在都不知道放在哪兒!

27
# cd /usr/ports/mail/php4-imap/ ; make install

用 ports 裝,不會重新編譯啊!

29
BSD 討論版 / 那我現在這個怎辦呢各位大大
« 於: 2005-12-02 01:51 »
假如您是用 port 安裝的話 (FreeBSD)
# pkg_delete -a
就可以全砍光光了。

30
# pkg_info | grep perl
# pkg_delete perl_xxx (舊版本號碼;只留下一個版本的 perl)
# cvsup ..... (參數請 man cvsup)
# pkgdb -F
# portupgrade -f perl -m "ENABLE_SUIDPERL=yes" -r perl
portupgrade 說明:
1. 加上參數 -m "ENABLE_SUIDPERL=yes" 支援 openwebmail
2. 這個指令,可能會跑很久。我的電腦 1.6 G 256 M 須一天(安裝太多依賴 perl 的東東!)

頁: [1] 2