メールログを監視してbouncedとなったメールアドレスに対して何らかの処理を行うということをしたいのだけど、ログの解析は何とかなるとしてもそもそもメールログが読み込めない。考えてみれば当然のことで、メールログって基本的にroot権限なんですよね。そして600。
$ stat /var/log/maillog
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
このままだと不便なのでログインユーザーでメールログを読めるようにしたい。ただセキュリティ的な意味で誰でも読めるみたいなことにはしたくないので、ちょっとひねって、グループで管理することにしてみました。やってみた手順はこんな感じ。
- ログ閲覧ユーザー専用のグループを作成する
# groupadd logadmin
- ログインユーザーをログ閲覧ユーザー専用グループに追加する
# usermod -a -G logadmin vagrant
- メールログのパーミッションとグループを変更する
# chmod 640 /var/log/maillog # chgrp logadmin /var/log/maillog
- ログローテーションの設定を変更する
# vi /etc/logrotate.d/syslog create 640 root logadmin ← endscriptの直下に追加
- ログインし直して確認
こうすることでメールログファイルは所有者である「root」に閲覧と書き込みが、「logadmin」グループに所属しているユーザーには閲覧のみが認められるようになります。で、そのグループにログインユーザーを登録しておけば、ログインユーザーがメールログを読めるという寸法。
ついでにログローテーションの設定を変更して、ローテーション後に作成される新ファイルのパーミッションも変えるようにしておきます。
パーミッションを変える以上どうしたってセキュリティは下がるわけですが、変更を最低限にすることでまだマシかなあと思うのですがいかがでしょうか。ダメかな。
参考
Linuxねた帳: 一般ユーザでログを参照するsyslogのアクセス権限を変更する : What Would Jesus Do?