【Linux】Linux下跟踪记录每个用户对主机服务器进行的操作

linux中跟踪每个用户对主机的操作,看有人之前已经写过如此shell,可直接参考,参考如下:

1.记录操作信息

这个脚本需添加至/etc/profile
脚本如下:
复制代码
# file name record1.0

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/operation ]
then
        mkdir /tmp/operation
        chmod 777 /tmp/operation
fi

if [ ! -d /tmp/operation/${LOGNAME} ]
then
        mkdir /tmp/operation/${LOGNAME}
        chmod 700 /tmp/operation/${LOGNAME}
fi

export HISTSIZE=4096

DT=`date +%Y%m%d`

# file=`find /tmp/operation/${LOGNAME}/ |awk '/'$DT'$/'`
file=/tmp/operation/${LOGNAME}/${USER_IP}-susworld.$DT
if [ -e "$file" ]
then
        export HISTFILE="/tmp/operation/${LOGNAME}/${USER_IP}-susworld.$DT.tmp"
        tmpfile=/tmp/operation/${LOGNAME}/${USER_IP}-susworld.$DT.tmp
        if [ -e "$tmpfile" ]
        then
                cat /tmp/operation/${LOGNAME}/${USER_IP}-susworld.$DT.tmp >> $file
        fi
else
        export HISTFILE="/tmp/operation/${LOGNAME}/${USER_IP}-susworld.$DT"
fi
 rm -f /tmp/operation/${LOGNAME}/${USER_IP}-susworld.$DT.tmp
chmod 600 /tmp/operation/${LOGNAME}/*susworld* 2>/dev/null
复制代码

该脚本将记录凡用户登陆后进行的任何操作,并生成对应用户当日的操作日志共日后查询。

 

2.查询操作信息

配合下面这个shell,进行查询,使用起来更加方便。

复制代码
#!/bin/sh -
# filename getrecord

user=
time=


while [ $# -gt 0 ]
do
        case $1 in
        -u|--user) user=$2
                   shift 2
                   ;;
        -t|--time) time=$2
                   shift 2
                   ;;
        -*)        echo "$0:$1 Wrong Options!" >&2
                   shift
                   exit 0
                   ;;
        --)        break
                   ;;
        *)         break
                   ;;
        esac
done


if [ -z "$user" ]
then
        user=${LOGNAME}
fi


if [ -z "$time" ]
then
        time=`date +%Y%m%d`
fi


file=`find /tmp/operation/$user/ |awk '/'$time'$/'`
cat $file
复制代码

此段shell通过接收用户及时间参数来查看某用户的历史操作记录,如:
# getrecord -u root -t 20101223     --查看root在12月23号对服务器做的记录
如果不给定参数,shell将提取当前登陆用户及当日时间来进行查询.


也可以将此shell添加到bin中,直接使用命令来查询:
# mv getrecord ~/bin
# getrecord

 

3.其他查询操作命令

参考这个

一些异常用户试图移去系统上的所有活动记录(比如 ~/.bash_history), 不过我们可以使用专门的工具来监视所有用户执行的命令. 推荐你使用进程记帐来记录用户的活动, 你可以通过进程记帐查看每一个用户执行的命令, 包括CPU时间和内存占用.

  psacct程序提供了几个进程活动监视工具: ac, lastcomm, accton和sa.

  .ac命令显示用户连接时间的统计.

  .lastcomm命令显示系统执行的命令.

  .accton命令用于打开或关闭进程记帐功能.

  .sa命令统计系统进程记帐的情况.

posted @   念槐聚  阅读(897)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示