LoginSignup
6
6

More than 5 years have passed since last update.

Amazon Linux(に限りませんがRPM系)のbashをSYSLOG_HISTORYに対応させる

Last updated at Posted at 2015-04-24

背景

bashのSYSLOG_HISTORYを導入し、作業の記録をsyslogへ残しておきたいために実施します。
作業ミスなどを遡るなど、大いに有用です。

準備

環境の構築

コンパイルをするために必要なパッケージを導入します。(sudo)

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

ソースコードの入手

Amazon Linuxではget_reference_sourceでソースパッケージを取得します。CentOSなどでは yum downloader --source などかな。

get_reference_source -p bash

ソースコードの展開

作業用ユーザにてソースコードを展開します。特に指定をしていない場合、~ 以下に rpmbuild/ というディレクトリが作成されてソースコードが展開されます。

$ rpm -ivh /usr/src/srpm/debug/bash-4.1.2-15.24.amzn1.src.rpm
$ tree -d rpmbuild/
rpmbuild/
├── SOURCES
└── SPECS

パッチの適用

以下のパッチを適用します。makeの末尾に -DSYSLOG_HISTORY が追加されています。他の部分は変更の必要がありませんので、この部分のみの対応となります。

--- /home/ec2-user/rpmbuild/SPECS/bash.spec.old 2015-04-24 00:15:48.649314922 +0000
+++ /home/ec2-user/rpmbuild/SPECS/bash.spec 2015-04-24 00:16:43.845303142 +0000
@@ -165,7 +165,7 @@

 # For -fwrapv option see https://www.securecoding.cert.org/confluence/display/seccode/INT32-C.+Ensure+that+operations+on+signed+integers+do+not+result+in+overflow
 # Bash needs to be fixed.
-make "CFLAGS=$CFLAGS -fwrapv" "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS `getconf LFS_CFLAGS`"
+make "CFLAGS=$CFLAGS -fwrapv" "CPPFLAGS=-D_GNU_SOURCE -DRECYCLES_PIDS `getconf LFS_CFLAGS` -DSYSLOG_HISTORY"
 %check
 make check

構築

rpmbuildによる構築

LANG=C rpmbuild -ba ~/rpmbuild/SPECS/bash.spec

インスタンスサイズにもよりますが、しばらくするとパッケージが作成されます。

導入

作成されたパッケージを導入します。(sudo)

sudo rpm -Uvh rpmbuild/RPMS/x86_64/bash-*.rpm --force

おまけ

今後のyum updateでSYSLOG_HISTORYなしのbashで更新されないようにyum.confでbashの更新を除外対象にします。
もし脆弱性などで対処が必要な場合は自動ではできなくなるので手動で実施することになります。その際には改めてパッケージ作成から行うことで対応できます。

sudo -s
echo 'exclude=bash*' >> /etc/yum.conf
exit
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6