工作中,需要把用户执行的每一个命令都记录下来,并发送到日志服务器的需求,为此我做了一个简单的解决方案。这个方案会在每个用户退出登录 时把用户所执行的每一个命令都发送给日志守护进程rsyslogd,你也可通过配置“/etc/rsyslog.conf”进一步将日志发送给日志服务器

第一种方法

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# vi /etc/profile
#设置history格式
#记录shell执行的每一条命令
'\
    export OLD_PWD=$PWD;
fi;
fi ;
export OLD_PWD=$PWD;'

 

第二种方法

第一步:全局设置(这是一次性设置,需要root用户权限)

 

 
1
2
3
4
5
6
# vi /etc/profile
#用户登录时执行此脚本
#设置history显示格式

 

第二步:不同用户分别设置

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# source /etc/profile
# vi /home/user1/.bash_logout
#当用户退出登录时会执行此脚本
#把格式化的history记录到文件里
tmpfile
 
#读取文件,一行一行把文件内容发送到给syslogd。
#否则将只能记录前200行。
1
do
)
tmpfile
tmpfile

 

(如果还有其它用户需要监控,则重复第二步骤)

第三步:把日志发送给远程主机(可选)

 
1
2
3
# vi /etc/rsyslog.conf
#增加如下行,IP自己换,也可以用域名,@表示用UDP协议,@@表示用TCP协议
192.168.0.1

 
1
 

 

不足之处:
1. 不能实时记录命令并发送log
2. 要记录终端桌面下的命令需要重启。
=========

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-19
  • 2022-12-23
猜你喜欢
  • 2021-10-02
  • 2022-12-23
  • 2021-10-03
  • 2022-12-23
  • 2021-05-25
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案