`

用日志记录Linux用户执行的每一条命令(history)

阅读更多

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

第一种方法

 # vi /etc/profile
#设置history格式
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2>/dev/null| \
awk '{print $NF}'|sed -e 's/[()]//g'`] "
#记录shell执行的每一条命令
export PROMPT_COMMAND='\
if [ -z "$OLD_PWD" ];then
    export OLD_PWD=$PWD;
fi;
if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then
    logger -t `whoami`_shell_cmd "[$OLD_PWD]$(history 1)";
fi ;
export LAST_CMD="$(history 1)";
export OLD_PWD=$PWD;'

 

 

第二种方法

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

# vi /etc/profile
#用户登录时执行此脚本
#设置history显示格式
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2>/dev/null\
| awk '{print $NF}'|sed -e 's/[()]//g'`] "
#登录时清空当前缓存 echo "" > .bash_history

 

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

# source /etc/profile
# vi /home/user1/.bash_logout
  
#当用户退出登录时会执行此脚本
tmpfile="/tmp/`whoami`_history.tmp"
#把格式化的history记录到文件里
history > $tmpfile
 
#读取文件,一行一行把文件内容发送到给syslogd。
#不要试图用"history | logger"或"logger -f $tmpfile"来替代下面的代码,
#否则将只能记录前200行。
k=1
while read line; do
((k++))
logger -t `whoami`_shell_cmd "$line"
done < $tmpfile
rm -f $tmpfile
(如果还有其它用户需要监控,则重复第二步骤)

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

# vi /etc/rsyslog.conf
 #增加如下行,IP自己换,也可以用域名,@表示用UDP协议,@@表示用TCP协议
 *.*  @192.168.0.1
 
不足之处:
1. 不能实时记录命令并发送log
2. 要记录终端桌面下的命令需要重启。
=========

history记录日志

分享到:
评论

相关推荐

    如何让linux的 history命令显示时间记录

    如何让linux的 history命令显示时间记录如何让linux的 history命令显示时间记录

    Linux基础课件Linux系统历史命令history命令

    Linux基础课件Linux系统历史命令history命令共10页.pdf.zip

    Linux 系统history命令保存

    所有用户执行的命令实时保存在一个文件中,文件内容如下: 2016-03-01 17:34:42 ##### USER:root IP:172.16.50.146 8160 22 PS:/dev/pts/1 ppid=2037 pwd=/root #### wget ...

    Linux查看History记录加时间戳的小技巧

    Linux查看History记录加时间戳小技巧 熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如 [root@servyou_web ~]# history | more 6 ./test.sh 7 vim test.sh 8 ./test.sh 但是这里只显示了...

    history保存用户操作日志,登陆时间,防止会话退出时覆盖

    linux系统history记录保存用户操作日志,登陆时间,防止会话退出时覆盖 以下是代码: #说明: /etc/profile 中结尾添加如果下指令 #保存并执行如下使之生效:source /etc/profile #history #HISTFILESIZE:表示文件的...

    如何查看SAP用户登录日志记录

    SAP系统,默认情况下只能查看用户的上次登录记录, 但之前的登录并不会进行记录。本文介绍了如何设置审计参数文件,并利用审计日志来查看用户在某段时间内的登录情况。

    linux 之history命令用法

    汇总部分history用法,其中包括输入带时间格式history内容,以及history中保存的命令的再次调用的方法等等

    操作系统安全:history历史命名完整性配置.docx

    这时我们就需要对history进行一些配置,让它报告命令执行的具体时间。 history [选项] [历史命令保存文件] history : 打印历史命令 选项: -c : 清空历史命令 -w : 把缓存中的命令写入历史命令保存文件~/.bash_...

    shell-history, 获取用户的shell的命令历史记录.zip

    shell-history, 获取用户的shell的命令历史记录 壳历史 获取用户 shell的命令历史。安装$ npm install --save shell-history用法const shellHistory = require('shell-history'

    cmd操作命令和linux命令大全收集

    at ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机 finger username @host 查看最近有哪些用户登陆 telnet ip 端口 远和登陆服务器,默认端口为23 open ip 连接到IP(属telnet登陆后的...

    基础的Linux常用命令

    eg: history //可以显示用户过去使用的命令 17. !! 执行最近一次的命令 18. mkdir命令 eg: mkdir netseek //创建netseek这个目录 19. tar 解压命令 eg: tar -zxvf nmap-3.45.tgz //将这个解压到nmap-3.45这个...

    如何清除Linux操作系统命令的历史记录

    如何清除Linux操作系统命令的历史记录 步骤如下:  1、建立一个文件来存储常用命令,例如/root/history.txt,把常用命令当成文本写进去,每个命令占一行  2、在终端运行history -c,清除杂乱的历史记录

    The history of Linux

    GNULinux Distribution Timeline和The history of Linux两张图,清晰说明了Linux发行版本的变迁和Linux的历史

    Linux基础课件-Linux系统历史命令-history命令.pptx

    Linux操作系统基础

    linux下history(历史)命令用法详解.docx

    linux下history(历史)命令用法详解.docx

    谁动了我的主机之活用History命令.doc

    Linux系统下可通过history命令查看用户所有的历史操作记录,在安全应急响应中起着非常重要的作用,但在未进行附加配置情况下,history命令只能查看用户历史操作记录,并不能区分用户以及操作时间,不便于审计分析。

    Linux历史操作记录审计.docx

    Linux系统下可通过history命令查看用户所有的历史操作记录,在安全应急响应中起着非常重要的作用,但在未进行附加配置情况下,history命令只能查看用户历史操作记录,并不能区分用户以及操作时间,不便于审计分析。

    linux中 shell 历史命令记录功能

    在 Linux 下面可以使用 history 命令查看用户的所有历史操作,同时 shell 命令操作记录默认保存在用户目录的 .bash_history 文件中。通过这个文件可以查询 shell 命令的执行历史,有助于运维人员进行系统审计和问题...

    history命令 显示与操纵历史命令

    history命令用于显示用户以前执行过的历史命令,并且能对历史命令进行追加和删除等操作。 如果你经常使用Linux命令,那么使用history命令可以有效地提升你的效率。 语法格式: history [参数] [目录] 常用参数: ...

    企业日志分析之linux系统history收集展示.docx

    企业日志分析之linux系统history收集展示.docx

Global site tag (gtag.js) - Google Analytics