记录每个用户的操作记录

linux系统环境下,不管是root用户还是其他的用户只有登录系统后的操作都可以通过命令history查看历史记录。

假如一台服务器有多人登录,一天因为某人误删了重要的数据

这时通过history是没有什么意义的,那有没有办法实现通过记录登录后的ip地址和登录的用户名分类记录操作的历史记录呢?

#vim /etc/profile    配置文件里添加如下代码

#PS1="`whoami`@`hostname`:"‘[$PWD]‘

history

USER_IP=`who -u am i 2>/dev/null| awk ‘{print $NF}‘|sed -e ‘s/[()]//g‘`

if [ "$USER_IP" = "" ]

then

USER_IP=`hostname`

fi

if [ ! -d /tmp/history ]

then

mkdir /tmp/history

chmod 777 /tmp/history

fi

if [ ! -d /tmp/history/${LOGNAME} ]

then

mkdir /tmp/history/${LOGNAME}

chmod 300 /tmp/history/${LOGNAME}

fi

export HISTSIZE=4096

DT=`date +"%Y%m%d_%H%M%S"`

export HISTFILE="/tmp/history/${LOGNAME}/[email protected]${USER_IP}.$DT"

chmod 600 /tmp/history/${LOGNAME}/*history* 2>/dev/null

保存并退出当前shell。

问题:添加代码后虽然不会报错,在/tmp/也能够创建/tmp/dbasky/root,但是不能在/root目录下创建相应的${USER_IP}.dbasky.$DT文件,记录该用户的操作内容。

原因:因为之前在 ~/.bash_profile文件中指定history记录文件

#vim ~/.bash_profile

HISTFILE=/root/.history_history

所以一直不能自动生成/tmp/history/${LOGNAME}/history.${USER_IP}.$DT}文件,把~/.bash_profile中的指定存储文件删除,重新进入bash后,之后的操作就会保存在指定文件中。重启系统后才能看到文件内容,具体操作。

配置重启生效后:

[[email protected]_2 ~]# ll /tmp/history/root/

总用量 28

-rw-------. 1 root root 347 9月  28 17:22 10.10.87.43 history.20150928_171814

-rw-------. 1 root root 294 9月  28 17:31 10.10.87.43 history.20150928_172409

-rw-------. 1 root root 120 9月  28 17:32 history.10.10.87.43.20150928_173114

-rw-------. 1 root root  97 9月  28 17:36 history.10.10.87.43.20150928_173542

-rw-------. 1 root root 322 9月  28 17:40 [email protected]_173824

-rw-------. 1 root root 500 9月  28 17:45 [email protected]_174222

-rw-------. 1 root root 100 9月  28 17:46 [email protected]_174537

时间: 2024-12-15 01:03:19

记录每个用户的操作记录的相关文章

Linux 记录所有用户的操作记录

随着时代的发展,我们生活中了解计算机的越来越多,黑客也越来越多:为了安全起见,我们需要记录所用户的登录及操作日志:我们需要清楚服务器上每个用户登录后都做了哪些操作,我们需要记录下每个用户的操作命令. 下面的内容设置可以实现在Linux下所有用户,不管是远程还是本地登陆,在本机的所有操作都会记录下来,并生成包含"用户/IP/时间/操作指令"的文件存放在指定位置. 1.添加以下信息到/etc/profile文件里 ################## 记录信息开始 ############

linux下监控用户的操作记录

想知道用户登陆系统后都操作了什么,怎么办? 别急,linux下有一个script工具,专门记录终端会话中所有输入输出结果,并存放到指定文件中. 先看看怎么录制吧! 1.创建日志存放目录 # mkdir /opt/operation_log # chmod 777 -R /opt/operation_log 2.设置用户登陆后自动录制 # vi /etc/profile   #末尾追加一下内容 if [ $UID -ge 500 ]; then    exec script -t 2>/opt/o

记录每个用户的操作并以邮件方式发送操作内容

#1.Mail partial configuration,set /etc/mail.rc #2.Below is the main configuration cat >>/etc/profile<<Share #Variables LAST_USER=`last -n 2 |awk 'NR==2{print $1}'` LOG_FILE_PATH="/tmp/Shared_Operation" LAST_FILE_LOG=`ls -tl ${LOG_FIL

记录Windows下文件操作记录

https://blog.csdn.net/huashuolin001/article/details/73863324 原文地址:https://www.cnblogs.com/sui84/p/12076429.html

Linux 记录所有用户登录和操作的详细日志

1.起因 最近linux服务器上一些文件呗篡改,想追查已经查不到记录了,所以得想个办法记录下所有用户的操作记录. 一般大家通常会采用history来记录,但是history有个缺陷就是默认是1000行,当然你也可以vim /etc/profile将1000修改成1000000行,但是这只是比较笼统的做法,看不到详细的用户来源已经操作记录,比如来源ip地址.操作时间.操作用户等. 所以我们不得不自己写代码来实现这样的功能. 2.自动记录脚本 编写脚本如下: history USER=`whoami

在Linux下记录所有用户的登录和操作日志

一般我们可以用history命令来查看用户的操作记录,但是这个命令不能记录是哪个用户登录操作的,也不能记录详细的操作时间,且不完整:所以误操作而造成重要的数据丢失,就很难查到是谁操作的. 在这里我们通过脚本代码来实现记录所以用户的登录操作日志: 编辑/etc/profile文件,在文件末尾加入下面代码: 首先加上一行,来记录实时的 export HISTTIMEFORMAT="%F %T `who am i|awk '{print $1}'` as `whoami` : " 实时的有缺

LINUX如何查看其他用户的操作

我们知道可以使用history命令,查看自己的操作记录,但如果你是root用户,如何查看其它用户的操作记录呢? 其实history命令只是把当前用户目录下的~/.bash_History文件内容列出来而已. 一般而言,history展示的操作记录是没有时间的,可以在/etc/bashrc文件中加入下列代码: HISTFILESIZE=2000 HISTSIZE=2000 HISTTIMEFORMAT=”%Y%m%d-%H%M%S: ” export HISTTIMEFORMAT 保存后退出,关闭

权限管理禁止用户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

SQL Server 2012设置某用户对某些表的记录限制其删除操作

第一步:用sa用户进入SSMS: 第二步:在安全性---用户上面点击右键---"属性": 第三步:在选择页中选择"安全对象",点击"搜索",弹出添加对象页面,这里默认为特定对象不用选择: 第四步:点击对象类型对话框,打开选择对象类型,选择"表": 第五步:对要进行加权限限制的表进行选择: 第六步:对所选择的表进行授权设置,点击完成即可.我这里主要是限制不可以删除,选择相应的表,勾选删除即可. SQL Server 2012设置