有没有办法在LINUX上查询哪个用户从哪个IP登录什么时候执行了什么命令?

请问为什么LINUX的日志系统这么分散啊?登录是登录,历史记录是历史记录。为什么就不能添加上关联和时间和IP参数呢?想查个哪个用户从哪个IP登录的什么时候执行了什么命令都不能查?难道我学习的还不够深?大家是怎么收集和分析这些信息呢?请大牛们赐教。
今天在看安全文章的时候发现了一个解决方案,感觉非常好。能满足我的需求。

export HISTTIMEFORMAT="%F %T who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g' whoami "

参考链接

阅读 6.3k
2 个回答

在/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

转自:Linux下查看/管理当前登录用户及用户操作历史记录

新手上路,请多包涵

先看看w, who, last几个命令能不能解决你的问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题