linux

ファイルの変更を監視する。

SubversionをApacheでホスティングする場合、Subversionリポジトリのファイルオーナは、Apacheを起動しているオーナにする必要があります。
DebianやUbuntuの場合、apacheというユーザになります。
たまにコミットエラーが起こるのですが、リポジトリの一部のファイルのオーナがrootに変更されることが原因のようです。
下記のコマンドでエラーは解消しましたが、いつオーナが変更されているかはわかりませんでした。

$ sudo chown -R apache:apache [Subversionリポジトリディレクトリパス]

そこで、次にオーナが変更されたときにすぐわかるようにオーナが変わったらメールで通知するようにしました。

事前準備

ディレクトリの変更を通知するdnotifyというコマンドをインストールします。

$ sudo apt-get install dnotify 

指定したコマンドをメールで通知するシェルも準備します。

$ cat cmd-notify.sh
#! /bin/sh
$1 | /usr/bin/Mail -s "[cmd-notify.sh] $1" $USER
$

テスト

テスト用に監視するディレクトリを指定して以下のコマンドを実行します。

$ dnotify -Br [監視対象ディレクトリ: -e ~/bin/cmd-notify.sh "ls -l {}"

dnotifyは、ファイルの作成や削除、オーナの変更など監視する操作をオプションで指定します。-Bオプションは、パーミッションやオーナの変更です。-rオプションを付けるとサブディレクトリも監視対象となります。
適当にファイルのパーミッションを変更すると、次のようなメールが送信されます。

$ mail
Mail version 8.1.2 01/15/2001.  Type ? for help.
"/var/mail/xxx": 1 message 1 new
>N  1 xxx    Sun Jul 17 18:50   16/551   [cmd-notify.sh] ls -l dnoti
& 1
Message 1:
From xxx
To: xxx
Subject: [cmd-notify.sh] ls -l dnotify/tmp
Date: Sun, 17 Jul 2011 18:50:30 +0900 (JST)
From: xxx
M-eM^PM^HM-hM-(M^H 0
-rwxr-xr-x 1 apache apache 0 2011-07-17 18:08 a
& 

これで、オーナが変わったら直ぐに対処できます。
しばらく様子をみて、オーナを変更している原因も突き止めようと思います。

タイトルとURLをコピーしました