1. 下载对应版本的src rpm包
查看bash版本
bash --version
下载对应版本的src.rpm包
wget http://vault.centos.org/6.7/os/Source/SPackages/bash-4.1.2-33.el6.src.rpm
2. 安装bash源码rpm
yum install -y mock
useradd -s /sbin/nologin mockbuild
rpm -ivh bash-4.1.2-33.el6.src.rpm
ll /root/rpmbuild
3. 添加patch到源码
cp /usr/local/src/bash/Bash/bash-centos6-irsensor-new.patch /root/rpmbuild/SOURCES
vim SPECS/bash.spec
添加
Patch147: bash-centos6-irsensor-new.patch
%patch147 -p1 -b .history_syslog
4. 制作rpm包
yum install -y texinfo ncurses-devel
cd /root/rpmbuild
rpmbuild -ba SPECS/bash.spec
注意:以上的步骤为编译rpm的过程,编译好bash的rpm之后,其他服务器只需要从下面步骤开始做即可。
5. 安装新的bash
ll RPMS/x86_64/
rpm -ivh --force bash-4.1.2-33.el6.x86_64.rpm
6. 配置把操作命令打印到日志文件中
如果用的rsyslog
vim /etc/rsyslog.conf
添加
local1.* /var/log/bashcmd.log
重启rsyslog
/etc/init.d/rsyslog restart
如果用的syslog-ng
vim /usr/local/syslog-ng/etc/message.conf
添加
# 记录bash的命令日志
filter f_bash { facility(local1) and level(debug); };
destination d_bash { file("/var/log/bashcmd.log"); };
log { source(s_internal); filter(f_bash); destination(d_bash); };
重启syslog-ng
killall syslog-ng
/usr/local/syslog-ng/sbin/syslog-ng
7. 测试
一定退出当前登录的控制台,再重新登录随便敲几个命令,并查看日志
ls
pwd
date
tail -f /var/log/bashcmd.log
查看bash版本
bash --version
下载对应版本的src.rpm包
wget http://vault.centos.org/6.7/os/Source/SPackages/bash-4.1.2-33.el6.src.rpm
2. 安装bash源码rpm
yum install -y mock
useradd -s /sbin/nologin mockbuild
rpm -ivh bash-4.1.2-33.el6.src.rpm
ll /root/rpmbuild
3. 添加patch到源码
cp /usr/local/src/bash/Bash/bash-centos6-irsensor-new.patch /root/rpmbuild/SOURCES
vim SPECS/bash.spec
添加
Patch147: bash-centos6-irsensor-new.patch
%patch147 -p1 -b .history_syslog
4. 制作rpm包
yum install -y texinfo ncurses-devel
cd /root/rpmbuild
rpmbuild -ba SPECS/bash.spec
注意:以上的步骤为编译rpm的过程,编译好bash的rpm之后,其他服务器只需要从下面步骤开始做即可。
5. 安装新的bash
ll RPMS/x86_64/
rpm -ivh --force bash-4.1.2-33.el6.x86_64.rpm
6. 配置把操作命令打印到日志文件中
如果用的rsyslog
vim /etc/rsyslog.conf
添加
local1.* /var/log/bashcmd.log
重启rsyslog
/etc/init.d/rsyslog restart
如果用的syslog-ng
vim /usr/local/syslog-ng/etc/message.conf
添加
# 记录bash的命令日志
filter f_bash { facility(local1) and level(debug); };
destination d_bash { file("/var/log/bashcmd.log"); };
log { source(s_internal); filter(f_bash); destination(d_bash); };
重启syslog-ng
killall syslog-ng
/usr/local/syslog-ng/sbin/syslog-ng
7. 测试
一定退出当前登录的控制台,再重新登录随便敲几个命令,并查看日志
ls
pwd
date
tail -f /var/log/bashcmd.log