こんにちわ、cloudpack磯辺和彦です。

HistoryをSyslogに出力BashのRPMを作ってみた(CentOS6)を参考に、RHEL7でも実践した。

必要なパッケージのインストール

# yum -y install rpm-build texinfo bison ncurses-devel autoconf gettext gcc make yum-utils

bashのsrc.rpmのダウンロード

# yumdownloader --source bash
Loaded plugins: amazon-id, rhui-lb
Enabling rhui-REGION-rhel-server-releases-source repository
rhui-REGION-rhel-server-releases-source | 2.9 kB 00:00:00
rhui-REGION-rhel-server-releases-source/7Server/x86_64/primary_db | 665 kB 00:00:00
rhui-REGION-rhel-server-releases-source/7Server/x86_64/updateinfo | 74 kB 00:00:00
bash-4.2.45-5.el7.src.rpm | 6.8 MB 00:00:00

src.rpmの展開

# rpm -Uvh bash-4.2.45-5.el7.src.rpm

bash.specの編集

# cd rpmbuild/SPECS/
# vim bash.spec

# makeのCPPFLAGSに、-DSYSLOG_HISTORYを追加
make "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS -DDEFAULT_PATH_VALUE='"/usr/local/bin:/usr/bin"' -DSYSLOG_HISTORY `getconf LFS_CFLAGS`"

rpmのビルド

# rpmbuild -ba bash.spec

できた。

# cd ../RPMS/x86_64/
# ls -l
total 3708
-rw-r--r--. 1 root root 1030568 Sep  9 19:42 bash-4.2.45-5.el7.x86_64.rpm
-rw-r--r--. 1 root root 1509088 Sep  9 19:42 bash-debuginfo-4.2.45-5.el7.x86_64.rpm
-rw-r--r--. 1 root root 1253056 Sep  9 19:42 bash-doc-4.2.45-5.el7.x86_64.rpm

rpmのインストール

# rpm -Uvh bash-4.2.45-5.el7.x86_64.rpm --force

ログに出力されるかのテスト

ADドメインのユーザでログインしなおして、適当にコマンドを実行してみる。

Sep  9 19:44:47 linux1 -bash: HISTORY: PID=28661 UID=1436601105 cat /var/log/messages
Sep  9 19:44:50 linux1 -bash: HISTORY: PID=28661 UID=1436601105 exit

このbashのみインストールしたシステムでは、ユーザはシェルを変更することが出来ないので、全ての実行したコマンドがロギングされるということになる。

UIDについて

ちなみに、自動的にマッピングされるUIDは、ADユーザのsidからハッシュ化されて生成されるようだ。AD側のSIDが同じであれば、Linux側のUIDも同じになることが期待できるので、複数サーバに展開しても、UIDは同一のものが利用される。

元記事は、こちらです。
[Linux] bashの実行結果をsyslogに出力する(RHEL7)