以前に、Amazon Linux 2 で Bash のコマンド履歴を syslog に出力する方法を紹介しました。今回は Ubuntu 20.04 LTS 版です。
環境
- GCP(GCE インスタンス)
- Ubuntu 20.04.1 LTS
- Bash 5.0.17
ソースの取得と修正
必要なパッケージをあらかじめ入れておきます。
$ sudo apt-get install dpkg-dev build-essential
$ apt-get source bash Reading package lists... Done E: You must put some 'deb-src' URIs in your sources.list
上のようなエラーがでた場合は /etc/apt/sources.list
を修正します。
$ sudo sed -i"" -e "s/# deb-src/deb-src/g" /etc/apt/sources.list
再度実行します。
$ sudo apt update $ apt-get source bash
コンフィグの修正をします。ファシリティとログレベルは適宜変更してください。
$ vim bash-5.0/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 */ +#define SYSLOG_HISTORY #if defined (SYSLOG_HISTORY) # define SYSLOG_FACILITY LOG_USER # define SYSLOG_LEVEL LOG_INFO
Bash の依存パッケージをインストールします。
$ sudo apt-get build-dep bash
ビルド
$ cd bash-5.0 && dpkg-buildpackage -b -uc
インストール
親ディレクトリに deb ファイルが生成されているため、それをインストールします。
$ cd ~/ $ sudo dpkg -i bash_5.0-6ubuntu1.1_amd64.deb
インストール後、ログインし直して、syslog を見るとコマンド履歴が残っていることを確認します。
$ sudo tail /var/log/syslog Aug 27 10:48:05 bash-build -bash[45251]: HISTORY: PID=45251 UID=1001 top Aug 27 10:48:08 bash-build -bash[45251]: HISTORY: PID=45251 UID=1001 cd Aug 27 10:48:11 bash-build -bash[45251]: HISTORY: PID=45251 UID=1001 sudo su - Aug 27 10:48:15 bash-build -bash[45268]: HISTORY: PID=45268 UID=0 tail /var/log/syslog Aug 27 10:48:18 bash-build -bash[45268]: HISTORY: PID=45268 UID=0 cd Aug 27 10:48:19 bash-build -bash[45268]: HISTORY: PID=45268 UID=0 tail /var/log/syslog Aug 27 10:48:23 bash-build -bash[45251]: HISTORY: PID=45251 UID=1001 cd Aug 27 10:48:26 bash-build -bash[45251]: HISTORY: PID=45251 UID=1001 cd /home/ Aug 27 10:48:26 bash-build -bash[45251]: HISTORY: PID=45251 UID=1001 cd Aug 27 10:48:32 bash-build -bash[45251]: HISTORY: PID=45251 UID=1001 sudo tail /var/log/syslog