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;‘

原文地址:https://www.cnblogs.com/yxy-linux/p/9552952.html

时间: 2024-10-09 03:31:32

linux 记录用户操作的相关文章

linux 记录用户操作记录日志

####################################################################################historyUSER_IP=$(who am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g')if [ "$USER_IP" = "" ];then USER_IP=`hostname`fi if [ ! -d /tmp/user_

权限管理禁止用户su - root并记录用户操作记录实验!

本文目的:整理在实验环境中配置的禁止普通用户用su - root来获取root权限的操作记录.实验还添加了history添加用户详细记录,并配置了使用script记录用户操作,和测试用户操作还原的过程. 一.修改禁止su - root权限的配置:1.修改PAM配置文件:#vi /etc/pam.d/su#%PAM-1.0auth            sufficient      pam_rootok.so# Uncomment the following line to implicitly

按时按登录IP记录Linux所有用户操作日志的方法(附脚本)

PS:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所有用户登录所操作的日志记录! 在/etc/profile配置文件的末尾加入以下脚本代码就可以实现,下面脚本是我网上找来的,原作者不知.但原脚本的时间变量有错误,不能记录时间,本人测试发现并检查修正: PS1="`whoami`@`hostname`:"'[$PWD]' history US

linux系统监控:记录用户操作轨迹,谁动过服务器

1.前言 我们在实际工作当中,都碰到过误操作.误删除.误修改过配置文件等等事件.对于没有堡垒机的公司来说,要在linux系统上深究到底谁做过配置文件的修改.做过误删除是很头疼的事情,特别是遇到删库跑路的事件,更头大了.当然你可以通过history来查看历史命令记录,如果把history记录涂抹掉了,是不是啥也看不到了,如果你想查看在某个时间段到底是谁通过vim编辑过某个文件呢? 那么,有什么办法可以看见这些操作呢,答案是一定有的,具体怎么实现呢,linux script命令正有如此强大的功能,可

MYSQL触发器记录用户操作的命令

假如有一张重要的表btb,需要几个管理员来管理 管理员:[email protected].[email protected].[email protected] 要求给表btb创建触发器: trigger触发器需求: 1.当在btb表中做insert.update.delete操作时,在btb_trace表中记录执行操作的用户.时间.操作命令. 1.当在btb表中插入新记录时,atb_bak表中会将atb表中的所有数据记录下来.保持同步备份. 2.当在btb表中删除数据前,在atb_del表中

Mysql 记录用户操作

Mysql 连接通过init_connect来初始化,官网说明: 服务器为每个连接的客户端执行的字符串.该字符串由一个或多个SQL语句组成,用分号字符分隔. 例如,默认情况下每个客户端会话都启用自动提交模式.对于较旧的服务器(在MySQL 5.5.8之前), 没有全局自动提交系统变量来指定默认情况下应禁用自动提交,但作为解决方法,init_connect可用于实现相同的效果: SET GLOBAL init_connect ='SET autocommit = 0'; 1.创建数据库及表 创建数

Linux记录用户账户的登陆时间和行为信息

??? 公司审计部门要求我们对所有的主机系统添加用户行为审计功能,记录用户账户的登陆时间和行为信息,我这边用了一个简单的方法实现以下,下面我简单介绍一下实现的方法 实施步骤: 1.创建用户行为日志存放目录/var/audit,目录赋予777权限(因为所有用户都要向这个目录写入文件) mkdir?-p?/var/audit;chmod?777?/var/audit ? ? 2.修改系统环境变量文件/etc/profile,文件新增用户登录记录信息,添加如下内容 #Add?log?user?beha

Linux记录用户shell命令

在/etc/profile中添加下面内容: export LC_ALL=C TMOUT=3600 HISTFILESIZE=2000 HISTSIZE=2000 HISTTIMEFORMAT="%Y%m%d-%H%M%S:" export HISTTIMEFORMAT export PROMPT_COMMAND='{ command=$(history 1 | { read x y; echo $y; }); logger -p local1.notice -t bash -i &qu

linux 进程审核 记录用户操作记录

1,安装psacct m –y install psacct2启动服务/etc/init.d/psacct start3,激活进程审核touch /var/log/pactaccton /var/log/pact [[email protected] ~]# ac        total      324.67[[email protected] ~]# ac -p        root                               324.25        birdman