clamavを新設サーバにインストールしているが、当初からlogwatchでタイトルのようなエラーが報告されていた。
「freshclam.logファイルが何者かによってロックされとうばい」というメッセージ。
連休に入ったので、時間を見つけて、対処してみます。
さっそく、googleで検索すると随分昔の記事が出ていました。
参考URL(http://okuma-shinkan.cocolog-nifty.com/newshinkan/2010/10/clamav-freshcla.html)
私がやってみたこと
[ore@shigizemi2 ~]$ sudo /etc/rc.d/init.d/clamd stop
[sudo] password for ore:
clamd を停止中: [ OK ]
[ore@shigizemi2 ~]$ su –
パスワード:
パスワード:
[root@shigizemi2 ~]# freshclam -v
Current working dir is /usr/local/share/clamav
Max retries == 3
ClamAV update process started at Sun Dec 23 20:03:59 2012
Using IPv6 aware code
Querying current.cvd.clamav.net
TTL: 381
Software version from DNS: 0.97.6
main.cvd version from DNS: 54
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
daily.cvd version from DNS: 16031
daily.cld is up to date (version: 16031, sigs: 399740, f-level: 63, builder: neo)
bytecode.cvd version from DNS: 209
bytecode.cld is up to date (version: 209, sigs: 40, f-level: 63, builder: neo)
Current working dir is /usr/local/share/clamav
Max retries == 3
ClamAV update process started at Sun Dec 23 20:03:59 2012
Using IPv6 aware code
Querying current.cvd.clamav.net
TTL: 381
Software version from DNS: 0.97.6
main.cvd version from DNS: 54
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
daily.cvd version from DNS: 16031
daily.cld is up to date (version: 16031, sigs: 399740, f-level: 63, builder: neo)
bytecode.cvd version from DNS: 209
bytecode.cld is up to date (version: 209, sigs: 40, f-level: 63, builder: neo)
[root@shigizemi2 ~]# freshclam ← 結果的に上記コマンドと同じ。実行しなくてもよいかも。
ClamAV update process started at Sun Dec 23 20:04:16 2012
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
daily.cld is up to date (version: 16031, sigs: 399740, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 209, sigs: 40, f-level: 63, builder: neo)
ClamAV update process started at Sun Dec 23 20:04:16 2012
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
daily.cld is up to date (version: 16031, sigs: 399740, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 209, sigs: 40, f-level: 63, builder: neo)
[root@shigizemi2 ~]# service clamd start
clamd を起動中: [ OK ]
clamd を起動中: [ OK ]
これで、しばらく様子を見てみましょう。
こんなに単純に解決したらうれしいのですが…。
やっぱり、ダメっぽいようです。
そもそも、another ってだれ?
ひょっとすると、freshclamを実行しているユーザがclamavではないとか。
freshclam.logのユーザ:グループは、clamav:clamavになっているしなぁ、permissionも
644から600にしてみたが…?
どうだろう。明日に持ち越しか。
やっぱり、そう単純ではありませんでした。
でも、freshclamで定義ファイルは更新されているので
しばらく(数カ月)放おっておきました。
しかし、clamav-milterを導入することにしたので、
そのついでに再度挑戦してみました。
毎時間ごと、crondeamonから来るエラーメールの内容は、
====================================================
/etc/cron.hourly/freshclam:
ERROR: Problem with internal logger (UpdateLogFile = /var/log/freshclam.log).
ERROR: /var/log/freshclam.log is locked by another process
====================================================
エラーメールの内容は、
「/etc/cron.houly/freshclamを実行したが、freshclam.logが誰かにロックされとうバイ」
という感じですね。
ネットで調べてもそれらしい情報はなさそうです。
そこで、crontabを開いて眺めてみました。
# vi /etc/crontab
=========================================
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
=========================================
毎時間1分後には、rootがcron.hourlyを実行しています。
私はcron.hourlyの中に、freshclamの動作スクリプトを
放り込んでいます。
じーっと眺めていて、「あれっ!」と不思議なことに気づきました。
freshclamはclamav権限で実行されるはずです。
しかし、この内容だと、root権限で実行されています。
つまり、rootでfreshclam.logに書きこもうとして、clamavじゃなかやん
と、お叱りを受けているのでは?
で、あるサイトに記載されていたcrontabの設定を真似て
下記のように追記しました。
=========================================
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
10 */1 * * * clamav /usr/local/bin/freshclam –daemon-notify –quiet -l /var/log/freshclam.log
=========================================
これは、毎時間10分後にclamav権限で、freshclamを実行し、
そのログをfreshclam.logに書き込むという意味です。
もちろん、cron.hourly内のfreshclam動作用スクリプトは削除しています。
で、1時間後エラーも出ず、freshclam.logには定義ファイルが更新された旨の
ログが記載されていました。
ふ〜、やっと解決です。