mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

CentOS - Clam AntiVirus でパーミッションエラー!

[ サーバ構築 ] [ CentOS, ウイルス対策 ]

こんばんは。

当方、以前から CentOS サーバで運用しています。
ウイルス対策として “Clam AntiVirus” を導入しているのですが、いつの頃からかエラーメールが届くようになっていました。

以下、現象と原因と対策についての記録です。

0. 前提条件

  • CentOS 6.4 サーバでの作業を想定。
  • アンチウイルスソフト Clam AntiVirus がインストール済み。

1. 現象

実際に発生した現象は、サーバの cron.daily でウイルス定義ファイル更新 freshclam が起動した際に以下のようなエラーが発生し、root 宛にメールが届く。

1
2
3
/etc/cron.daily/freshclam:

ERROR: Can't create temporary directory /var/lib/clamav/clamav-9441201be3d642a23bcf27bf0a2f4fde

また、/var/log/clamav/freshclam.log に以下のようなエラーメッセージが出力される。

/var/log/clamav/freshclam.log
1
2
ERROR: Can't create temporary directory /var/lib/clamav/clamav-9441201be3d642a23bcf27bf0a2f4fde
Hint: The database directory must be writable for UID 498 or GID 499

実際、手動で freshclam コマンドを実行すると上記エラーが発生する。

2. 原因

clamav-dbyum でアップデートされると、パーミッションが clamav から clamd に変更されることが原因のようだ。

3. 対策

エラーメッセージにもあるようにパーミッションを設定する。
以下は当方の例であり、ユーザID・グループIDは環境により異なる。

1
chown -R 498:499 /var/lib/clamav

もしくは

1
chown -R clamav:clamav /var/lib/clamav

また、現時点ではエラーになっていないが、ログローテーション時にエラーにならないようにログローテーションの設定も修正しておくと良いだろう。

/etc/logrotate.d/freshclam
1
2
3
4
5
/var/log/clamav/freshclam.log {
    missingok
    notifempty
    create 644 clamav clamav  # <= "clam clam" になってたら "clamav clamav" に修正
}

4. 確認

freshclam コマンドを実行してエラーが発生しなければ OK.
また、cron.daily による毎日の起動時エラーメールが届かないことも確認する。


ちなみに、少し前まで CentOS 6.2 から 6.3, 6.4 へと順次アップグレードしてきた環境で運用していましたが、先日 CentOS 6.4 をクリーンインストールしてから今回のようなエラーに見舞われるようになっていました。(因果関係は不明)

しかし、原因と対策は判明したので、今後は慌てなくてすみます。

以上。

Comments