Ubuntu Server の syslogd オプション (2)
というわけで、一件落着かと思ったらそうでもなかった。
ログファイルってだいたい定期的にローテートするもので、Ubuntu でも logrotate やらを使ってそうするようになっている。syslogd で取っているログの場合は、まず古いログファイルの名前を変更して、次に新しいファイルを作って、最後に syslogd に HUP を送るような感じになる。もちろん新しいファイルのユーザやアクセス権は、logrotate.conf で指定できるようになっている。
syslogd は起動時には root で各ログファイルを開いていて、後で -u オプションで指定されたユーザに set(e)uid するようになっている(と思う)。で、新しいログファイルが root で作られたあとで syslogd に HUP シグナルを送ったとしても、syslog ユーザに書き込めるようなアクセス権が付いてない限り、それ以後のログは記録されなくなってしまうというわけ。
ということで見事に新しいログが取れてなかったわけで、/etc/default/syslogd で「$SYSLOGD=""」となっているのはそういう理由があったようだ。
対処方法としては、$SYSLOGD から 「-u syslog」を取るか、syslogd 経由のログファイルのオーナーとアクセス権をよく検討して、logrotate.conf もそれに合わせて書きかえるというのが考えられる。、面倒なので前者でいくことにして、結局 /etc/decault/syslogd には「$SYSLOGD="-r"」だけということになる。
ということでおしまい……だといいなぁ。
No comments:
Post a Comment