linux下查看所有登录用户的历史操作命令
2016-07-25 16:55
639 查看
最近服务器出现各种莫名奇怪的问题,可又查不出来到底谁干的,向度娘一问,给出了下面这位大牛的解决办法,正是我所欲也!
原文地址: http://www.cnblogs.com/gaojun/archive/2013/10/24/3385885.html
在linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录,可是假如一台服务器多人登陆,一天因为某人误操作了删除了重要的数据。这时候通过查看历史记录(命令:history)是没有什么意义了(因为history只针对登录用户下执行有效,即使root用户也无法得到其它用户histotry历史)。那有没有什么办法实现通过记录登陆后的IP地址和某用户名所操作的历史记录呢?答案:有的。
通过在/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/dbasky ] then mkdir /tmp/dbasky chmod 777 /tmp/dbasky fi if [ ! -d /tmp/dbasky/${LOGNAME} ] then mkdir /tmp/dbasky/${LOGNAME} chmod 300 /tmp/dbasky/${LOGNAME} fi export HISTSIZE=4096 DT=`date "+%Y-%m-%d_%H:%M:%S"` export HISTFILE="/tmp/dbasky/${LOGNAME}/${USER_IP} dbasky.$DT" chmod 600 /tmp/dbasky/${LOGNAME}/*dbasky* 2>/dev/null
source /etc/profile 使用脚本生效
退出用户,重新登录
上面脚本在系统的/tmp新建个dbasky目录,记录所有登陆过系统的用户和IP地址(文件名),每当用户登录/退出会创建相应的文件,该文件保存这段用户登录时期内操作历史,可以用这个方法来监测系统的安全性。
通过查看文件,如下:
root@zsc6:[/tmp/dbasky/root]ls
10.1.80.47 dbasky.2013-10-24_12:53:08
root@zsc6:[/tmp/dbasky/root]cat 10.1.80.47 dbasky.2013-10-24_12:53:08
root@zsc6:[/tmp/dbasky/root]
cd /etc/
…
(命令列表)
就可以查看到在12:53:08从10.1.80.47登录的root用户操作命令历史
本人测试后的截图如下:
相关文章推荐
- linux--IT--top--笔记
- Centos 6.5 压缩-解压方法
- 【Linux全面学习】9.其他常用命令
- Linux安装xwindow图形界面
- Linux真正的优势以及学习方法
- linux下MYSQL常用命令
- linux 中的MYSQL命令汇总 适合学习linux下配置mysql的朋友
- 【CentOS】比较有用的find系列工具
- 关于linux网络基础记录
- Linux定时执行任务
- Linux -trap
- Linux内核之进程调度
- linux tc 笔记整理(traffic control)
- linux命令
- Linux 关机/重启/注销命令(7个)
- Linux下gcc编译控制动态库导出函数小结
- Ubuntu 更改文件夹及子文件夹权限
- 解决Linux动态库版本兼容问题
- Linux硬盘分区满,但没有找到占用文件
- linux 入门