linux 记录用户操作
Posted 终点即起点
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 记录用户操作相关的知识,希望对你有一定的参考价值。
上面脚本在系统的/var/log/.history
下新建个
history
目录,记录所有登陆过系统的用户和IP地址(文件名),每当用户登录/退出会创建相应的文件,该文件保存这段用户登录时期内操作历史,可以用这个
vim /etc/profile.d/history.sh USER_IP=`who -u am i 2>/dev/null | awk ‘{print $NF}‘ | sed -e ‘s/[()]//g‘` HISTDIR=/var/log/.history DT=`date +%Y%m%d` LogTime=`date +%Y%m%d_%H%M%S` if [ -z $USER_IP ] then USER_IP=`hostname` fi if [ ! -d $HISTDIR ] then mkdir -p $HISTDIR chmod 777 $HISTDIR fi if [ ! -d $HISTDIR/${LOGNAME}/${DT}/ ] then mkdir -p $HISTDIR/${LOGNAME}/${DT}/ chmod 300 $HISTDIR/${LOGNAME} fi if [ ! -f $HISTDIR/${LOGNAME}/${DT}/$USER_IP ] then touch $HISTDIR/${LOGNAME}/${DT}/$USER_IP chmod 600 $HISTDIR/${LOGNAME}/${DT}/$USER_IP fi export HISTSIZE=4000 export HISTTIMEFORMAT="%T " export HISTORY_FILE="$HISTDIR/${LOGNAME}/$DT/${USER_IP}" export PROMPT_COMMAND=‘{ thisHistID=`history 1|awk "{print \$1}"`;lastCommand=`history 1| awk "{\$1="" ;print}"`;logTime=${whoStr[4]};if [ ${thisHistID}x != ${lastHistID}x ];then echo -E $lastCommand ;lastHistID=$thisHistID;fi; } >> $HISTORY_FILE‘ export HISTFILE="$HISTDIR/${LOGNAME}/$DT/${USER_IP}.${LogTime}"
还有一种方案:这个方案会在每个用户退出登录 时把用户所执行的每一个命令都发送给日志守护进程rsyslogd,你也可通过配置“/etc/rsyslog.conf”进一步将日志发送给日志服务器:
操作如下: 把下面内容添加到/etc/profile文件底部 [[email protected]-node1 ~]# vim /etc/profile.d/.history ........ #设置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 #记录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;‘
以上是关于linux 记录用户操作的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段
VSCode自定义代码片段15——git命令操作一个完整流程