本を読む

読書やコンピュータなどに関するメモ

bash 4.1はヒストリーをsyslogにも記録する

 bash 4.1はヒストリーをsyslogにも記録する、という話をBash Hackers Wikiで見たので、試してみました。現在、bash 4.1はRC1のようです。

ソースを見てみる

 bash 4.1 RC1のソースをダウンロードします。

 手動で設定するconfig-top.hファイルを見てみます。

/* Define if you want each line saved to the history list in bashhist.c:
   bash_add_history() to be sent to syslog(). */
#define SYSLOG_HISTORY
#if defined (SYSLOG_HISTORY)
#  define SYSLOG_FACILITY LOG_USER
#  define SYSLOG_LEVEL LOG_INFO
#endif

 デフォルトでSYSLOG_HISTORYが定義されて有効になっていること、facilityがLOG_USERであること、levelがLOG_INFOであることがわかります。

 ちなみに、bashhist.cの該当箇所を見ると、コマンドや変数などでの制御はなく、ビルド時の設定で一律に有効無効が決まるようです。

試してみる

 とりあえず手元にあったDebian lenny環境でビルドして動かしてみます。

$ sudo apt-get build-dep bash
$ ./configure
$ make
$ ./bash

 このbash 4.1上で適当にコマンドを打ってから、/var/log/user.logを見てみます。

Dec 25 10:45:24 debiantest1 bash: HISTORY: PID=19211 UID=1000 ls
Dec 25 10:45:38 debiantest1 bash: HISTORY: PID=19211 UID=1000 ls
Dec 25 10:45:46 debiantest1 bash: HISTORY: PID=19211 UID=1000 echo hello, work
Dec 25 10:45:55 debiantest1 bash: HISTORY: PID=19211 UID=1000 cat config-top.h

 ばっちり記録されています。

用途と問題点

 なんでこんな機能が付いているかというと、Changelogによると:

Feature requested by many, and required by some national laws

 法令遵守ってやつでしょうか。なにそれこわい。

 ディストリビューションで採用するときにはさすがにオフにするだろうと思うのですが、自分でビルドしてマルチユーザー環境で使うときには注意が必要ですね。特に、wgetとかでコマンドラインでパスワードを指定するときとか。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/689-01516039

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad