この機能はSamba 3.0.20で追加されましたが、Samba 3.0.21のリリース時に大幅なパラメータの統廃合が行われたため、ここではSamba 3.0.21の新機能としてあつかいます。Samba 3.0.21以降ではいくつか設定が必要なものの、図1のようにUNIX上のログファイルをWindowsのイベントログのインターフェースを経由して参照する機能が追加されました。

図1:UNIXのログファイルをイベントログのインターフェースで参照する (画像をクリックすると別ウィンドウに拡大図を表示します)
それではMessagesというカスタムログを作成する場合を例に取り、設定方法について簡単に記載します。カスタムログを作成するには「smb.conf」で下記のようにeventlog listパラメータやadmin userssパラメータ、C$共有の設定を行う必要があります。
smb.confファイルの設定

(画像をクリックすると別ウィンドウに拡大図を表示します)
複数のカスタムログを作成する場合は「eventlog list = Messages Syslog」のようにスペースで区切って列挙してください。C$共有は存在さえしていればよく、読み取り専用、中身は空で構いません。これにより、Windows側からadmin usersで指定されたユーザやグループでアクセスすることでSambaが提供するイベントログを参照することが可能になります。
Sambaが提供するイベントログにデータを入力する際は、eventlogadmコマンドを用います。このコマンドは、下記のようなフォーマット(以下、eventlogadmフォーマット)のエントリが列挙されたテキストファイルを標準入力から読み込み、引数で指定されたカスタムログにデータを出力します。
エントリの例(Samba 3.0.21用)
TMG: 1128631322
TMW: 1128631324
EID: 0
ETP: SUCCESS
ECT: 0
RS2: 0
CRN: 0
USL: 0
SRC: WSH
SRN: SAMBA30
STR: (root) CMD ( rm -f /var/spool/cron/lastrun/cron.hourly)
DAT:
← 必ず末尾に空白行を入れること
eventlogadmフォーマットは、先頭から3文字の略語+「:」+データとなっています。詳細は以下の表1を参照してください。
略語 |
概要 |
LEN |
0に設定すること |
RS1 |
1699505740に設定すること(Samba 3.0.21には存在しない) |
RCN |
0に設定すること |
TMG |
レコードが生成された時刻を1970年1月1日0:00からの経過秒数で記載する |
TMW |
レコードが書き込まれた時刻を1970年1月1日0:00からの経過秒数で記載する |
EID |
イベントログのID |
ETP |
イベントの種類。INFO、ERROR、WARNING、AUDIT、SUCCESS、AUDIT FAILUREのいずれかを記載する |
ECT |
イベントの分類 |
RS2 |
0に設定すること |
CRN |
0に設定すること |
USL |
0に設定すること |
SRC |
イベントのソース |
SRN |
コンピュータ |
STR |
メッセージ本文。複数の文字列からなることもある |
DAT |
空に設定すること |
表1:eventlogadmフォーマット
また少なくとも筆者が検証したSamba 3.0.21cとSamba 3.0.25aでは、eventlogadmフォーマットが変更になっていました。eventlogadmフォーマットが異なっていると書き込みが失敗しますので注意してください(注1)。
※注1:
このためかSamba 3.0.25aでは上記の設定を行っても、ログファイルへの書き込みができませんでした。この問題については現在調査中です。
先述したエントリの例のような内容がrecord.txtというファイルに書き込まれている場合、下記のコマンドでイベントがMessagesというカスタムログに書き込むことができます。
# cat record.txt | eventlogadm Messages
実際にこの機能を利用する場合は、ログが生成されるたびにその内容を変換したうえ、eventlogadmコマンドに流し込む仕掛けを作る必要があるでしょう。そのようなときは、Sambaアーカイブのexamples/script/eventlogにあるparselog.plスクリプトを用いることで一般的なsyslogファイルの出力形式をeventlogadm形式に変換することが可能です。
例えば下記のように設定することで、このスクリプトを用いて/var/log/messagesファイルの内容をリアルタイムにMessagesというカスタムログに書き込み、Windows側から参照することが可能になります。
# tail -f /var/log/messages | parselog.pl | eventlogadm Messages
ただしparselog.plは動作検証用のスクリプトであり、エラー処理などはまったく入っていませんので、実際に用いる際は注意してください。
|