
Debian のすべてのログを無効にしたいわけではなく、root がいつログインし、どのくらいの時間ログインしたかを記録するログのみを無効にしたいのです。
ターミナルでコマンドを発行するとlast
、IP アドレスなどが取得されるので、これを無効にしたいです。
に行くと/var/log
、ビットマップファイルは空で、認識できない文字のような四角い記号のみがあります。重量同じです。 の内容を削除しましたauth.log
。
このタイプのログを無効にするにはどうすればいいですか?
答え1
ログのフィルタリング
内のフィルタを使用して、ログの一部を処理できると思いますrsyslog
。具体的には、 の下の構成ファイルにフィルタを追加する必要があります/etc/rsyslog.d/
。
次のようなメッセージの場合/var/log/secure
(たとえば Fedora 19 の場合):
Jun 28 13:28:18 greeneggs login: pam_unix(login:session): session opened for user saml by LOGIN(uid=0)
Jun 28 13:28:19 greeneggs login: LOGIN ON tty2 BY saml
これらを省略するには、次のようなフィルターを使用できます。
$syslogfacility-text == 'local0' かつ $msg が 'login' で始まり、($msg に 'root' が含まれる) 場合、/dev/null
注記:上記はテストされていませんが、大まかにどのようにアプローチできるかを示す例にすぎません。
wtmp と btmp のフィルタリング
これらのファイルはバイナリ ファイルなので、sed
や などの標準ツールを使用して単純に編集することはできませんawk
。本当に編集したい場合は、 からcron
定期的に編集する必要があります。ログイン時にいずれかのファイルに追加されないようにユーザーをフィルタリングする方法は見つかりませんでした。
utmp、wtmp、btmp
- utmpシステムの現在の状態、システムの起動時間 (uptime で使用)、どの端末でのユーザー ログイン、ログアウト、システム イベントなどの記録を完全に記録します。
- 重量歴史的なutmpとして機能する
- ビットマップ失敗したログイン試行を記録する
この
utmp
ファイルはテキスト ファイルではなく、特別に作成されたプログラムで編集する必要があるバイナリ形式です。ファイル内の実装とフィールドはシステムまたは libc のバージョンによって異なり、ヘッダー ファイルで定義されますutmp.h
。および
wtmp
のbtmp
形式は、ユーザー名が null の場合、関連付けられている端末のログアウトを示す点を除いて、 と とまったく同じですutmp
。さらに、ユーザー名がシャットダウンまたは再起動された端末名 ~ は、システムのシャットダウンまたは再起動を示し、端末名 / のペアは、日付によってシステム時刻が変更されたときに、古い/新しいシステム時刻をログに記録します。
これらのファイルを拡張するには、Perlモジュールを使用します。ユーザー::Utmpこれらのファイルを変更します。Python にも同様のモジュールがあります。