本日も乙

ただの自己満足な備忘録。

Ubuntu 20.04 LTSでsyslogに出力するBashのdebパッケージを作成する

以前に、Amazon Linux 2 で Bash のコマンド履歴を syslog に出力する方法を紹介しました。今回は Ubuntu 20.04 LTS 版です。

blog.jicoman.info

環境

  • 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