[Cygwin] 以 syslog-ng 取代傳統 GNU syslogd

在昨天的那篇 如何在 Cygwin 上安裝 Syslogd 中,我曾經提到一般 Unix-like 所採用的是 FSF 提供的 GNU Inetutils,也提到了這個套件的安全上疑慮。所以如果你不想把一堆 r-tools 及 tftp 這些有安全疑慮的工具一起裝進來,那麼最好改用 syslog-ng,意思就是 New Generation syslog,新一代的 syslog。

對於一些 Open source 基本教義派來說,syslog-ng 並不純粹,因為它的 2.0 版算是一套商業軟體,只是 BalaBit IT Security 這家公司釋出一個 Open source Edition 給大家免費使用,因此有很多 Linux 套件可能會因此不將它放到套件中。就算放進來,也只放進來符合 GPL 的 1.6.x 版本,而 Cygwin 就是採用這個版本。

如果你打算安裝 syslog-ng 來取代 Inetutils,要注意的是,這兩套軟體並不能同時安裝,所以你必須先把 net/inetutils 解除安裝,才能安裝 Admin/syslog-ng。一旦安裝好了,Cygwin 也是提供了一個自動把 service 裝好的工具,syslog-ng-config,也是執行它就會自動呼叫 cygrunsrv 設定好 service,該注意的地方和 Inetutils 的 syslogd 完全一樣:

$ syslog-ng-config
Creating default /etc/syslog-ng.conf file


Warning: The following function requires administrator privileges!

Do you want to install syslog-ng as service?
(Say "no" if it's already installed as service) (yes/no) yes

The service has been installed under LocalSystem account.
To start the service, call `net start syslog-ng' or `cygrunsrv -S syslog-ng'.

Check /etc/syslog-ng.conf first, if it suits your needs.

Configuration finished. Have fun!

$

裝好了後,一樣系統不會自動啟動,你可以下達以下指令確認:

$ cygrunsrv --query syslog-ng
Service             : syslog-ng
Display name        : CYGWIN syslog-ng
Current State       : Stopped
Command             : /usr/sbin/syslog-ng -F

$

可以看到目前的狀態是 Stopped。然後這時你可以先 cat /etc/syslog-ng.conf 查看一下 syslog-ng 的設定檔。你會發現它的格式和 syslogd 完全不一樣。如果你想要學習設定檔的設定方法,有幾個地方可以參考。第一個地方是你安裝好了後的 <Cygwin Root>/usr/share/doc/syslog-ng/syslog-ng.html/,你可以用 IE 或 Firefox 開啟其中的 index.html,裏面有詳盡的說明。如果你還嫌不夠,那麼請你參考 Campin dot NetSyslog-ng FAQ,裏面有豐富的資訊,豐富到令人會有驚喜的感覺。

啟動它的方法和 syslogd 完全一樣,差別只在它在「服務」對話方塊清單中的名稱是「CYGWIN syslog-ng」,而使用 cygrunsrv 指令時是使用 cygrunsrv --start syslog-ng,其餘完全相同。

syslog-ng 使用上大致和傳統的 syslogd 沒太大的差別,但是一來它是獨立的套件,所以比加了一堆令人擔心的工具的 Inetutils 令人放心。二來,如果你看過 Campin dot Net 的那個 Syslog-ng FAQ 你會發覺,syslog-ng 可以做得更多,多到令人實在心動,就剩下你得下更多的工夫,來好好把它上手了。