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)」